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


10

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

Ответы:


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


Таким образом, я могу полностью стереть каталог / 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. (Если я не правильно понимаю, пожалуйста, поправьте меня, если я ошибаюсь.)

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.