Ajout d'une zone personnalisée pour les blocs dans une mise en page personnalisée
Question
Ok, donc je l'ai fait un module et l'utiliser pour gérer toutes les mises en page personnalisées sur mon magasin. Maintenant, je dois ajouter que quelques blocs à certaines pages en utilisant le modèle. J'ai ajouté la ligne suivante à ma disposition personnalisée:
<?php echo $this->getChildHtml('cms_left') ?>
Et dans la mise en page XML mise à jour j'ajouté ce qui suit:
<reference name="cms_left">
<block type="cms/block" name="cms_left_test" before="-">
<action method="setBlockId"><block_id>cms_left_test</block_id></action>
</block>
</reference>
Et son relevent est envelopper ici partie la partie pertinente de mes moudles config.xml poignées cette mise en page personnalisée:
<cms_pages module="page" translate="label">
<label>cms pages</label>
<template>page/cms_pages.phtml</template>
<layout_handle>cms pages</layout_handle>
</cms_pages>
D'après ce que je sais que cela devrait maintenant afficher le bloc cms_left_test sur cette page, mais il, ne travaille pas. Ai-je manqué une étape quelque part? J'ai essayé regardant quelques exemples, mais parce que je dessine des morceaux de tout je ne sais pas si mon approche est tout à fait correcte.
La solution
Comment est le bloc « cms_left » défini dans votre mise en page? Ou mieux encore « » est-il défini? ». Vous appelez ceci:
<reference name="cms_left">
<block type="cms/block" name="cms_left_test" before="-">
<action method="setBlockId"><block_id>cms_left_test</block_id></action>
</block>
</reference>
Mais pour être en mesure de faire référence à un bloc, le bloc doit exister.
Je pense que vous manquez ce morceau de xml dans votre fichier de mise en page personnalisée.
<default>
<reference name="root">
<block type="core/text_list" name="cms_left" as="cms_left" translate="label">
<label>CMS left block</label>
</block>
</reference>
</default>
Autres conseils
De quoi il ressemble, le cms_left
bloc est définie nulle part. Pour que cela fonctionne, vous devez définir comme quelque part core/text_list
dans vos définitions de mise en page. Ensuite, vous pouvez référencer et ajouter de nouveaux blocs à elle, comme vous essayez de faire. Si l'on suppose cms_left
est un enfant direct de root
, vous pouvez faire ce qui suit:
<reference name="root">
<block name="cms_left" type="core/text_list" />
</reference>
Assurez-vous que vous ajoutez ceci avant votre code ci-dessus.