Timber / TWIG for WordPress — Вопросы о некоторых основах

Например, в Древесина Документация у нас есть много примеров, таких как следующие:

{% for item in menu.items %}

{{ post.author.name }}

Теперь «вещь«а»меню«и т. д. все предопределены и нигде не определены пользователем в файлах (иначе, по моему пониманию, Timber и TWIG не имели бы большого смысла).

То, что я не понимаю, это где я могу найти список этих. В Docs of Timber есть множество примеров, затем, когда я сравниваю их с темой Timber Starter для WordPress, я вижу их несколько, которые даже не упомянуты в документации.

  1. Где я могу найти список всех доступных предметов?
  2. Какая логика стоит за этими предметами?

0

Решение

Не чувствую себя глупым, потому что вы не чувствуете! Мы все были там. У меня были те же вопросы, когда я начал с Timber. Мы пытаемся постоянно улучшать документацию, поэтому подобные вопросы помогают нам понять, что мы можем сделать лучше ».

Всякий раз, когда вы видите переменную в Twig, она может происходить из нескольких разных мест:

Переменные из глобального контекста

Существует фильтр, который большинство из нас использует, чтобы сделать переменную доступной глобально, когда вы настраиваете свой контекст через Timber::get_context(), Когда ты видишь {% for item in menu.items %}, то это, вероятно, из раздела документов о «Настройка меню глобально». Я должен признать, что мы объясняем фильтр только в этом примере, что не идеально. Но мы меняем это. В следующей версии Timber мы пытаемся лучше объяснить глобальный контекст (не забудьте прочитать только раздел о глобальном контексте, потому что часть «Шаблонные контексты» описывает функциональность, которая пока недоступна.)

Переменные из шаблона

Рассмотрим следующий пример:

$context         = Timber::get_context();
$context['post'] = new Timber\Post();

Timber::render( 'single.twig', $context );

Здесь вы настраиваете свой контекст через Timber::get_context(), Когда вы используете Timber::get_context()вы получите кучу переменных, которые имеют смысл в глобальном масштабе, но не для каждого шаблона.

$context переменная — это массив, содержащий все переменные, которые вы хотите передать в шаблон Twig, в данном случае single.twig. Когда можно добавить наши собственные переменные, как в примере выше, где мы добавляем post которые держат Timber\Post объект текущего отображаемого сообщения.

Переменные из классов Timber

В шаблоне, когда вы видите {{ post.author.name }}, затем author могут быть разные вещи:

  • Свойство Timber\Post объект, который содержит значение. Это все переменные, которые вы увидите, когда будете делать {{ dump(post) }},
  • Метод Timber\Post объект, который будет освобожден. Поначалу это может сбивать с толку, потому что в PHP вам всегда нужно добавлять фигурные скобки для вызова функции, но в Twig вам это не нужно. Когда вы звоните $post->author() в PHP вы бы использовали post.author в ветке Чтобы увидеть список всех методов, которые доступны для Timber\Post, вам нужно заглянуть в справочный раздел для Timber\Post в документах.

Так что, если бы вы написали пример {{ post.author.name }} в PHP это будет выглядеть так:

$post->author()->name()

Так author это метод Timber\Post, который возвращает Timber\User объект. Timber\User Объект имеет метод с именем name, который возвращает «понятное человеку имя пользователя».

Но! Когда вы просто смотрите на {{ post.author.name }}, это также может быть многомерный массив, который вы определили сами:

$context['post'] = array(
'author' => array(
'name' => 'Tom Riddle',
),
);

Вы не узнаете об этом, просто взглянув на него в Twig.

Переменные из синтаксиса Twig

Когда ты видишь {% for item in menu.items %}то вы перебираете переменную menu.items, Переменная menu вероятно происходит из глобального контекста ( Timber\Menu объект) и items является свойством этого объекта. item Переменная является новой переменной, которая создается для доступа к текущему элементу цикла в для цикла. В этом примере это текущий пункт меню. Вы можете выбрать любое имя для item ты хочешь.

Переменные от включает

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

{% include 'teaser.twig' with { teaser: post } %}

Возвращаясь к вашим конкретным вопросам:

  1. Где я могу найти список всех доступных предметов?
  2. Какая логика стоит за этими предметами?

Боюсь, что нет определенного списка, потому что переменная может быть очень динамичной. В основном это сочетание глобального контекста, переменных, которые вы устанавливаете из шаблона, методов и свойств из Лесоматериалы а также переменные, которые вы определяете сами в Twig.

Если у вас есть дополнительные вопросы, добавьте этот ответ в качестве комментариев, и я могу соответствующим образом обновить этот ответ.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector