Qual è il modo / approccio corretti per modificare un modello Magento?


15

Per favore, suggeriscimi l'approccio giusto, voglio personalizzare la pagina "EMAIL to Friend" nella finestra pop-up, quando l'utente fa clic sul pulsante (invia questo prodotto via e-mail). Abilitando il suggerimento del modello, ho scoperto che il pulsante è reso con

frontend / RWD / default / template / catalog / product / view / sharing.phtml

E il file di layout corrispondente è catalog.xml(in frontend / rwd / default / layout)

Così ho creato un local.xmlnella stessa cartella in cui catalog.xmlesiste con il seguente codice (solo quello che ho dato test.phtmlinvece di sharing.phtml, solo per "Debug")

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>

        <catalog-product-view>
            <reference name="content">
                <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
                    <block type="catalog/product_view" name="product.info.sharing" as="sharing" template="catalog/product/view/test.phtml"/>
                </block>
            </reference>
        </catalog-product-view>

    </default>
</layout>

Ma non succede nulla, intendo come posso cambiare (sovrascrivere) il design predefinito del tema, senza modificare esistenti xmle phtmlfile?

Risposte:


10

Questo è ciò che dovresti inserire nel tuo local.xmlfile.

<?xml version="1.0"?>
<layout version="0.1.0">
    <catalog_product_view>
        <reference name="product.info.sharing">
            <action method="setTemplate">
                <template>catalog/product/view/test.phtml</template>
            </action>
        </reference>
    </catalog_product_view>
</layout>

Errori che hai fatto

  • Sono stati utilizzati due handle di aggiornamento del layout : defaulte catalog-product-view. Questo è sbagliato. È necessario solo un handle di aggiornamento del layout. Quello giusto che dovresti usare qui ècatalog_product_view

  • Quindi catalog-product-viewè sconosciuto per Magento. Il nome proprio ècatalog_product_view

  • Poiché il blocco di condivisione è già definito tramite catalog.xml , ora è necessario fare riferimento a quel blocco e quindi modificare il modello aggiungendo un'azione setTemplate. Questo è ciò che fa lo script sopra.

Spero che tu abbia l'idea


Ho usato il tuo local.xml, ancora mostrando quello esistente (ho creato un test.phtml) nella cartella specificata
Dimag Kharab

hai cancellato la cache? questo dovrebbe funzionare, se hai fatto tutto correttamente.
Rajeev K Tomy,

la cache è disabilitata nel mio caso e ho anche reindicizzato (suppongo che non fosse necessario)
Dimag Kharab

aggiungilo <reference name="content"><block type="core/template" name="test.block" template="catalog/product/view/test.phtml" /></reference>direttamente sotto il nodo <catalog_product_view>. e controlla se il contenuto del file test.phtml è disponibile nella parte inferiore della pagina di visualizzazione del prodotto
Rajeev K Tomy,

Nessuna fortuna fratello ancora
Dimag Kharab,

10

Proverò a dare una risposta generale.

Come modificare i modelli

Nel tuo tema, puoi sovrascrivere qualsiasi phtmlfile dal tema predefinito o dal tema principale. Copia il file originale in app/design/frontend/[package]/[theme]/template/[path/to/phtml]e apporta le modifiche.

Se non hai ancora un tema personalizzato specifico per il progetto, ad esempio perché hai appena acquistato un tema, assicurati di crearne uno a

app/design/frontend/[original-package]/[project-name]

Erediterà da [original-package]/[default] , non è necessario copiare tutto per impostazione predefinita, solo i file in cui è necessario apportare modifiche.

Modifiche specifiche del modulo

Un'alternativa phtmlalla sostituzione del file è quella di modificare il percorso del modello. Questo di solito può essere fatto in XML layout come questo:

<reference name="the-block-name">
    <action method="setTemplate"><name>path/to/new/template.phtml</name></action>
</reference>

Ma questo è destinato ad essere utilizzato dai moduli che hanno bisogno di cambiare un modello, non per cambiamenti specifici del tema. Il nuovo modello dovrebbe essere inseritobase/default allora.

Come usare local.xml / theme.xml

Il local.xmlfile deve trovarsi nella directory del tema effettivo che si sta utilizzando, ad es

app/design/frontend/[package]/[theme]/layout

Più local.xmlfile nella gerarchia di fallback non vengono presi in considerazione. Viene utilizzato il primo di questi che è possibile trovare:

app/design/frontend/[package]/[theme]/layout/local.xml
app/design/frontend/[package]/default/layout/local.xml
app/design/frontend/base/default/layout/local.xml

(presupponendo una gerarchia predefinita e nessuna gerarchia definita personalizzata)

Come apportare modifiche

Dovresti avere solo modifiche in local.xml, non ripetere definizioni che sono già nei file XML originali. Ciò significa anche, evitare di copiare i file XML dal tema predefinito per apportare modifiche direttamente nei file. Mantieni layoutpulita la directory del tuo tema !

Gli elementi tipici local.xmlsono la <remove>rimozione completa dei blocchi esistenti <action method="unsetChild">e <action method="append">lo spostamento di un blocco da un genitore all'altro, oppure la chiamata a qualsiasi altro metodo su blocchi esistenti per modificarne il comportamento.

Magento 1.9

A partire da Magento 1.9, la migliore pratica è in realtà non utilizzare layout/local.xmlper questi cambiamenti, maetc/theme.xml

In breve, puoi aggiungere un aggiornamento del layout in app / design / frontend / yourpackage / etc / theme.xml. Il vantaggio è che hai il controllo sull'ordine di caricamento degli aggiornamenti del layout. Prima che Magento 1.9 local.xml fosse sempre caricato per ultimo, ed era impossibile far eseguire le direttive di layout dopo di esso.

Non sto più usando local.xml per modificare temi specifici del progetto. Penso che local.xml sia usato solo per motivi di compatibilità con le versioni precedenti (in 1.9 e successive) in quanto non ha più senso utilizzarlo. Local.xml è anche eliminato in Magento 2 ( https://github.com/magento/magento2/issues/1037 ).

Fonte: https://erfanimani.com/dont-use-local-xml/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.