Cómo hacer que un diseño de módulo se muestre en todos los temas

13

Aquí está la situación: tengo varios módulos hechos a sí mismos, todos probados y trabajando con el tema predeterminado. Luego compramos e instalamos un nuevo tema. Cambió al nuevo tema y los módulos no se muestran. Después de varias pruebas de prueba / falla, descubrí que necesitaba copiar el diseño correspondiente y los archivos de plantilla en las carpetas correspondientes del tema recientemente instalado.

Entonces, mi pregunta es: ¿qué debo hacer para que todos mis módulos funcionen con cualquier tema instalado después de la configuración del módulo?

Yaroslav
fuente
1
Si coloca sus archivos de diseño en design / frontend / base / default / ... se mostrarán cualquiera que sea el tema
Sander Mangel

Respuestas:

17

Pon todo en los base/defaultcaminos.

Ejemplo:

app/design/frontend/base/default

skin/frontend/base/default

Mark Shust
fuente
¡Ay! no lo pensé, tienes razón, lo probará tan pronto como llegues a la oficina.
Yaroslav
+1: hay demasiados módulos etiquetados como "comunidad" que no siguen esta práctica y deberían hacerlo.
pspahn
La plantilla base se introdujo en Magento 1.4. para resolver exactamente este problema En versiones anteriores, copiar los archivos de plantillas, si no estaba usando el paquete predeterminado, era la forma de hacerlo.
Kristof en Fooman el
5

La dura verdad es que realmente no puedes garantizar que lo serán. Poner sus archivos base/default(o default/defaultsi anulan las plantillas centrales, ya que no desea sobrescribir los archivos base con una instalación de módulo, aunque esto obliga a mantener duplicados para la edición empresarial) garantizará que se conviertan en los fallos, pero los archivos de tema lo harán ser siempre el más alto nivel de prioridad.

La mayoría de los módulos vienen con una guía de instalación, que incluye mencionar copiar los archivos de plantilla al tema del usuario si tienen uno personalizado. Eso es lo mejor que puedes hacer.

Andrew Quackenbos
fuente
4

Una cosa que hemos usado un par de veces es el modulo [Fabrizio Branca] [1] [Custom Fallback] [2]. Es un módulo muy útil para especificar su propia jerarquía de respaldo de tema personalizado. Una cosa que puede hacer es especificar:

  1. custom/theme

  2. base/default

  3. default/default

Luego, cualquier módulo que ponga sus propias plantillas en el default/default tema. No funcionará si intentan anular base/defaultpaquetes.

Puede especificar cualquier número de paquetes / temas en la jerarquía de respaldo personalizada.

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

Luke Mills
fuente
2

Cualquier plantilla y archivo de diseño base/defaultse cargará a menos que se anule en algún lugar de la ruta. Sin embargo, si su módulo personalizado es un widget de algún tipo, entonces debe asegurarse de que se repita donde sea necesario. Si, por ejemplo, está realizando cambios que se muestran en la página del producto getChildHtml, entonces esas llamadas también deben estar en el tema correspondiente. Sin embargo, si las plantillas de su módulo son páginas en sí mismas y no se cargan base/default, entonces algo bloquea la configuración del diseño y debe encontrar qué.

Petar Dzhambazov
fuente
Muy interesante el comentario sobre el getChild , de hecho tengo algunas llamadas de este tipo.
Yaroslav
1

No hay una respuesta simple de esto. Depende de los módulos que tenga. Por ejemplo, algunas compañías de módulos anulan los archivos principales. Por lo tanto, primero debe comprobar qué archivos disponibles en la app/etc/modulesy app/code/local/Mage, app/code/community/Magecarpetas. Como ya sabrá, la primera carpeta es una carpeta de inicialización de módulo que puede deshabilitar o habilitar los módulos relacionados por archivos xml. Las dos últimas carpetas (si está disponible) son carpetas de anulación de código central.

Luego, abra uno de los archivos xml de ese etc/modulesdirectorio disponible . Verás algo como a continuación:

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

Aquí están las partes importantes son Companyy Namespace. Cuando visite las carpetas app/code/localo app/code/community, verá una carpeta llamada Companyy seguida por una subcarpeta llamada Namespace.

Cuando busque Namespace, verá una subcarpeta llamada /etc. Esta carpeta mantiene el archivo de configuración relacionado con el módulo config.xml. Este archivo tiene líneas de configuración relacionadas con el módulo que puede consultar qué archivos están relacionados con este módulo.

Como dije en mi primera línea, es difícil de manejar.

Oğuz Çelikdemir
fuente
Creo que te perdiste el punto de la pregunta. Estaba preguntando sobre las actualizaciones de diseño. La mejor práctica es usar una ruta base / default / yourmodule.
Mark Shust el