Timber / TWIG for Wordpress - Вопросы о некоторых основах - PullRequest
0 голосов
/ 06 ноября 2018

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

{% for item in menu.items %}

{{ post.author.name }}

Теперь " item " и " menu " и т. Д. Все предопределены и нигде не определены пользователем в файлах (иначе, как я понимаю, Timber и TWIG не будут имеет большой смысл).

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

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

1 Ответ

0 голосов
/ 11 ноября 2018

Не чувствуй себя глупым, потому что ты не чувствуешь! Мы все были там. У меня были те же вопросы, когда я начал с 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 в Twig. Чтобы увидеть список всех методов, доступных для 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 - это новая переменная, которая создается для доступа к текущему элементу цикла в for loop . В этом примере это текущий пункт меню. Вы можете выбрать любое имя для item, которое вы хотите.

Переменные от include

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...