Статьи

Начните разработку WordPress с Twig: Начало работы

Теперь мы понимаем, что Twig — вместе с плагином WordPress Timber — может помочь разработчикам писать модульный код при разработке тем WordPress. При таком модульном подходе вы можете обрабатывать логику и уровень представления вашего веб-приложения отдельно. Давайте перейдем к чуть более техническому материалу: созданию шаблонов Twig, преобразованию HTML в файлы Twig и способам визуализации логики или данных с помощью шаблонов Twig.

Прежде всего, я собираюсь установить Timber — плагин WordPress, который помогает интегрировать шаблонизатор Twig с WP. Итак, давайте сделаем это.

  • Войдите в свою панель управления WordPress.
  • Перейти к плагинам> Добавить новый .
  • Ищите плагин Timber .
  • Установите и активируйте плагин.

После установки Timber вы можете начать разбивать файлы шаблона на данные и просматривать файлы.

Прежде чем мы начнем создавать шаблоны Twig, я предполагаю, что у вас есть какая-то локальная настройка WordPress. Для этого конкретного урока мои настройки:

  • Установка локального WP (я использую DesktopServer от ServerPress).
  • Плагин Timber установлен и активирован.
  • Необязательно: Любая базовая / начальная тема (я использую свою собственную, т.е. аккуратную ).

UpStatement также разработал тему «Timber Starter Theme» .

Давайте начнем. Я хочу отобразить приветственное сообщение в верхней части моей домашней страницы. Как бы я поступил без Твиг? Возможно, я бы включил HTML-код в PHP-файл и повторил приветственное сообщение, как я сделал в приведенном ниже примере кода. Мой файл index.php выглядит примерно так.

1
2
3
4
5
6
7
8
9
<?php
/**
 * Homepage
 */
get_header();
 
    <div> <?php echo «Welcome to my blog!»;
 
<?php get_footer();

Теперь домашняя страница моей локальной установки WordPress отображает приветственное сообщение прямо вверху. Вот скриншот.

Welcome message

Проблема этого подхода в том, что мы смешиваем данные / логику с представлением. Чем сложнее становится этот файл, тем сложнее его поддерживать, не говоря уже о том, чтобы понять — например, если вы добавляете цикл WordPress после этого кода с несколькими аргументами, а затем фильтруете и разбиваете на страницы после этого. Добавьте к этому, что PHP внутри HTML выглядит не очень хорошо, когда вы заканчиваете с некоторой логикой.

Чтобы сделать его более модульным, мы можем думать о нашем контенте на главной странице в виде блоков или компонентов. По умолчанию может быть два полных: сообщения от The_Loop и нумерация страниц. Поскольку теперь мы хотим добавить еще один компонент вверху, то есть приветственное сообщение, давайте создадим файл Twig для этого компонента.

Откройте новый пустой файл в редакторе и скопируйте и вставьте следующие строки кода.

1
2
3
4
<!— Welcome Template —>
<section class=»welcome_message»>
        <h2>Welcome to my website!</h2>
</section>

Создайте новую папку в корне вашей темы под названием views и сохраните этот файл с расширением .twig . Например, я сохранил файл как welcome.twig .

Timber предоставляет нам несколько полезных функций, одной из которых является функция рендеринга. Вы можете назвать это так:

1
Timber::render();

Эта функция может принимать до четырех аргументов. Поскольку это выходит за рамки данной статьи, вы можете прочитать об этом в документации по Timber . Этой функции мы можем передать имя любого файла Twig, который присутствует в папке views вашей темы.

Давайте создадим приветственное сообщение в файле index.php .

01
02
03
04
05
06
07
08
09
10
<?php
/**
 * Homepage
 */
get_header();
 
    // Timber Render.
    Timber::render( ‘welcome.twig’ );
 
get_footer();

Timber welcome.twig файл welcome.twig , загружает HTML и отображает новый измененный слой представления во внешнем интерфейсе следующим образом:

Welcome message with Twig

Функция render() принимает аргумент welcome.twig качестве аргумента, но автоматически читает этот файл, если шаблоны веток находятся в папке с именем views .

Если вы хотите использовать произвольное имя / путь для папки, вам нужно будет указать путь к этой папке. Например, я создал папку ветки в корне моей темы и добавил ее в аргумент функции рендеринга.

1
<?php Timber::render(‘twig/welcome.twig’);

Timber сначала просматривает дочернюю тему, а затем возвращается к родительской теме (аналогично логике WordPress). Официальный порядок загрузки:

  1. Пользовательские места
  2. Каталог вызова PHP-скрипта (но не темы)
  3. Детская тема
  4. Родительская тема
  5. Каталог вызова PHP скрипта (включая тему)

Пункт 2 вставлен над другими, так что если вы используете Timber в плагине, он будет использовать файлы веток в каталоге плагина.

Итак, теперь в файле index.php нет HTML, и он рендерит шаблон Twig.

Теперь давайте отправим некоторые динамические данные из index.php в файл welcome.twig и отобразим их с помощью Timber.

Чтобы отправить данные из файла PHP в файл Twig, вам нужно определить массив контекста. Функция рендеринга берет массив данных, чтобы предоставить шаблонам Twig некоторый контекст. Давайте назовем массив $context , который является ассоциативным массивом, то есть он принимает пары ключ-значение.

Давайте добавим пару ключ-значение, которая будет динамическим приветственным сообщением, которое наш PHP-файл отправит в файл Twig.

Мой файл index.php теперь выглядит так.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
<?php
/**
 * Homepage
 */
get_header();
 
    // Context array.
    $context = array();
 
    // Dynamic message.
    $var = ‘Dynamic Message’;
 
    // Dynamic data.
    $context[‘the_message’] = $var;
 
    // Render twig file with the give $context array.
    Timber::render( ‘welcome.twig’, $context );
 
get_footer();

Итак, внутри файла index.php я определил пустой массив $context в строке # 8. Затем в строке № 11 я создал переменную $var со значением 'Dynamic Message' . В строке # 14 я создал ключ the_message равный $var .

В строке № 17 я вызвал функцию рендеринга с файлом welcome.twig , но на этот раз он принимает дополнительный аргумент, то есть массив $context . Этот новый аргумент фактически содержит данные, которые Timber отправит из файла PHP в файл Twig.

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

Теперь нам нужно использовать эти данные, т.е. the_message , в файле Twig. Мы можем отобразить переменную внутри нашего шаблона Twig, поместив вокруг нее двойные скобки. Например, чтобы отобразить $ var в файле ветки, мы можем написать {{ var }} . Это именно то, что я сделал.

1
2
3
4
<!— Message Template —>
<section class=»message»>
        <h2>{{ the_message }}</h2>
</section>

Значение the_message будет напечатано внутри тегов h2. Я знаю, это так просто, и код выглядит довольно чисто.

Это оно! Сохраните код и просмотрите динамическое приветственное сообщение на внешнем интерфейсе. Вот последний скриншот.

Dynamic Message with Twig

Подводя итог, теперь вы можете использовать файл PHP для кодирования логики и предоставления данных в шаблон Twig, который содержит HTML и отображает переменные или функции Twig в двойных скобках.

Этот модульный подход может привести к созданию отдельного файла шаблона для каждого компонента в вашей теме WordPress. Подумайте о наличии компонента message.twig, который вы могли бы использовать в любом месте темы для отображения любого сообщения, которое вы хотите, любое количество раз.

Это была базовая реализация Twig с Timber. Тем не менее, в следующих двух статьях я напишу о Timber WordPress Cheatsheet, управлении изображениями с помощью Timber и создании меню без использования функции сумасшедшего бродяги.

Если у вас есть какие-либо вопросы, разместите их в комментариях ниже или обратитесь в Twitter . Вы также можете взглянуть на мой код темы в этом репозитории GitHub .