Question

Je crée un module pour ajouter des boutons d'appel à l'action supplémentaires.Je n'arrive pas à afficher une sortie.Je pense que je me trompe soit dans les conventions de dénomination, soit dans l'emplacement du fichier (ou les deux).

C'est peut-être aussi la façon dont j'essaie d'insérer le bloc.Je ne veux pas modifier les fichiers phtml si je peux l'éviter.

Comme vous pouvez le voir dans mes fichiers, j'essaie plusieurs façons d'obtenir le rien être sorti - sans succès.

L'objectif est de pouvoir ajouter des boutons CTA supplémentaires après l'ajout au panier, tels que « Demander des échantillons ».

Structure du fichier :

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

}
Était-ce utile?

La solution 4

J'ai trouvé une solution - elle est en deux parties.

  1. Je n'ai pas défini de chemin frontend->update pour ma mise à jour de mise en page.J'ai inséré ceci après </global>

      <frontend>
        <layout>
            <updates>
                <ctaattributes>
                    <file>ctaattributes.xml</file>
                </ctaattributes>
            </updates>
        </layout>  
    </frontend>
    

Si j'avais utilisé local.xml, je ne pense pas que cela aurait été nécessaire, mais lors de mes tests, j'ai pensé que je changerais le nom du fichier pour le garder séparé.

  1. Vous ne pouvez pas utiliser la casse camel dans le nom de la classe de bloc

À l'origine, ma classe était CompanyName_CtaAttributes_Block_CtaButtons - avec un fichier correspondant appelé CtaButtons.php.
Changer le nom en CompanyName_CtaAttributes_Block_Ctabuttons et Ctabuttons.php a résolu le problème.

Je ne sais pas si c'est le fichier Class dans Block/Blockname.php ou le fichier XML de mise en page qui a un problème.

J'ai testé cela avec CamelCase dans le nom de l'entreprise et le module sans impact, cela semble être limité à la classe et au fichier Blockname.

Autres conseils

  • le /blocks/ctabuttons.xml dans votre structure de fichier doit être un PHP Fichier.
  • Je ne vois pas le fichier de module qui doit être dans / app / etc / modules
  • Vous devriez avoir la version de module dans le fichier config.xml

Si vous utilisez le dernier correctif, vos blocs doivent également être autorisés dans le système-> permission-> bloc

salut vous devez définir le type de bloc d'abord

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>

à

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

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