Добрый день.
Изучаю темизацию Drupal 8. Не получается выполнить 2-е задачи:
1. Передать значение переменных из одного блока в другой.
Создал файл myname.theme
<?php
function remont_theme(&$vars){
return [
'page_title' => [
'variables' => [
'new_title' => null
]
],
'node__services' => [
'variables' => []
]
];
}
function
remont_preprocess_page_title(&$vars){
$vars['new_title'] = $vars['title'];
kint($vars);
}
function
remont_preprocess_node__services(&$vars){
//kint($vars);
$myname = $vars['new_title'];
}
?>
Вопрос почему если массив, как я понял, глобальный $variables. В приведенном коде выше переменная "new_title" виден в preprocess_page_title и не виден в preprocess_node__services?
Примечание: не пишите, что в node.html.twig есть переменная {{ node.label }}, я это знаю мне надо понять сам принцип, как передать значения из одной ноды в другую?
В приведенном выше коде, мне Drupal выводит Notice: Undefined index: new_title in remont_preprocess_node__services()
2. Задача похожа на предыдущую.
Как вставить пользовательский блок или блок-view вставить в любое места шаблона с помощью созданной переменной? Ниже приведен стандартный код node.html.twig, я хочу в него вставить свой блок. Вопрос не как вставить данные в шаблон node.html.twig, а как с помощью собственной переменной {{ this_is_my_block }} вставить любой блок в любой другой шаблон? Мне надо найти сам принцип встраивания своих блоков или блоков-view в шаблоны twig.
{{ title_prefix }}
{% if not page %}
<h2{{ title_attributes }}>
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
</h2>
{% endif %}
{{ title_suffix }}
{% if display_submitted %}
<footer>
{{ author_picture }}
<div{{ author_attributes }}>
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
{{ metadata }}
</div>
</footer>
{% endif %}
<div{{ content_attributes }}>
{{ content }}
</div>
{# сюда я хочу вставить созданный блок, с его шаблоном, создав переменную #}
{{ this_is_my_block }}
</article>
Комментарии
1. Зачем? Какая изначальная задача?
2. Почему бы не использовать возможности регионов и вставки в них блоков через админку?
Вот конкретная задача, которую я решал через одно место https://monosnap.com/file/z5udpZUwA0KjZPeKom0iyzovCFgKbE
Я вставлял кастомный блок, созданный в админке, внутрь шаблона вывода views.
Вот сайт http://amiz.v-stavropole.ru/our_car
Добавьте в шаблон представления в нужное место регион и выводите туда блок через админку.
Хорошо, я понял. Спасибо за ответ. Я думал, что регионы можно вставлять только на уровне шаблона page.html.twig
А кто-то может дать ответ на первый вопрос. Как из одного препрепроцесс передать переменную в другой? в hook_theme?
Для чего?
Хочу понять сам принцип.
Почему в видео https://www.youtube.com/watch?v=FuGwWjNtW2Y&t=231s
Смотреть только: 1:50:35 по 1:51:22 (меньше минуты)
В этом видео подстановка $variables из другого preprocess проходит без ошибки, а в моем случае пишет Notice: Undefined index: new_title in remont_preprocess_node__services()
Я понимаю, что чтобы разобраться надо смотреть больше видео, ни кто это делать не будет, но на видео видно, что это возможно.