конспект
- В чем разница между
getChildHtml
иgetBlockHtml
? - Как я могу получить заголовок cms / block в шаблоне?
Я по существу заменил колонтитул с моим собственным колонтитула и установить мое собственное <?= $this->getChildHtml('...') ?>
Это не работа , пока я не использовал: <?= $this->getBlockHtml('...') ?>
.
Макет XML:
<layout>
<default>
<block type="core/template" name="custom_footer" as="footer" template="page/html/footer.phtml">
<block type="cms/block" name="child_1">
<action method="setBlockId"><block_id>footer_child_1</block_id></action>
</block>
</block>
</layout>
</default>
Шаблон (не работает):
<footer>
<div class="row">
<div class="col-sp4"><?= $this->getChildHtml('child_1') ?></div>
</div>
</footer>
Шаблон (Работы):
<footer>
<div class="row">
<div class="col-sp4"><?= $this->getBlockHtml('child_1') ?></div>
</div>
</footer>
Решение:
Прежде всего я должен был переопределить нижний колонтитул в моем local.xml
:
<default>
<block type="core/template" template="page/html/custom_footer.phtml" name ="custom_footer" as "footer" />
</default>
Я должен был добавить своих детей (для того, getChildHtml()
чтобы работать):
<reference name="footer">
<block type="cms/block" name="child_1">
<action method="setBlockId"><block_id>footer_child_1</block_id></action>
</block>
</reference>
<block type="cms/block" name="child_1">
ребенокfooter
блока? В каком случае почему `getChildHtml ('child_1') не работает?getChildHtml
это не работает, потому что страница макета (например, 3columns.phtml) по-прежнему отображает блок нижнего колонтитула по умолчанию. Я имею в виду, что он есть<?php echo $this->getChildHtml('footer') ?>
внутри. Я прав? Я снимаю здесь в темноте, потому что не знаю, как выглядит ваша верстка, но это первое, что я бы проверил. Попробуйте изменить его на<?php echo $this->getChildHtml('custom_footer') ?>
и посмотрите, сможете ли вы его использоватьgetChildHtml
.