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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top