Magento 1.9.x - I blocchi non vengono visualizzati dal modulo locale
-
28-09-2020 - |
Domanda
Sto creando un modulo per aggiungere alcuni pulsanti extra di invito all'azione.Non riesco a visualizzare un output.Credo di sbagliare le convenzioni di denominazione o il percorso del file (o entrambi).
Potrebbe anche essere il modo in cui sto cercando di inserire il blocco.Non voglio modificare i file phtml se posso evitarlo.
Come puoi vedere dai miei file, sto provando diversi modi per ottenere il file nulla essere prodotto - senza fortuna.
L'obiettivo è quello di poter aggiungere ulteriori pulsanti CTA dopo l'aggiunta al carrello, ad esempio "Richiedi campioni"
Struttura del file:
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';
}
Soluzione 4
Ho trovato una soluzione: è divisa in due parti.
Non ho definito un percorso frontend->aggiornamento per il mio aggiornamento del layout.L'ho inserito dopo
</global>
<frontend> <layout> <updates> <ctaattributes> <file>ctaattributes.xml</file> </ctaattributes> </updates> </layout> </frontend>
Se avessi utilizzato local.xml, non credo che ciò sarebbe stato richiesto, ma durante i miei test ho pensato che avrei cambiato il nome del file per mantenerlo separato.
- Non è possibile utilizzare il caso cammello nel nome della classe del blocco
Originariamente la mia classe era CompanyName_CtaAttributes_Block_CtaButtons
- con un file corrispondente chiamato CtaButtons.php
.
Cambiare il nome in CompanyName_CtaAttributes_Block_Ctabuttons
E Ctabuttons.php
ha risolto il problema.
Non so se è il file Class in Block/Blockname.php o il file xml di layout ad avere un problema.
L'ho testato con CamelCase nel nome dell'azienda e nel modulo senza alcun impatto, sembra essere limitato alla classe e al file Blockname.
Altri suggerimenti
- .
- the /blocks/ctabuttons.xml nella tua struttura di file dovrebbe essere un PHP file.
- Non vedo il file del modulo che dovrebbe essere in / app / etc / moduli
- Dovresti avere il controllo del modulo in Config.xml
Se si utilizza l'ultima patch che i blocchi devono essere consentiti anche nel sistema-> autorizzazione-> blocco
ciao devi definire il tipo di blocco prima
DA
<?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>
.