Почему существует / base / default / layout и / default / default layout? Это кажется запутанным и излишним.
Почему существует / base / default / layout и / default / default layout? Это кажется запутанным и излишним.
Ответы:
Короче говоря, default/default
это наследие от <1.4CE, где это был оригинальный базовый пакет. Основные темы Magento корабль в пакете по умолчанию до сих пор - так это не обязательно осуждается так же , как это наследство.
Поскольку default / default можно перезаписать при обновлении CE, не рекомендуется размещать файлы здесь - но плагины, пытающиеся обеспечить обратную совместимость с <1.3, могут намеренно размещать файлы здесь вместо base / default.
Источник: http://www.magentocommerce.com/knowledge-base/entry/magentos-theme-hierarchy#3.2
default
была очень полезным инструментом отладки.
Я нашел еще лучший ответ на официальной вики Magento . (Это с 2012 года, поэтому я не уверен, устарела ли какая-либо информация - но, похоже, она применима к 1.8.1 из того, что я могу сказать.) Хотя я настоятельно рекомендую прочитать ее полностью (нажмите жирным шрифтом) ссылка), позвольте мне резюмировать это ниже.
О чем /base
все?
/base/default
был представлен в CE 1.4 и EE 1.8 для консолидации всех функций интерфейса приложения-логики в единую кодовую базу, которую вы никогда не должны редактировать. Он имеет ту же структуру каталогов, что и пакет дизайна с темой по умолчанию , но в нем отсутствуют некоторые ключевые CSS-файлы, поэтому они не рекомендуют использовать его в качестве единственного пакета дизайна и темы.
Хорошей аналогией было бы сказать, что /base
это /design/frontend
то, что /core
нужно /code
. Вы не должны изменять файлы внутри /base
. Вместо этого вы должны расширить его функциональность в своем собственном пакете нестандартного дизайна , который Magento сначала заглянет внутрь, прежде чем вернется к нему /base/default
- сначала он заглянет внутрь /design/frontend/{custompackagename}/{customthemename}
, затем снова /design/frontend/{custompackagename}/default/
откроется, и, наконец, снова откроется /design/frontend/base/default
.
В самом деле, это просто следует рассматривать как /base
- /default
подкаталог существует только потому, что резервная система Magento завершает свой путь через каждый пакет дизайна в своей /default
теме . Для ясности, пакет дизайна - это подкаталог внутри /design/frontend
, а тема - это подкаталог в пакете дизайна. Когда Magento просматривает пакет дизайна, будь то /base
или нет /{custompackagename}
, /default
тема всегда будет последним местом, которое Magento будет искать.
Следовательно, поскольку основная цель /base
состоит в том, чтобы служить конечной точкой в резервной системе, в соответствии с этой целью у нее никогда не будет никакой другой темы, кроме /base/default
.
Почему /default
тогда?
Так почему же до сих пор /design/frontend/default/default
? А почему нет /design/adminhtml/base/default
? Если честно, я не знаю ответа на второй вопрос. Но позвольте мне попытаться ответить на первый.
Забыв унаследованную совместимость и т.д., я чувствую , что это могло бы быть гораздо легче понять , если это называли /generic/default
вместо /default/default
. Таким образом , для целей этой дискуссии я буду ссылаться /app/design/frontend/default/
и /app/skin/frontend/default/
коллективно как «общий дизайн упаковки». Я буду ссылаться на все внутри этих каталогов, как если бы они были вызваны /app/design/frontend/generic
и /app/skin/frontend/generic
. Поскольку (по крайней мере, в случае с внешним интерфейсом) резервная система Magento больше не используется /app/design/frontend/default/
, я чувствую, что продолжать называть ее «по умолчанию» сбивает с толку, так как это слово подразумевает, что что-то является частью резервной цепочки , но универсальный пакет дизайна больше не является часть резервной цепи с момента введения/base
, Поэтому, называя его «универсальным пакетом дизайна» вместо «стандартного пакета дизайна», мы избавляемся от этой путаницы, говоря, что да, это просто набор общих тем, которые поставляются с Magento бесплатно, не подразумевая, что это часть резервной цепочки. : D
Продолжая затем: общий дизайн упаковки имеет тему по умолчанию и несколько тем не по умолчанию внутри: /blank
, /iphone
и /modern
. Если тема не по умолчанию активна, то ее файлы будут переопределять что-либо в теме по умолчанию, но независимо от того, какая тема не по умолчанию активна, любые части темы по умолчанию универсального пакета, которые не были переопределены темой не по умолчанию по-прежнему беги, и дальше они переопределят что-нибудь в /base/default
. Наконец, любые не переопределенные части /base/default
запускаются.
Однако, что очень важно, ни одна часть универсального пакета дизайна никогда не будет запущена, если вы используете пакет нестандартного дизайна. Система запасного варианта идет прямо от {customdesignpackage}/{customthemename}
до {customdesignpackage}/default
к base/default
. (Если я не правильно понимаю, пожалуйста, поправьте меня, если я ошибаюсь.)
Тем не менее, удаление пакета универсального дизайна полностью без установки пакета индивидуального дизайна было бы неразумно, поскольку пакет универсального дизайна имеет некоторые элементы оболочки, которые все еще необходимы.