Pregunta

tener algún problema extraño en Magento 1.9.2.0

Tengo mi archivo local.xml:

<?xml version="1.0"?>
<layout>
    <catalog_product_view>
        <reference name="root">
            <block type="core/template" name="leftmenu" as="leftmenu"
                   template="catalog/product/view/left.phtml />
        </reference>
    </catalog_product_view>
</layout>

Cuando intento hacer: $this->getChildHtml('leftmenu'); no representa nada, si lo vuelco var_dump muestra la cadena '' (0)

Sin embargo, si cambio la referencia a la raíz por el contenido, se representa, pero debajo de todo el html.

Si luego lo cambio de nuevo a root y cambio $this->getChildHtml('leftmenu'); a $this->getLayout()->getBlock('leftmenu')->toHtml(); luego se renderizará como debería...¿Alguna idea de por qué?

Gracias

¿Fue útil?

Solución 2

Ok, entonces la respuesta es: catalog_product_view no usa root para crear bloques; debería ser:

<?xml version="1.0" ?>
<layout>
    <catalog_product_view>
        <reference name="product.info">
            <block type="core/template" name="product.left.menu" as="product.left.menu"
                   template="catalog/product/view/left.phtml" />
            <block type="core/template" name="product.tabs" as="product.tabs"
                   template="catalog/product/view/tabs/tabs.phtml" />
            <block type="core/template" name="product.related" as="product.related"
                   template="catalog/product/list/related.phtml" />
        </reference>
    </catalog_product_view>
</layout>

Otros consejos

Utilice el siguiente código

<?xml version="1.0"?>
<layout>
    <catalog_product_view>
        <reference name="content">
            <block type="core/template" name="leftmenu" as="leftmenu"
                   template="catalog/product/view/left.phtml />
        </reference>
    </catalog_product_view>
</layout>

Llámalo usando a continuación

echo $this->getChildHtml('leftmenu');

Más información aquí

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