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

В 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/

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

  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. Админ

    Обновил шаблон и дополнение. Для atom.xml вместо заголовочного файла теперь используется обычный вложенный шаблон со специальным общим шаблоном. Об этом внесена поправка в статью.

  5. Админ

    Обновил шаблон и дополнение. Переменная $layout заменена на extra('layout'). Функции модели в параметре $order теперь получают не строку, а массив. Также изменено значение по умолчанию для этого параметра: по умолчанию сортировка будет выполняться по первичному ключу, т.е. по полю post, а не по полю id.

  6. Админ

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

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

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