Як зробити макет модуля, який повинен бути показаний на всі теми


13

Ось така ситуація: у мене є декілька самостійно виготовлених модулів, всі перевірені та працюють із використанням теми за замовчуванням. Тоді ми купили та встановили нову тему. Переключено на нову тему, і модулі не відображаються. Після декількох тестів на випробування / помилки я виявив, що мені потрібно скопіювати відповідні файли макета та шаблону у відповідні папки нещодавно встановленої теми.

Отже, моє запитання: що мені робити для того, щоб усі мої модулі працювали з будь-якою темою, встановленою після налаштування модуля?


1
Якщо ви розмістите файли макета в дизайні / frontend / base / default / ..., вони будуть показані незалежно від теми
Sander Mangel

Відповіді:


17

Покладіть все на base/defaultстежки.

Приклад:

app/design/frontend/base/default

skin/frontend/base/default


Ой! не думав про це, ти маєш рацію, перевіриш, як тільки приїдеш до офісу.
Ярослав

+1 - Занадто багато модулів, позначених як "громада", які не дотримуються цієї практики, і вони повинні.
pspahn

Базовий шаблон був представлений у Magento 1.4. вирішити саме цю проблему. У попередніх версіях способом це було копіювання файлів шаблонів, якщо ви не використовували пакет за замовчуванням.
Крістоф у Фомані

5

Важка правда полягає в тому, що ти не можеш реально гарантувати, що вони будуть. Якщо розмістити ваші файли base/default(або default/defaultякщо вони замінять основні шаблони - оскільки ви не хочете перезаписувати базові файли при встановленні модуля, хоча це змушує вас зберігати дублікати для корпоративного видання), гарантує, що вони стануть резервними копіями, але файли тем завжди бути пріоритетом найвищого рівня.

Більшість модулів оснащені посібником із встановлення, який включає згадування про копіювання файлів шаблонів на тему користувача, якщо у них є спеціальний. Це про найкраще, що ви можете зробити.


4

Одне, що ми використовували кілька разів, - це [Fabrizio Branca] [1] '[Custom Fallback] [2] модуль. Це дуже корисний модуль для визначення власної ієрархії резервної теми. Що ви можете зробити, це вказати:

  1. custom/theme

  2. base/default

  3. default/default

Потім будь-які модулі, які розміщують власні шаблони в default/defaultтемі. Не буде працювати, якщо вони намагаються перекрити base/defaultпакунки.

Ви можете вказати будь-яку кількість пакетів / тем у спеціальній ієрархії резервного копіювання.

[1]: http://www.fabrizio-branca.de/ [2]: http://www.fabrizio-branca.de/custom-design-fallbacks-in-magento.html


2

Будь-який файл шаблону та макета в base/defaultбуде завантажений, якщо він не буде замінений десь на шляху. Однак якщо ваш користувальницький модуль є якимсь віджетом, то вам слід переконатися, що він лунає там, де це потрібно. Якщо ви, наприклад, вносите зміни, які відображаються на сторінці продукту getChildHtml, то вони також повинні відповідати темі. Якщо шаблони вашого модуля - це самі по собі сторінки, і вони не завантажуються base/default, то щось блокує конфігурацію макета, і ви повинні знайти що.


Дуже цікавий коментар з приводу цього getChild, я справді маю подібні дзвінки.
Ярослав

1

На це немає простої відповіді. Це залежить від модулів, які у вас є. Наприклад, деякі компанії-модулі, що переосмислюють основні файли. Тому спочатку слід перевірити, які файли доступні у папках app/etc/modulesта app/code/local/Mage, а також у app/code/community/Mageпапках. Як ви можете знати, перша папка - це папка ініціалізації модуля, яку ви можете відключити або включити модулі, пов'язані з файлами xml. Останні дві папки (якщо вони доступні) - основні папки, що перекривають основний код.

Потім відкрийте один із файлів xml, який доступний etc/modules. Ви побачите щось на зразок нижче:

<?xml version="1.0"?>
<config>
<modules>
    <Company_Namespace>
        <active>true</active>
        <codePool>local</codePool>
    </Company_Namespace>
</modules>

Ось важливі частини є Companyі Namespace. Відвідавши папки app/code/localабо app/code/communityпапки, ви побачите папку, названу Companyта наступну за підкатами Namespace.

Під час пошуку Namespaceви побачите підпапку з назвою /etc. Цей конфігураційний файл, що зберігає модуль, містить модуль config.xml. Цей файл має конфігураційні рядки, пов’язані з модулем, за якими можна вказати, які файли стосуються цього модуля.

Як я вже говорив у своєму першому рядку, це важко керувати.


Я думаю, ви пропустили суть питання. Він запитував про оновлення верстки. Найкраща практика - використовувати шлях базового / за замовчуванням / вашого модуля.
Марк Шуст
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.