Come creare un layout del modulo da mostrare su tutti i temi


13

Ecco la situazione: ho diversi moduli self made, tutti testati e funzionanti usando il tema predefinito. Quindi abbiamo acquistato e installato un nuovo tema. Passato al nuovo tema e i moduli non vengono visualizzati. Dopo diversi test try / fail ho scoperto che dovevo copiare i file di layout e template corrispondenti nelle cartelle corrispondenti del tema installato di recente.

Quindi, la mia domanda è: cosa devo fare per far funzionare tutti i miei moduli con qualsiasi tema installato dopo l'installazione del modulo?


1
Se metti i tuoi file di layout in design / frontend / base / default / ... verranno mostrati qualunque sia il tema
Sander Mangel

Risposte:


17

Metti tutto nei base/defaultsentieri.

Esempio:

app/design/frontend/base/default

skin/frontend/base/default


Ahia! non ci ho pensato, hai ragione, proverò non appena arrivato in ufficio.
Yaroslav,

+1 - Ci sono troppi moduli là fuori etichettati come "comunità" che non seguono questa pratica e dovrebbero.
pspahn,

Il modello di base è stato introdotto in Magento 1.4. per risolvere esattamente questo problema. Nelle versioni precedenti la copia dei file dei modelli, se non si utilizzava il pacchetto predefinito, era il modo per farlo.
Kristof a Fooman il

5

La dura verità è che non puoi davvero garantire che lo saranno. Inserendo i tuoi file base/default(o default/defaultse sovrascrivono i modelli di base - poiché non vuoi sovrascrivere i file di base con un'installazione del modulo, anche se questo ti costringe a conservare i duplicati per l'edizione enterprise) ti garantiranno che diventeranno fallback, ma i file di temi avere sempre la massima priorità.

La maggior parte dei moduli include una guida all'installazione, che include la menzione per copiare i file modello sul tema dell'utente se ne hanno uno personalizzato. Questo è il meglio che puoi fare.


4

Una cosa che abbiamo usato un paio di volte è il [Custom Fallback] [2] di [Fabrizio Branca] [1]. È un modulo molto utile per specificare la propria gerarchia di fallback del tema personalizzato. Una cosa che puoi fare è specificare:

  1. custom/theme

  2. base/default

  3. default/default

Quindi tutti i moduli che inseriscono i propri modelli nel default/defaulttema. Non funzionerà se stanno cercando di sovrascrivere i base/defaultpacchetti.

È possibile specificare qualsiasi numero di pacchetti / temi nella gerarchia di fallback personalizzata.

[1]: http://www.fabrizio-branca.de/ [2]: http://www.fabrizio-branca.de/custom-design-fallbacks-in-magento.html


2

Qualsiasi modello e file di layout base/defaultverrà caricato a meno che non venga sovrascritto da qualche parte lungo il percorso. Tuttavia, se il tuo modulo personalizzato è un widget di qualche tipo, allora dovresti assicurarti che venga ripetuto dove mai necessario. Se, ad esempio, stai apportando modifiche che vengono visualizzate nella pagina del prodotto tramite getChildHtml, anche quelle chiamate dovrebbero essere nel tema corrispondente. Se tuttavia i tuoi modelli di modulo sono pagine da soli e non vengono caricati base/default, qualcosa blocca la configurazione del layout e dovresti trovare cosa.


Molto interessante il commento sul getChild, ho davvero alcune chiamate di questo tipo.
Yaroslav,

1

Non c'è una risposta semplice a questo. Dipende dai moduli che hai. Ad esempio, alcune società di moduli, sovrascrivendo i file core. Pertanto, si dovrebbe innanzitutto verificare quali file disponibili nelle app/etc/modulese app/code/local/Mage, app/code/community/Magecartelle. Come forse saprai, la prima cartella è una cartella di inizializzazione del modulo che è possibile disabilitare o abilitare i moduli relativi ai file XML. Le ultime due cartelle (se disponibili) sono cartelle prioritarie di codice principale.

Quindi, apri uno dei file xml nella directory disponibile etc/modules. Vedrai qualcosa di simile di seguito:

<?xml version="1.0"?>
<config>
<modules>
    <Company_Namespace>
        <active>true</active>
        <codePool>local</codePool>
    </Company_Namespace>
</modules>

Ecco le parti importanti sono Companye Namespace. Quando visiti le cartelle app/code/localo app/code/community, vedrai una cartella denominata Companye seguita da una sottocartella denominata Namespace.

Durante la ricerca Namespace, vedrai una sottocartella denominata /etc. Questa cartella mantiene il file di configurazione relativo al modulo config.xml. Questo file ha linee di configurazione relative al modulo che puoi fare riferimento a quali file sono correlati a questo modulo.

Come ho detto nella mia prima riga, è difficile da gestire.


Penso che ti sia sfuggito il punto della domanda. Stava chiedendo degli aggiornamenti del layout. È consigliabile utilizzare un percorso base / default / yourmodule.
Mark Shust,
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.