Я новичок в развитии контау. То, что я пытаюсь сделать, это расширить пользовательские блоки в моих шаблонах. Итак, мои вопросы:
Можно ли создавать пользовательские блоки в шаблонах?
В документации https://docs.contao.org/books/manual/3.5/en/04-managing-content/templates.html есть раздел, где написано наследование шаблонов и указано, что мы можем наследовать пользовательские блоки, например:
<?php $this->block('name_of_the_block'); ?>
// Block content
<?php $this->endblock(); ?>
Если есть какие-либо разработчики контако здесь. Пожалуйста, помогите мне. Был бы очень признателен. Thanx. Если вы можете перечислить и другие важные моменты, то это будет полезно. Спасибо.
Пожалуйста, имейте в виду, что наследование шаблонов в Contao 3 довольно минималистично по историческим причинам, и его нельзя сравнивать с гибкостью другого движка, то есть ветки (к которой мы переходим в Contao 4).
Чтобы ответить на ваш вопрос:
Вы можете определить собственные блоки в своих шаблонах, которые затем могут быть переопределены в дочернем шаблоне.
Фактически, каждый блок «создается» в «корневом» шаблоне своего имени, а затем переопределяется, чтобы увидеть это в действии, обратитесь к шаблонам элементов формы, например, см. Код form_row.html5:
// ... code omitted, refer to linked file.
<div class="<?= $this->prefix ?><?php if ($this->class) echo ' ' . $this->class; ?>">
<?php $this->block('label'); ?>
<?php $this->endblock(); ?>
<?php $this->block('field'); ?>
<?php $this->endblock(); ?>
</div>
// ... code omitted, refer to linked file.
Блоки введены здесь и переопределены в form_radio.html5:
<?php $this->extend('form_row'); ?>
<?php $this->block('field'); ?>
// ... code omitted, refer to linked file.
<?php $this->endblock(); ?>
Как видите, блок field
переопределяется и label
не является.
Теперь мы можем переопределить этот блок в другом шаблоне снова или переопределить метку в другом шаблоне, расширяя form_radio.html5
,
Как указано выше, есть некоторые ограничения, о которых следует знать:
$this->extend()
, Это приведет к исключению.Если оставшиеся вопросы должны быть, пожалуйста, обновите ваш вопрос, так как немного неясно догадаться, что именно вы хотите знать.
Других решений пока нет …