Sinopse
- Qual é a diferença entre
getChildHtml
egetBlockHtml
? - Como posso obter o título cms / block no modelo?
Tenho essencialmente substituído o rodapé com a minha própria rodapé e definir meu próprio <?= $this->getChildHtml('...') ?>
Isto não funcionou até que eu usei: <?= $this->getBlockHtml('...') ?>
.
XML de layout:
<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>
Modelo (não funciona):
<footer>
<div class="row">
<div class="col-sp4"><?= $this->getChildHtml('child_1') ?></div>
</div>
</footer>
Modelo (Trabalhos):
<footer>
<div class="row">
<div class="col-sp4"><?= $this->getBlockHtml('child_1') ?></div>
</div>
</footer>
Solução:
Antes de tudo, tive que substituir o rodapé dentro do meu local.xml
por:
<default>
<block type="core/template" template="page/html/custom_footer.phtml" name ="custom_footer" as "footer" />
</default>
Eu tive que adicionar meus filhos (para getChildHtml()
poder trabalhar):
<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">
é : um filho dofooter
bloco? Nesse caso, por que o `getChildHtml ('child_1') não funciona?getChildHtml
não funciona porque a página de layout (3columns.phtml por exemplo) ainda renderiza o bloco de rodapé padrão<?php echo $this->getChildHtml('footer') ?>
. Estou certo? Estou filmando aqui no escuro porque não sei como é a aparência da sua página de layout, mas é a primeira coisa que verifico. Tente alterá-lo para<?php echo $this->getChildHtml('custom_footer') ?>
e veja se você pode usá-logetChildHtml
.