Domanda

Ho recentemente creato una variabile personalizzata denominata storecount - che aumenterò programmaticamente per ogni negozio che viene aggiunto al plug-in di localizzazione del mio negozio.

Mi piacerebbe mostrare questo in varie località tra cui descrizioni di prodotti e categorie, quindi quando aggiungeremo un nuovo negozio, non dobbiamo trovare ogni occorrenza del conteggio del negozio e aumentarlo manualmente per 1. L'utilizzo di {{customVar code=storecount}} non funziona nelle descrizioni delle categorie.C'è un modo in cui posso ottenere questa variabile senza hackerare il nucleo magento a pezzi?

È stato utile?

Soluzione

Il modo più semplice per farlo, è utilizzare lo stesso processore del modello per la descrizione della categoria poiché viene utilizzata per i blocchi CMS e il contenuto delle pagine. Quello dal modulo widget.
Per questo è necessario un'estensione.Chiamiamolo StackExchange_Catalog.
Avrai bisogno dei seguenti file.

app/etc/modules/StackExchange_Catalog.xml - il file di dichiarazione

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_Catalog>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Catalog />
                <Mage_Cms />
                <Mage_Widget />
            </depends>
        </StackExchange_Catalog>
    </modules>
</config>
.

app/code/local/StackExchange/Catalog/etc/config.xml - Il file di configurazione

<?xml version="1.0"?>
<config>
    <global>
        <catalog>
             <content>
                <tempate_filter>widget/template_filter</tempate_filter>
            </content>
        </catalog>
    </global>
</config>
.

Cancella la cache e riprova.

Altri suggerimenti

senza hacking magento core, sì;Senza codice, no.

È possibile scrivere un osservatore che ascolta il catalogo_category_load_after evento e manipola la descrizione della categoria lì.

/ Modifica: quando la categoria con la descrizione alterata viene salvata, verrà salvata la variabile personalizzata, quindi questa non è una soluzione eccezionale.

Un altro modo sarebbe quello di aggiungere la variabile storecount a un file modello con:

// To get the TEXT value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('text');

// To get the HTML value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('html');
.

Se ti stai chiedendo quale modello, accendere Percorso del modello suggerisce e dovresti essere in grado di trovare dove aggiungerlo in un file modello. Non sovrascrivere un modello di base, copiarlo nella directory del tuo tema, quindi crea una copia di esso da qualche parte come app/design/frontend/[Your Design Package]/[Your Theme]/template/catalog/category/view.phtml. Se non segui questa pratica perderai il tuo lavoro quando si aggiorna Magento.

È probabilmente Pratica migliore per Crea blocchi CMS e aggiungilo ai file del modello in modo che sia più facile da modificare e disattivare.

Crea il tuo blocco CMS con il tuo contenuto, incluso {{customVar code=storecount}}And, aggiungilo dove è necessario nei file del modello con:

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('your_cms_block_identifier')->toHtml() ?>
.

Aggiornamento Ho appena avuto un aspetto appropriato a La risposta di Marius - La sua soluzione sembra molto pulita e aggiunge la costituzionalità di cui hai bisogno per Magento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top