Zusammenfassung
- Was ist der Unterschied zwischen
getChildHtml
undgetBlockHtml
? - Wie kann ich den cms / block-Titel in der Vorlage erhalten?
Ich habe im Wesentlichen die Fußzeile durch meine eigene Fußzeile ersetzt und meine eigene eingestellt. <?= $this->getChildHtml('...') ?>
Dies hat nicht funktioniert, bis ich verwendet habe : <?= $this->getBlockHtml('...') ?>
.
Layout 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>
Vorlage (funktioniert nicht):
<footer>
<div class="row">
<div class="col-sp4"><?= $this->getChildHtml('child_1') ?></div>
</div>
</footer>
Vorlage (Werke):
<footer>
<div class="row">
<div class="col-sp4"><?= $this->getBlockHtml('child_1') ?></div>
</div>
</footer>
Lösung:
Zuerst musste ich die Fußzeile in meinem überschreiben, local.xml
indem ich :
<default>
<block type="core/template" template="page/html/custom_footer.phtml" name ="custom_footer" as "footer" />
</default>
Das musste ich meinen Kindern hinzufügen (um getChildHtml()
arbeiten zu können):
<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">
Ist ein Kind desfooter
Blocks? In welchem Fall funktioniert getChildHtml (child_1) nicht?getChildHtml
funktioniert das nicht, weil die Layout-Seite (z. B. 3columns.phtml) immer noch den Standard-Fußzeilenblock rendert. Ich meine, er enthält<?php echo $this->getChildHtml('footer') ?>
ihn. Habe ich recht? Ich fotografiere hier im Dunkeln, weil ich nicht weiß, wie Ihre Layoutseite aussieht, aber dies ist das erste, was ich überprüfen würde. Versuchen Sie es zu ändern<?php echo $this->getChildHtml('custom_footer') ?>
und prüfen Sie, ob Sie es verwenden könnengetChildHtml
.