Sinopsis
- ¿Cuál es la diferencia entre
getChildHtml
ygetBlockHtml
? - ¿Cómo puedo obtener el título de cms / block en la plantilla?
He reemplazado esencialmente el pie de página con mi propio pie de página y establecer mi propio <?= $this->getChildHtml('...') ?>
esto no funcionó hasta que usé: <?= $this->getBlockHtml('...') ?>
.
Diseño 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>
Plantilla (no funciona):
<footer>
<div class="row">
<div class="col-sp4"><?= $this->getChildHtml('child_1') ?></div>
</div>
</footer>
Plantilla (Obras):
<footer>
<div class="row">
<div class="col-sp4"><?= $this->getBlockHtml('child_1') ?></div>
</div>
</footer>
Solución:
En primer lugar, tuve que anular el pie de página dentro de mi local.xml
por:
<default>
<block type="core/template" template="page/html/custom_footer.phtml" name ="custom_footer" as "footer" />
</default>
Tuve que agregar a mis hijos (para getChildHtml()
poder trabajar):
<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">
es un hijo delfooter
bloque? En cuyo caso, ¿por qué `getChildHtml ('child_1') no funciona?getChildHtml
no funciona porque la página de diseño (3columns.phtml, por ejemplo) todavía representa el bloque de pie de página predeterminado. Es decir, tiene<?php echo $this->getChildHtml('footer') ?>
dentro. Estoy en lo cierto? Estoy filmando en la oscuridad aquí porque no sé cómo se ve tu página de diseño, pero esto es lo primero que revisaría. Intente cambiarlo a<?php echo $this->getChildHtml('custom_footer') ?>
y vea si puede usarlogetChildHtml
.