Создаем простой блоговый шаблон

В G-Drive по умолчанию используются шаблоны на чистом PHP. Их обычное понимание дополняет концепция предварительно выполняемых вложенных шаблонов, при которой шаблоны некоторых блоков страницы могут выбираться динамически в зависимости от запрошенной страницы и выполняться вне контекста общего шаблона страницы. Естественно, шаблонами здесь названы не темы оформления, а их отдельные файлы, содержащие HTML- и PHP-код.

За основу создаваемого шаблона возьмем тему оформления Hyde Марка Отто. Тема содержит четыре вложенных шаблона (index.html, 404.html, которые можно назвать страницами, и _layouts/page.html, _layouts/post.html), один общий шаблон (_layouts/default.html) и два подключаемых шаблона из общего (_includes/head.html, _includes/sidebar.html). Также в теме есть файл atom.xml, который тоже можно считать общим шаблоном. Чтобы не усложнять каркас поддержкой нескольких общих шаблонов, разместим соответствующий шаблон в заголовочном файле и добавим в его конец команду exit.

Наличие только одного общего шаблона позволяет жестко не привязывать к нему вложенные шаблоны, т.е. во вложенных шаблонах не нужно указывать имя общего шаблона, как это сделано в оригинальной теме. По умолчанию в каркасе используется общий шаблон с именем mods/index.php. Будем использовать это имя, а для шаблона главной страницы во избежание конфликта имен возьмем основное имя list, т.е. шаблон будет называться mods/list.php.

Кроме имени другим важным отличием шаблона главной страницы от оригинала является использование функции excerpt вместо вывода полных текстов постов. Чтобы данная функция работала нормально, нужно в текстах постов проставить маркер <!-- m -->, разделяющий выводимые в списке начальные фрагменты постов и их продолжение, причем этот маркер не должен нарушать DOM, т.е. в начальных фрагментах не должно быть незакрытых парных тегов и т.п.

Вложенный шаблон страницы ошибки 404 тоже имеет отличное от оригинала имя, а именно mods/error.php, которое используется в каркасе по умолчанию.

Для двух других вложенных шаблонов возьмем оригинальные основные имена page и post, т.е. они будут называться mods/page.php и mods/post.php.

Аналогом конфигурационного файла _config.yml является mods/config.php. Этот файл можно разместить и в каком-нибудь подкаталоге каталога mods, например в mods/includes. Состав конфигурационных параметров соответствует оригиналу с некоторыми дополнениями (menu, relatedpostslimit, recentpostslimit и date) за исключением author.url, замененного на author.email (видимо, в оригинальной теме допущено какое-то несоответствие, т.к. в файле atom.xml используются тег email и параметр author.email). Для подключения конфигурационного файла и определения глобальной переменной $site добавьте в код каркаса следующую команду:

$site = require PATH.'config.php';

Статичные файлы шаблона размещены в каталоге docs/public (docs – корневой каталог сайта, который при необходимости можно переименовать). Образцовые тексты постов и т.п. размещены в файле site_categories.sql. Об импортировании этого файла и настройке корневого каталога можно прочитать в начале статьи «Установка G-Drive». Поле category добавлено в основную таблицу для пометки публичных постов. Для скрытых постов и других объектов сохраняйте в данном поле нулевое значение. Подробнее об этом можно прочитать в конце статьи «Блог на G-Drive» и в первом комментарии к ней.

Скачать: hyde-2.1pro.zip (суффикс «pro» означает присутствие каталога docs).

Скачать дополнение: hyde-2.1add.zip (примеры «контроллеров» и функций).

Демо: http://hyde.pageshop.ru/

Комментарии: 2

  1. Админ

    Следующий фрагмент кода – это калька с оригинального шаблона:

      <title>
    <?php if ($page['title']=='Home'): ?>
        <?= $site['title'] ?> &middot; <?= $site['tagline'] ?>
    <?php else: ?>
        <?= $page['title'] ?> &middot; <?= $site['title'] ?>
    <?php endif; ?>
    
      </title>
    

    G-Drive позволяет использовать более подходящие условия для определения главной страницы, например $px==''.

  2. Админ

    Более универсальное условие для определения ссылки на активную страницу при формировании меню: $px==$id. Это условие позволяет использовать в $site['menu'] канонические пути, например (смотрите третий пункт меню):

      'menu'=>[
        ''=>'Home',
        'about'=>'About',
        'about/me'=>'About Me',
      ]
    

Отправить комментарий

Ваш адрес E-mail не будет опубликован.