Pregunta

Estoy creando un módulo para agregar algunos botones de acción adicionales a la acción. No puedo obtener una salida para mostrar.Creo que estoy obteniendo las convenciones de nombres o la ubicación del archivo (o ambos) incorrectamente.

También puede ser la forma en que estoy tratando de insertar el bloque.No quiero modificar los archivos PHTML si puedo evitarlo.

Como puede ver en Mis archivos, estoy intentando una serie de hacer que el algo sea de salida, sin suerte.

El objetivo es poder agregar botones CTA adicionales después de agregar al carrito, como 'Solicitar muestras'

Estructura de archivo:

app
    Code
        local
            CompanyName
                CtaAttributes
                    Block -> CtaButtons.php
                    etc -> config.xml
    design
        frontend
            base
                default
                    layout->ctabuttons.xml
                    template
                        ctaattributes
                            catelog
                               product ->ctabuttons.phtml

config.xml

<config>

    ... includes Module and Resource

    <global>
      <blocks>
        <ctaattributes>
            <class>CompanyName_CtaAttributes_Block</class>
        </ctaattributes>
      </blocks>
    </global>

</config>

ctabuttons.xml

<?xml version="1.0"?>

<layout version="0.1.0">
    <catalog_product_view>    
        <reference name="content">

                <block type="core/text_list" name="product.info.addtocart" before="addtocart" template="ctaattributes/catalog/product/ctabuttons.phtml"/>
                <action method="append">
                        <block>ctabuttons</block>
                </action>
        </reference>

        <reference name="product.info.addtocart">
            <block type="core/text_list" name="core-text"><action method="setText"><text><![CDATA[<div>Test</div>]]></text></action></block>
        </reference>
    </catalog_product_view>    
</layout>

ctabuttons.phtml

<?php
/**
*/
Mage::log(get_class($this));
echo 'this is my test';

ctabuttons.php

<?php

class CompanyName_CtaAttributes_Block_CtaButtons extends Mage_Core_Block_Template  {
    echo 'test';

}

¿Fue útil?

Solución 4

Encontré una solución: está en dos partes.

  1. No definió una ruta de actualización de frontend-> para mi actualización de diseño.Inserto esto después de </global>

      <frontend>
        <layout>
            <updates>
                <ctaattributes>
                    <file>ctaattributes.xml</file>
                </ctaattributes>
            </updates>
        </layout>  
    </frontend>
    
  2. Si hubiera usado local.xml, no creo que esto hubiera sido requerido, pero en mis pruebas pensé que cambiaría el nombre del archivo para mantenerlo separado.

    1. No puede usar un caso de camello en el nombre de la clase de bloque
    2. Originaly My Class fue CompanyName_CtaAttributes_Block_CtaButtons, con un archivo correspondiente llamado CtaButtons.php.
      Cambiar el nombre a CompanyName_CtaAttributes_Block_Ctabuttons y Ctabuttons.php ha resuelto el problema.

      No sé si es el archivo de clase en bloque / bloquename.php o el archivo XML de diseño que tiene un problema.

      He probado esto con Camelcase en el nombre y el módulo de la compañía sin impacto, parece estar restringido a la clase y el archivo de bloques.

Otros consejos

  • the >blocks/ctabuttons.xml en su estructura de archivos debe ser un PHP archivo.
  • No veo el archivo del módulo que debe estar en / aplicar / etc / módulos
  • Debe tener versiones de módulo en la configuración config.xml

Si usa el último parche, sus bloques también deben permitirse en el sistema-> Permiso-> Bloque

Hola, necesitas definir el tipo de bloque primero

de

<?xml version="1.0"?>

 <layout version="0.1.0">
     <catalog_product_view>    
         <reference name="content">

                 <block type="core/text_list" name="product.info.addtocart" before="addtocart" template="ctaattributes/catalog/product/ctabuttons.phtml"/>
                 <action method="append">
                         <block>ctabuttons</block>
                 </action>
         </reference>

         <reference name="product.info.addtocart">
             <block type="core/text_list" name="core-text"><action method="setText"><text><![CDATA[<div>Test</div>]]></text></action></block>
         </reference>
     </catalog_product_view>    
 </layout>

a

<?xml version="1.0"?>

<layout version="0.1.0">
    <catalog_product_view>    
        <reference name="product.info">
            <block type="core/text_list" name="product.info.ctaattributes" before="addtocart" template="ctaattributes/catalog/product/ctabuttons.phtml"/>
        </reference>
    </catalog_product_view>    
</layout>

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