В Эгее всё, что движок выводит «наружу», включая скрипты со всяким там аджаксом, делается через подсистему тем оформления. Однако всё сложное уже реализовано в системной теме и автоматически унаследуется из неё.
Введение и примеры
Чтобы изменить внешний вид блога, сделайте свою тему оформления. Не правьте встроенную: при обновлении движка всё системное заменяется новым, и все ваши правки пропадут.
Для добавления темы создайте новую папку внутри /themes, а в ней — theme-info.php. Посмотрите на такой же файл в одной из соседних тем и сделайте свой по аналогии. Ваша тема будет доступна для выбора в Настройке. Она будет выглядеть и вести себя точно так же, как комплектная тема «Классика», так как все файлы, которых движок не найдёт, он возьмёт из родительской темы (а по умолчанию это системная тема). Родительские файлы стилей будут использованы в любом случае, подробнее об этом — ниже.
Если ваша тема оформления должна отличаться от стандартной тем, что у неё другой фон и шрифт, то достаточно создать в ней файл styles/main.css и написать в нём
body { background: #ff0; font-family: "Times New Roman" }
Если вам не нравится стандартная иконка, изображающая комментарии, просто положите в своей теме в images/ новый comments.gif.
Если в вашей теме вам хочется изменить вёрстку у шапки, возьмите /system/theme/templates/header.tmpl.php, скопируйте в папку templates/ в своей теме и внесите нужные изменения.
Всё остальное будет автоматически унаследовано из стандартной темы.
В комплекте идут темы: Финанс, Нью-Йорк и Вотсоуэвер. Посмотрите, как они устроены. Финанс немного дополняет стили и заменяет несколько картинок. Нью-Йорк не трогает картинки, зато в нём поле поиска перенесено из верха на сайдбар. А в Вотсоуэвере сайдбара вообще нет и довольно много что перевёрнуто вверх дном. Тем не менее, количество файлов в папке темы весьма невелико.
Структура темы оформления
Каждая тема оформления — папка следующей структуры:
theme-info.php
preview.png
styles/
images/
templates/
js/
Как вы уже поняли, обязательным является только theme-info.php.
Темы лежат в папке themes/, а в /system/theme/ лежит системная тема оформления. В подпапке templates/ лежат шаблоны.
Шаблоны
Основной шаблон темы — main.tmpl.php, именно он вызывается первым. В шаблон передаётся переменная $content, представляющая собой древовидный массив со всем-всем-всем. Шаблон — это фактически ПХП-скрипт, который должен вывести в браузер что-то, имея в своём распоряжении массив $content. Это похоже на XML/XSLT, только без всей этой байды :-)
Шаблон может вызывать другие шаблоны для отображения конкретного фрагмента:
_T () — вызывает шаблон по имени.
_T_FOR () — вызывает шаблон по имени, если в массиве $content есть ключ с таким именем (очень удобно!).
_X () — вставляет дополнительный блок (не забывайте это использовать в своих шаблонах там, где это делают комплектные).
Чтобы удобно посмотреть, что передаётся в массив $content, можно использовать ?raw в конце любого адреса страницы (если мод_реврайта нет, то ? уже есть в начале адреса, следовательно нужно дописывать &raw). Тогда весь этот массив выведется в красивом виде. При этом будет использован шаблон raw.tmpl.php, то есть это просто всего лишь шаблон специальный, а не какое-то волшебство.
Стили и скрипты
В любом месте внутри шаблона можно попросить движок использовать стиль или скрипт:
_CSS () — сообщает, что понадобится стиль с указанным именем;
_JS () — то же самое про скрипт.
Передавать нужно только имя файла, без пути и расширения.
При этом стиль или скрипт вставляется не в том месте, где его вызвали, а дописывается в <head></head> в начале документа. Это удобно: указать можно ближе к тому месту, где используется, а вставится всё равно туда, куда положено.
Из-за такой умности макросов _CSS () и _JS () есть небольшая хитрость: существует специальный тег <e2:head-data />, который заменяется на вывод шаблона head.tmpl.php уже после того, как все шаблоны обработаны. Именно поэтому в main.tmpl.php написано <e2:head-data /> вместо кажущегося логичным _T ('head').
Стили составляют исключение из правила наследования, изложенного выше: если в теме есть стили с именами, соответствующими таким, которые есть в родительской, то подключаются по старшинству стили из всей иерархии шаблонов. Если такое поведение нежелательно, нужно в theme-info.php дописать с ключом reset_styles массив имён стилей, которые нужно использовать изолированно от родителей.
Тема на базе другой
По умолчанию темы основаны на системной, но если вы хотите сделать свою тему на базе другой, в theme-info.php добавьте ключ based_on с идентификатором темы в качестве значения (имеется в виду имя её папки).
Макросы
Помимо уже упомянутых специальных функций (макросов), в шаблонах используются ещё такие:
_IMGSRC () — возвращает правильный полный путь к картинке по её названию (если в этом шаблоне нету, берётся из родительского и т. д.);
_AT () — возвращает true, если дело происходит на странице по указанному адресу;
_A () — делает ссылку не ссылкой, если мы и так на этой странице;
_NUM () — склоняет слово в зависимости от числа (2 комментария, но 5 комментариев);
_DT () — преобразует дату и время из внутреннего формата e2 в человеческий;
и другие.
Как ими пользоваться — см. в стандартных шаблонах.