2014-09-26 11 views
5

Mi piacerebbe essere in grado di impostare variabili utilizzando la casella "Aggiornamenti layout personalizzati" che appare sotto Manage Categories -> [Some Category] -> Custom Design, per specificare pezzi di dati che possono essere utilizzati nel modello di pagina categoria list.phtml.Magento: impostazione delle variabili tramite l'XML "Custom Layout Updates" su base per categoria?

Finora, ho provato ad utilizzare questo:

<reference name="product_list"> 
    <action method="setData"> 
     <name>custom_banner_type</name> 
     <value>single</value> 
    </action> 
    <action method="setData"> 
     <name>custom_banner_position</name> 
     <value>3</value> 
    </action> 
</reference> 

Ma quando provo echo $this->getData("custom_banner_type"); all'interno list.phtml I dati non sono disponibili.

Ho anche provato a ottenere i dati all'interno della funzione _beforeToHtml() all'interno di List.php, il controller del modello, ma anche questo non fa nulla!

Quindi c'è un modo per passare dati/variabili utilizzando l'XML degli aggiornamenti del layout personalizzato? Deve essere fatto da lì, perché i dati cambieranno per ogni singola categoria, quindi non posso usare file di layout hard-coded.

+0

Dai un'occhiata a questo link qui: http://magento.stackexchange.com/a/14605/395 –

+0

@RohitS Grazie, ma questo non ha aiutato. Per quanto posso vedere la mia sintassi è corretta e sto usando i metodi corretti. Ma i dati non stanno ancora arrivando. – WackGet

+0

aggiorna la cache e var/cache/* già? –

risposta

8

In quale maniglia del layout state facendo questo? catalog_category_view e catalog_category_layered devono essere utilizzati. Forse potresti usare il modo Magento predefinito per impostare i dati con XML. Magento imposta i dati in xml con la funzione set, che trovo più leggibile di setData in XML.

Esempio:

<catalog_category_view> 
    <reference name="product_list"> 
    <action method="setCustomBannerType"><value>single</value></action> 
    <action method="setCustomBannerPosition"><value>3</value></action> 
    </reference> 
</catalog_category_view> 

Per recuperare i dati è possibile utilizzare $this->getData('custom_banner_type'); ma anche $this->getCustomBannerType(); che è lo stesso. Se vuoi saperne di più, ti suggerisco di consultare i metodi magici (http://php.net/manual/en/language.oop5.magic.php)

Non so se la cache è abilitata, in tal caso svuota la cache e dovrebbe funzionare.

+1

L'handle è necessario se si è già nella casella di aggiornamento del layout personalizzato della categoria nel back-end? –

+0

No, dovrebbe funzionare senza! –