Pregunta

Ok, así que he hecho un módulo y lo utilizan para gestionar todos los diseños personalizados en mi tienda. Ahora tengo que acaba de añadir algunos bloques a ciertas páginas que utilizan la plantilla. He añadido la siguiente línea a mi diseño personalizado:

<?php echo $this->getChildHtml('cms_left') ?>

Y dentro de la actualización de diseño XML he añadido lo siguiente:

<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>

Y encerrar su relevante aquí es parte de la parte pertinente de mis moudles Config.xml que se encarga de esta disposición personalizada:

<cms_pages module="page" translate="label">
    <label>cms pages</label>
    <template>page/cms_pages.phtml</template>
    <layout_handle>cms pages</layout_handle>
</cms_pages>

Por lo que sé que esto debería mostrar ahora el bloque cms_left_test en esta página, sin embargo, no está funcionando. ¿Me he perdido un paso en alguna parte? He intentado buscar algunos ejemplos, sino porque estoy dibujando partes y piezas de todo no estoy seguro de si mi enfoque es totalmente correcto.

¿Fue útil?

Solución

How is the block 'cms_left' defined in your layout? Or better yet ''IS IT defined?'. You are calling this:

<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>

But in order to be able to reference a block, the block should exist.

I think you are missing this piece of xml in your custom layout file.

<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>

Otros consejos

From what it looks like, the block cms_left is not defined anywhere. In order for it to work, you should define it as core/text_list somewhere in your layout definitions. Then you can reference it and add new blocks to it, like you are trying to do. Assuming cms_left is a direct child of root, you can do the following:

<reference name="root">
    <block name="cms_left" type="core/text_list" />
</reference>

Make sure you add this before your code above.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top