Чому існує макет / base / default / layout та макет / a / default / default? Це здається заплутаним та зайвим.
Чому існує макет / base / default / layout та макет / a / default / default? Це здається заплутаним та зайвим.
Відповіді:
Коротше кажучи, default/default
це спадщина від <1.4CE, де це був оригінальний базовий пакет. Основні теми Magento все ще поставляються у пакеті за замовчуванням - тому це не обов'язково застаріло настільки, як це є спадщиною.
Оскільки за умовчанням / за замовчуванням під час оновлення CE можна перезаписати, не доцільно розміщувати тут файли - але плагіни, які намагаються бути сумісними назад з <1.3, можуть навмисно розміщувати файли тут замість бази / за замовчуванням.
Джерело: 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
. (Якщо я не розумію це правильно; будь-ласка, виправте мене, якщо я помиляюся.)
Однак, видалення пакету загального дизайну повністю, не маючи спеціального пакета дизайну, було б нерозумно, оскільки пакет загального дизайну містить деякі елементи шкіри, які все ще необхідні.