El bloque personalizado no se muestra cuando se agrega a local.xml en Magento

Tengo un bloque personalizado (información del producto con pestañas) que quiero mostrar en la vista de productos de la tienda dentro del propio bloque de vista de productos. Llamé correctamente al bloque en mi view.phtml y usé este código para agregar el bloque a mi XML:

<block type="catalog/product_view_tabs" name="product.info.tabs" as="info_tabs" template="catalog/product/view/tabs.phtml" >

El bloque se procesa cuando se coloca en catalog.xml, pero cada vez que lo coloco en mi local.xml en forma de

<catalog_product_view translate="label">
 <label>Catalog Product View (Any)</label>
   <reference name="content">
    <block type="catalog/product_view_tabs" name="product.info.tabs" as="info_tabs" template="catalog/product/view/tabs.phtml" >
   </reference>
</catalog_product_view>

No funciona. Cuando agrego la etiqueta anterior o posterior (p. ej., after="product.info.media") al fragmento de código en local.xml, se representa pero no dentro, pero siempre antes o después de todo el bloque de vista del producto. En catalog.xml, simplemente lo coloqué entre los otros bloques y funcionó bien.

Cuando copio el contenido de toda la sección de vista del producto de catalog.xml a mi local.xml, funciona, pero todo el contenido (imágenes, descripción, etc.) se muestra dos veces.

¿Hay alguna manera de hacer esto a través de local.xml? ¿Quizás a través de setchild?

preguntado el 03 de mayo de 12 a las 16:05

2 Respuestas

Cuando hablas de local.xml, ¿estás hablando de /app/etc/local.xml ? Este archivo es un archivo de configuración, no un archivo de actualización de diseño. No está destinado a funcionar así.

Si está hablando de otro archivo de diseño (en app/design/ / /layout/local.xml), entonces debe agregar un dependencia del módulo que declaró este archivo de actualización de diseño al módulo que declara el contenido original de la página (en su caso, Mage_Catalog).

Esto es así porque, Magento después de or antes los atributos se comparan solo con los bloques ya declarados, y creo que su local.xml se analiza antes que el catalog.xml original

Supongamos que tiene un módulo llamado StackOverflow_Local, que tiene en su config.xml (app/code/local/StackOverflow/Local/etc/config.xml) esta declaración:

<config>
  <frontend>
    <layout>
      <updates>
        <stackoverflow_local>
          <file>local.xml</file>
        </stackoverflow_local>
      </updates>
    </layout>
  </frontend>
</config>  

Entonces debería tener una declaración de su módulo en app/etc/modules/StackOverflow_Local.xml donde debería encontrar algo como esto:

<?xml version="1.0"?>
<config>
  <modules>
    <StackOverflow_Local>
      <active>true</active>
      <codePool>local</codePool>
    </StackOverflow_Local>
  </modules>
</config>

Para agregar una dependencia (su módulo no debería funcionar si Mage_Catalog está deshabilitado/eliminado) transforme su XML de activación a esto:

<?xml version="1.0"?>
<config>
  <modules>
    <StackOverflow_Local>
      <active>true</active>
      <codePool>local</codePool>
      <depends>
        <Mage_Catalog />
      </depends>
    </StackOverflow_Local>
  </modules>
</config>

contestado el 03 de mayo de 12 a las 17:05

La suposición es que OP está hablando del archivo de diseño local.xml. - Benmarks

Está agregando el bloque a la contenido cuadra. Actualiza tu reference nombre valor para información del producto. Basado en su alias de info_tabs, siempre que su plantilla tenga

echo $this->getChildHtml('info_tabs')

Usted debe ser bueno para ir.

contestado el 03 de mayo de 12 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.