Структура каталогов темы в бетоне5

Из того, что я собираю в Интернете и частично из документов, является то, что рекомендуется следующая структура темы.

/css
/fonts
/img
/includes
/js
/default.php
/main.css
/thumbnail.png
/typography.css
/view.php

Мои вопросы:

  • Можно main.css а также typography.css проживают в /css? Мне нравится мой CSS аккуратно организован
  • Можете ли вы использовать PHP-включения, которые ссылаются на каталог в вашей теме? Например, в default.php вы можете иметь что-то вроде <?php require_once echo $this->getThemePath() . "/includes/footer.html"; ?>?
  • Есть ли echo $this->getThemePath() обратитесь к правильной папке темы при использовании файлов в подкаталогах (таких как my-theme/includes/footer.php)?

5

Решение

Короче: Вы можете структурировать свою тематическую карту в основном так, как вы хотите. За исключением default.php, view.php, description.txt и thumbnail.png. Имя и местоположение typography.css можно изменить, но я нашел только источник для версии 5.6. В версии 5.7 typography.css больше не используется, потому что wysiwyg-редактор изменился. Однако вы можете добавить собственные стили в новый WYSIWYG-редактор.

Полный ответ
Пример каталога тем:

css (css folder)
js (javascript folder)
img (or images)
elements (php files that I want to include)
view.php
default.php
thumbnail.png
description.txt

Thumbnail.png, description.txt, view.php (для отдельных страниц) и default.php должны находиться непосредственно в каталоге темы.

На карте элементов я создаю header.php и footer.php (но, если необходимо, вы можете поместить туда больше файлов, таких как sidebar.php или что-то в этом роде)
Чтобы связать с header.php и footer.php, я помещаю этот код в default.php и view.php в правильной строке:

//version 5.6 and below
$this->inc('elements/header.php');
$this->inc('elements/footer.php');

//version 5.7 and higher
$view->inc('elements/header.php');
$view->inc('elements/footer.php');

Функция inc () в concrete5 была специально создана для включения элементов, поэтому я предпочитаю использовать ее вместо обычной функции включения php. Вот пример default.php: http://pastie.org/9784547

В мои header.php и / или footer.php вы хотите добавить пользовательские CSS и JS. Для этого вы можете использовать этот код:

//version 5.6 and below
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $this->getThemePath() ?>/css/main.css" />
<?php echo '<script src="'.$this->getThemePath().'/js/concrete.js"></script>'; ?>

//version 5.7 and higher
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $view->getThemePath() ?>/css/main.css" />
<?php echo '<script src="'.$view->getThemePath().'/js/concrete.js"></script>'; ?>

Пример файла header.php: http://pastie.org/9784546

Обратите внимание, что typography.css не был добавлен в header.php.

Typography.css автоматически загружается в систему для использования в wysiwyg-редакторе. Чтобы изменить имя и местоположение typography.css, вам придется переопределить функцию getThemeEditorCSS ().
Это работает только на версии 5.6.
Как : http://concrete5tricks.com/blog/rename-or-move-typography-css

Если вы используете версию 5.7
Создайте файл page-theme.php в корневом каталоге вашей темы.
Чтобы определить пользовательские стили, добавьте в page-theme.php:

<?php
namespace Application\Theme\Your_Theme_Name;
class PageTheme extends \Concrete\Core\Page\Theme\Theme {
public function getThemeEditorClasses(){
return array(
array('title' => t('Title Thin'), 'menuClass' => 'title-thin', 'spanClass' => 'title-thin'),
array('title' => t('Title Caps Bold'), 'menuClass' => 'title-caps-bold', 'spanClass' => 'title-caps-bold'),
array('title' => t('Title Caps'), 'menuClass' => 'title-caps', 'spanClass' => 'title-caps')
);
}
}
?>

(не забудьте изменить Your_theme_Name в названии темы + очистить кеш после добавления стилей)
Источник: http://www.concrete5.org/community/forums/5-7-discussion/adding-redactor-custom-styles-in-a-theme/

2

Другие решения

Других решений пока нет …