¿Por qué hay un diseño / base / default / y un diseño / default / default? Esto parece confuso y redundante.
¿Por qué hay un diseño / base / default / y un diseño / default / default? Esto parece confuso y redundante.
Respuestas:
En resumen, default/default
es legado de <1.4CE donde era el paquete base original. Los temas principales de Magento todavía se envían en el paquete predeterminado, por lo que no necesariamente está en desuso sino que es heredado.
Debido a que default / default se puede sobrescribir durante las actualizaciones de CE, no es aconsejable que coloque los archivos aquí, pero los complementos que intentan ser compatibles con versiones anteriores de <1.3 pueden colocar archivos aquí intencionalmente en lugar de base / default.
Fuente: http://www.magentocommerce.com/knowledge-base/entry/magentos-theme-hierarchy#3.2
default
fue una herramienta de depuración muy útil.
Encontré una respuesta aún mejor en el wiki oficial de Magento . (Es de 2012, por lo que no estoy seguro de si alguna de la información está desactualizada, pero parece ser aplicable a 1.8.1 por lo que puedo decir). Si bien recomiendo encarecidamente que la lea en su totalidad (haga clic en negrita enlace), permítanme resumirlo a continuación.
¿De qué se trata /base
todo esto?
/base/default
se introdujo en CE 1.4 y EE 1.8 para consolidar toda la funcionalidad front-end de tipo lógica de aplicación en una única base de código que nunca debe editar. Tiene la misma estructura de directorio que un paquete de diseño con un tema predeterminado , pero le faltan algunos archivos CSS clave, por lo que no recomiendan que lo tenga como su único paquete y tema de diseño.
Una gran analogía sería decir que eso /base
es /design/frontend
lo que /core
es /code
. Se supone que no debes modificar los archivos que contiene /base
. En su lugar, se supone que debe extender su funcionalidad en su propio paquete de diseño personalizado , que Magento examinará primero antes de que vuelva a funcionar /base/default
: primero lo verá /design/frontend/{custompackagename}/{customthemename}
, luego volverá a funcionar /design/frontend/{custompackagename}/default/
y, por último, volverá a funcionar /design/frontend/base/default
.
Realmente, solo debe considerarse como /base
: el /default
subdirectorio solo está allí porque el sistema de respaldo de Magento completa su viaje a través de cada paquete de diseño en su /default
tema . Para ser claros, un paquete de diseño es un subdirectorio dentro /design/frontend
y el tema es un subdirectorio dentro de un paquete de diseño. Cuando Magento revisa un paquete de diseño, ya sea /base
o no /{custompackagename}
, el /default
tema siempre será el último lugar donde buscará Magento.
Por lo tanto, dado que el propósito principal de /base
es servir como el punto final en el sistema de reserva, de acuerdo con ese propósito, nunca tendrá otro tema que no sea /base/default
.
¿Por qué hay un /default
entonces?
Entonces, ¿por qué todavía hay un /design/frontend/default/default
? ¿Y por qué no hay un /design/adminhtml/base/default
? Para ser sincero, no sé la respuesta a la segunda pregunta. Pero déjame intentar responder la primera.
Olvidando la compatibilidad heredada, etc., creo que sería mucho más fácil de entender si se llamara en /generic/default
lugar de /default/default
. Por lo tanto, a los fines de esta discusión, me referiré /app/design/frontend/default/
y /app/skin/frontend/default/
colectivamente al "paquete de diseño genérico". Me referiré a todo dentro de esos directorios como si se llamaran /app/design/frontend/generic
y /app/skin/frontend/generic
. Dado que (al menos en el caso de la interfaz de usuario) el sistema de reserva de Magento ya no recurre /app/design/frontend/default/
, creo que seguir llamándolo "predeterminado" es confuso ya que esa palabra implica que algo es parte de la cadena de reserva , pero el paquete de diseño genérico ya no es parte de la cadena alternativa a partir de la introducción de/base
. Por lo tanto, llamarlo el "paquete de diseño genérico" en lugar del "paquete de diseño predeterminado" alivia esta confusión al decirnos que sí, es solo el conjunto de temas genéricos que viene con Magento de forma gratuita, sin implicar que es parte de la cadena alternativa. :RE
Continuando a continuación: el paquete de diseño genérico tiene un tema predeterminado y varios temas no predeterminados en el interior: /blank
, /iphone
, y /modern
. Si un tema no predeterminado está activo, sus archivos anularán cualquier cosa en el tema predeterminado, pero no importa qué tema no predeterminado esté activo, cualquier parte del tema predeterminado del paquete genérico que no haya sido anulada por el tema no predeterminado todavía se ejecutan, y además anularán cualquier cosa en /base/default
. Finalmente, cualquier parte no anulada de /base/default
get run.
Sin embargo, críticamente, ninguna parte del paquete de diseño genérico se ejecutará si está utilizando un paquete de diseño personalizado. El sistema de reserva va directamente desde {customdesignpackage}/{customthemename}
a {customdesignpackage}/default
a base/default
. (A menos que no comprenda esto correctamente; corríjame si me equivoco).
Dicho esto, eliminar el paquete de diseño genérico completamente sin tener un paquete de diseño personalizado en su lugar sería imprudente ya que el paquete de diseño genérico tiene algunos elementos de máscara que aún son necesarios.