Добавить свойство к существующему объекту в ветке

Я собираюсь построить модульная страница тема в дериватографическими (который использует прут как шаблонный движок).

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

  1. пример модульной рамки страницы
  2. пример модуля

Как видите, модуль (пример) не имеет head или же javascripts блок для добавления JavaScript в заголовок HTML. (Это даже было бы невозможно, так как типовая модульная страница состоит из нескольких модулей. Поэтому, если два разных модуля будут пытаться изменить javascripts блокировка последнего перезапишет изменения, сделанные первым, что приведет к непредвиденным результатам).

Однако бывает так, что мне нужно добавить некоторый код javascript в заголовок моей страницы из модуля. Я подумал о решении, и у меня возникла идея добавить javascript-код в качестве свойства к объекту, который существует «по всему сайту», а именно объект страниц.

Это приводит к моему вопросу:

Как я могу добавить свойства к существующему объекту используя синтаксис ветки?

Кроме того, я также хотел бы знать, можете ли вы подумать о каких-либо причинах, по которым это решение может не сработать. Но если вы поможете мне с синтаксисом, я также могу просто попробовать …

1

Решение

Манипулирование состоянием объекта не должно выполняться в шаблоне Twig. Представление должно выводить данные, которые были ему предоставлены.

попробуйте изменить блок javascripts, последний перезапишет изменения, сделанные первым, что приведет к непредвиденным результатам

Смотрите этот ответ Вот для объяснения того, как сделать так, чтобы несколько блоков добавляли содержимое в блок, а не перезаписывали его. Вы можете просто иметь блок «extra_scripts» или что-то в этом роде, а затем добавить любой необходимый javascript для конкретного модуля в этот блок согласно описанной ссылке. По сути вам нужно использовать {{ parent() }} чтобы убедиться, что содержание включено от родителя

0

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

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

По вопросам рекламы [email protected]