2012-03-20 10 views
5

Ho una singola installazione di Magento che esegue due siti Web diversi. Uno vende ebook e l'altro no e così il team di business vorrebbe vedere il collegamento "I miei download" rimosso dal blocco di navigazione del cliente nell'area Il mio account dell'applicazione.È possibile definire gli aggiornamenti del layout di Magento in base al negozio

Riesco a vedere il collegamento definito in design/frontend/base/layout/downloadable.xml ma non riesco a vedere alcun modo definito che mi consenta di disabilitare il collegamento su uno solo dei siti Web. Ovviamente, potrei ignorare questo XML per disattivarlo a livello globale, ma ho bisogno che la modifica sia limitata.

Come si definiscono le sostituzioni del layout su un singolo sito Web o negozio in un'installazione Magento multi-sito?

Sulla base delle risposte di seguito, ho fatto quanto segue:

Creato app/local/Mage/clienti/blocchi/account/Navigation.php e ha aggiunto un metodo removeLink(), che non è nel codice di base .

Se faccio la seguente modifica nel local.xml, il link di download è stato rimosso:

<?xml version="1.0" encoding="UTF-8"?> 
<layout> 
    <default> 
     <remove name="catalog.compare.sidebar"/> 
    </default> 
    <customer_account> 
     <reference name="customer_account_navigation"> 
      <action method="removeLink" translate="label" module="downloadable"> <name>downloadable_products</name></action> 
     </reference> 
    </customer_account> 
</layout> 

Ma, se cercate di indirizzare un negozio specifico, non lo è. Per esempio.

<?xml version="1.0" encoding="UTF-8"?> 
<layout> 
    <default> 
     <remove name="catalog.compare.sidebar"/> 
    </default> 
    <STORE_mm> 
    <customer_account> 
     <reference name="customer_account_navigation"> 
      <action method="removeLink" translate="label" module="downloadable"> <name>downloadable_products</name></action> 
     </reference> 
    </customer_account> 
    </STORE_mm> 
</layout> 
+3

se si utilizzano temi diversi, questo è veramente semplice –

risposta

9

Come suggerito da Anton, impostare un nuovo tema di layout per il negozio. Un altro approccio per tutto ciò che riguarda l'ambito del sito + del punto vendita sarebbe utilizzare l'handle del layout del negozio: è come un handle <default> che viene applicato ad ogni negozio. Se il tuo codice negozio (in Gestisci negozi> Visualizza negozio) è "pippo", l'handle del layout del negozio sarà <STORE_foo>.

rif. Mage_Core_Controller_Varien_Action::addActionLayoutHandles()

+0

Sto cercando di adottare l'approccio basato sul punto vendita e ho aggiornato la domanda per riflettere. I due siti Web sono molto simili e quindi avere più temi non è l'ideale in questo caso. Tuttavia, la regola STORE_x non sembra essere elaborata. Hai qualche idea? –

+1

Le maniglie '' sono solo questo, maniglie. Non qualificano altre maniglie; sono utilizzabili solo per gli aggiornamenti del layout a livello di negozio. Dato il tuo esempio aggiornato, dovresti dichiarare un nuovo tema di layout per il tuo negozio 'mm', ma l'intero tema conterrà solo il file local.xml, che dovrebbe contenere tutte le direttive" globali "local.xml. L'altra opzione è creare un modulo personalizzato che aggiunge semplicemente un nuovo file di layout al sistema e lo usa semplicemente come un file locale.xml. – benmarks

+0

Ha preso l'approccio a tema separato che combinato con la modifica per aggiungere un metodo removeLink funziona benissimo - thx –

2

Creare temi diversi per questo sito Web.
Creare app/design/frontend/default/WebSite1/layout/local.xml
e app/design/frontend/default/website2/layout/local.xml
dove è possibile effettuare le modifiche necessarie per il layout scaricabile. Questo è descritto nella funzione Magento.

+0

+1. Ho trovato l'approccio più pulito alla gestione di più temi del negozio è quello di tenerli isolati, con fallback di default per tutto ciò che riguarda gli ambiti di più negozi. Consiglia anche di farlo in un pacchetto separato da predefinito, ad es. app/design/frontend/mypackage/mytheme e rispettivamente app/design/frontend/mypackage/default. – DWils

Problemi correlati