Почему существует / base / default / layout и / default / default layout?

10

Почему существует / base / default / layout и / default / default layout? Это кажется запутанным и излишним.

CommaToast
источник

Ответы:

7

Короче говоря, default/defaultэто наследие от <1.4CE, где это был оригинальный базовый пакет. Основные темы Magento корабль в пакете по умолчанию до сих пор - так это не обязательно осуждается так же , как это наследство.

Поскольку default / default можно перезаписать при обновлении CE, не рекомендуется размещать файлы здесь - но плагины, пытающиеся обеспечить обратную совместимость с <1.3, могут намеренно размещать файлы здесь вместо base / default.


Источник: http://www.magentocommerce.com/knowledge-base/entry/magentos-theme-hierarchy#3.2

philwinkle
источник
Таким образом, я могу полностью стереть каталог / design / frontend / default, и все будет работать отлично? Я имею в виду, что у меня будет только / base / default. Это нормально, верно? Кроме того, почему нет / base / default внутри / design / adminhtml или / design / install?
CommaToast
Это конечно возможно. EE поставляется без темы по умолчанию / по умолчанию.
Филвинкл
1
default / * не используются, если вы не укажете, что их пакет - это используемый пакет. Вы можете безопасно удалить каталог, если хотите, но имейте в виду, что он может быть восстановлен во время обновлений / установки.
Philwinkle
1
Вы можете включить подсказки шаблона и посмотреть, если какой-либо блок использует / default / default, если все еще сомневается.
Amasty
1
Я могу вспомнить, по крайней мере, несколько раз, когда возможность переключения дизайна / пакета defaultбыла очень полезным инструментом отладки.
pspahn
5

Я нашел еще лучший ответ на официальной вики 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. (Если я не правильно понимаю, пожалуйста, поправьте меня, если я ошибаюсь.)

Тем не менее, удаление пакета универсального дизайна полностью без установки пакета индивидуального дизайна было бы неразумно, поскольку пакет универсального дизайна имеет некоторые элементы оболочки, которые все еще необходимы.

CommaToast
источник