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

В 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, который тоже можно считать общим шаблоном. Оформим его в виде вложенного шаблона и укажем в нем общий шаблон с именем mods/content.php, который содержит только команду вывода результата обработки вложенного шаблона.

В других вложенных шаблонах не нужно указывать имя общего шаблона, как это сделано в оригинальной теме. По умолчанию в каркасе используется общий шаблон с именем mods/index.php. Будем использовать это имя, а для шаблона главной страницы во избежание конфликта имен возьмем основное имя posts, т.е. шаблон будет называться mods/posts.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.zip (контроллеры и вспомогательные функции).

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

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

  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 == $pathx. Это условие позволяет использовать в $site['menu'] канонические пути, например (смотрите третий пункт меню):

    'menu' => [
        '' => 'Home',
        'about' => 'About',
        'about/me' => 'About Me',
    ]
    
  3. Админ

    Обновил шаблон с учетом замечаний в двух предыдущих комментариях (изменения коснулись только файлов из каталога mods/includes).

    Также обновил дополнение (обновлены контроллеры, добавлена модель).

  4. Админ

    Обновил шаблон и дополнение. Расширена функциональность pagelink. В конец конфигурационного параметра url добавлен слэш. Теперь это значение используется в качестве базового URL для адресов в atom.xml (ранее использовался разделитель слэш между значением этого параметра и pathx). Добавлен конфигурационный параметр defcat со значением post (в трех шаблонах со ссылками на страницы постов идентификатор коллекции постов изменен на post).

  5. Админ

    Обновил дополнение (изменения коснулись только контроллеров, но не файлов из каталога mods/include). Для его корректной работы теперь требуется G Drive Pi.

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

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