Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Инструкции по преобразованию Drupal Twig (tpl.php в html.twig)

05/05/2020, by maria

Этот документ использовался в течение большей части процесса преобразования Twig для Drupal 8 и может быть полезен вам также для обновления ваших собственных тем и модулей для использования движка шаблонов Twig в Drupal 8.

Примечание: вся работа с Twig теперь выполняется в очереди проблем с ядром Drupal. Используйте только sandbox преобразования Twig, чтобы найти ранее преобразованные шаблоны и функции.

Шаги для основных участников:

  • Найдите основные проблемы, чтобы публиковать и просматривать исправления.
  • Не применять патчи к sandbox
  • Не создавайте патчи для sandbox.
  • Используйте sandbox только для тестирования и / или получения ранее преобразованного кода.
  • Посмотрите это видео на YouTube для обзора этого процесса.

 

Настройка

Clone Drupal 8.0.x:

git clone -b 8.0.x http://git.drupal.org/project/drupal.git d8

Текущая рабочая версия Drupal будет установлена в папку «d8» (назовите ее как хотите)

1. Установите Drupal как обычно (используя Стандартный установочный профиль).
2. Установите все 3 параметра Twig (debugging, cache, auto_reload) на True в services.yml.

Преобразование

Тематические функции

Преобразуйте функцию темы в файл шаблона и функцию предварительной обработки:

1. Определите файл, из которого пришла ваша тема (theme.inc? Core/modules/color/?)
2. Создайте файл шаблона X.html.twig для функции вашей темы:
                     - Назовите ваш новый файл соответственно
                     - Удалите theme_ из начала вашей функции и завершите имя файла в .html.twig
                     - Преобразуйте подчеркивания («_») в дефисы («-»).
                     - Примеры:
                                * theme_link() становится link.html.twig
                                * theme_user_signature() становится user-signature.html.twig

3. Поместите ваш новый шаблон Twig в папку с шаблонами в полной теме (в sandbox):
                     - для функций, которые пришли из определенного модуля, stark/templates/comment и т. д.
                     - для функций, которые пришли из theme.inc, stark/templates/theme.inc
                     - для функций, которые пришли из form.inc, stark/templates/form.inc
4. Перейдите к документации по API Drupal 8 и найдите свою функцию.
                     - (есть ссылки на все функции в электронной таблице)
5. Добавьте докблок в стиле PHP вверху файла и оберните его в комментарии Twig {# #}
                     - Добавьте строку @file в самом верху.
                     - Скопируйте определение функции чуть ниже строки @file. Перепишите «Возвращает HTML ...» как «Реализация темы по умолчанию ...». Перепишите его, чтобы он поместился на одной строке.
                     - Добавьте строку «Доступные переменные:» (замените переменные @param)
                     - Скопируйте переменные, указанные в разделе «Параметры» в документации на api.drupal.org
                     - Удалите строку @see template_preprocess(), если она существует.
                     - Добавьте строку @see template_preprocess_THEME_HOOK().
                     - Добавьте тематическую строку @ingroup (см. Пример докблока ниже).

6. Скопируйте исходный код вашей функции под блок документа (см. Пример ниже)
7. Измените код PHP в основном на HTML и операторы печати
                   - Удалить код PHP из HTML, примеры:
                               * function whatever() {
                               * // …
                               * return $output; }
                   - Удалите операторы печати PHP и замените их {{}}
                               * Преобразуйте $variables в простые имена: $variable['title'] становится {{title}}
                               * Замените синтаксис массива точечным синтаксисом: $variable['page'] ['tabs'] становится {{page.tabs}}
                   - Удалите логику PHP и замените синтаксисом ветки {%%}.
                               * <?php foreach $items as $item?> становится {% for item in items%}
                   - Замените комментарии PHP на комментарии синтаксиса веток: {# #}
                   - Замените функции t() вокруг литералов на фильтр t: {{ 'text in quotes'|t }}
                   - Переместите всю логику PHP для переменных в функцию предварительной обработки. (инструкции по предварительной обработке см. ниже.)
8. Если при этом вы заметите вещи, которые хотите улучшить, например, объедините, казалось бы, избыточные шаблоны в один или улучшите разметку или имена переменных, отметьте это в этой электронной таблице или создайте проблему в нашей песочнице. Например: http://drupal.org/node/180591

Преобразование или объединение в функции предварительной обработки

ПРИМЕЧАНИЕ:

  • Функции предварительной обработки заменят все функции темы.
  • Если в вашем файле шаблона есть логика PHP, которая влияет на печатаемые переменные, этот код необходимо будет перенести в функцию предварительной обработки.
  • Если ваш шаблон начинался как функция темы, функцию темы нужно будет преобразовать в функцию предварительной обработки.
  • В случае, если некоторые функции темы уже имеют связанные функции предварительной обработки, код обработки переменных в этих функциях темы необходимо переместить в предварительную обработку.
  • Не добавляйте строку в вашу реализацию hook_theme, говорящую Drupal, использовать файл шаблона вместо функции темы.

 

ИНСТРУКЦИИ:

  • Переименуйте theme_YOURFUNCTION в template_preprocess_YOURFUNCTION.
  • Передайте $variables по ссылке, добавив амперсанд. то есть theme_select($variable) становится template_preprocess_select(&$variable).
  • Отредактируйте функцию для обработки только логики обработки переменных; Удалите любую разметку (т. е. $Output).

Если в ваших шаблонах веток отсутствуют функции ...

Если вам нужен доступ к фильтру или функции в шаблоне Twig, который еще не работает, добавьте его в этот открытый выпуск. Имейте в виду, что большинство функций PHP или Drupal следует переместить в функции предварительной обработки. Только если вы думаете, что разработчику темы понадобится доступ к этой функции, она должна остаться в шаблоне.

ПРОСТОЙ ПРИМЕР ПРЕОБРАЗОВАНИЯ (theme_link)

PHP-код

function theme_link($variables) { return '' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . ''; } 

Шаблон Twig (имя файла: link.html.twig)

{# /** * @file * Default theme implementation to display a link. * * Available variables: * - text: The link text for the anchor tag. * - url: The complete URL being linked to, such as * "/node/34" or "http://example.com/foo". * - attributes: Remaining HTML attributes for the containing element. * * @see template_preprocess_link() * * @ingroup themeable */ #} <a href="{{ url }}" class="{{ attributes.class }}"{{ attributes }}>{{ text }}</a> 

Изменения в system.module (функция предварительной обработки)

/** * Prepares variables for link templates. * * Default template: link.html.twig. * * @param array $variables * An associative array containing: * - text: The translated link text for the anchor tag. * - path: The internal path or external URL being linked to. * - options: An associative array of additional options. */ function template_preprocess_link(&$variables) { $variables['url'] = url($variables['path'], $variables['options']); } 

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

Андрей Поданенко: http://drupal.org/node/1783130 Как переименовывать переменные
jen: Добавьте свои собственные открывающие и закрывающие маркеры комментариев Twig {# и #}.
jen: следуйте за маркерами комментариев веток со стандартными doxygen-маркерами PHP для doxygen.
jen: скопируйте и вставьте это определение из api.drupal.org
Джеймс Уилсон: Если при копировании определения из * функции * следует переписать «Возвращает HTML ...» как «Реализация темы по умолчанию»
jen: скопируйте и вставьте «Параметры» из api.drupal.org
Джеймс Уилсон: Удалите знак доллара из имен переменных, если вам нужно сослаться на другую переменную из блока doc, используйте одинарные кавычки вокруг переменной. [См. Обсуждение политики здесь http://drupal.org/node/1804710]
jen: вы «печатаете» переменные в ветке с синтаксисом {{}}
jen: атрибуты «сверлятся», так что вы можете ссылаться на такие классы
jen: Большинство функций, таких как url (), следует удалить из файла шаблона и вместо этого добавить в препроцесс.

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.