Streszczenie
- Jaka jest różnica między
getChildHtml
igetBlockHtml
? - Jak mogę uzyskać tytuł cms / block w szablonie?
Mam zasadniczo zastąpiony stopkę z własnej stopce i ustawić własną rękę <?= $this->getChildHtml('...') ?>
to nie działa, aż kiedyś: <?= $this->getBlockHtml('...') ?>
.
Układ 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>
Szablon (nie działa):
<footer>
<div class="row">
<div class="col-sp4"><?= $this->getChildHtml('child_1') ?></div>
</div>
</footer>
Szablon (działa):
<footer>
<div class="row">
<div class="col-sp4"><?= $this->getBlockHtml('child_1') ?></div>
</div>
</footer>
Rozwiązanie:
Przede wszystkim musiałem przesłonić stopkę w moim local.xml
:
<default>
<block type="core/template" template="page/html/custom_footer.phtml" name ="custom_footer" as "footer" />
</default>
Musiałem dodać moje dzieci ( getChildHtml()
aby pracować):
<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">
jest dzieckiem zfooter
bloku? W takim przypadku dlaczego `getChildHtml ('child_1') nie działa?getChildHtml
to nie działa, ponieważ strona układu (na przykład 3columns.phtml) nadal renderuje domyślny blok stopki. Mam na myśli, że ma<?php echo $this->getChildHtml('footer') ?>
go w sobie. Czy mam rację? Kręcę tutaj w ciemności, ponieważ nie wiem, jak wygląda strona układu, ale to pierwsza rzecz, którą sprawdzę. Spróbuj zmienić go na<?php echo $this->getChildHtml('custom_footer') ?>
i sprawdź, czy możesz użyćgetChildHtml
.