模板块继承内容
Template Block Inheritence Contao
我是接触开发的新手。我想做的是在我的模板中扩展自定义块。所以,我的问题是:
Is it possible to create custom blocks in templates?
在文档 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(); ?>
如果这里有任何contao开发者。请帮帮我。真的很感激。谢谢。如果您还可以列出其他要点,那将会很有帮助。谢谢。
请记住,由于历史原因,Contao 3 中的模板继承非常简单,不能与另一个引擎即 twig(我们将在 Contao 4 中移动到)的灵活性进行比较。
回答你的问题:
您可以在模板中定义自己的块,然后可以在子模板中覆盖这些块。
事实上,每个块在其名称的 "root" 模板中都是 "created" 然后被覆盖,要查看此操作请参考表单元素模板,例如参见 [=16=] 的代码:
// ... 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()
的模板)中引入新块。这样做将导致抛出异常。
- 不能在子模板的块外引入代码。
如果还有其他问题,请更新您的问题,因为猜测您到底想知道什么有点模糊。
我是接触开发的新手。我想做的是在我的模板中扩展自定义块。所以,我的问题是:
Is it possible to create custom blocks in templates?
在文档 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(); ?>
如果这里有任何contao开发者。请帮帮我。真的很感激。谢谢。如果您还可以列出其他要点,那将会很有帮助。谢谢。
请记住,由于历史原因,Contao 3 中的模板继承非常简单,不能与另一个引擎即 twig(我们将在 Contao 4 中移动到)的灵活性进行比较。
回答你的问题: 您可以在模板中定义自己的块,然后可以在子模板中覆盖这些块。 事实上,每个块在其名称的 "root" 模板中都是 "created" 然后被覆盖,要查看此操作请参考表单元素模板,例如参见 [=16=] 的代码:
// ... 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()
的模板)中引入新块。这样做将导致抛出异常。 - 不能在子模板的块外引入代码。
如果还有其他问题,请更新您的问题,因为猜测您到底想知道什么有点模糊。