Чи є файл XML локального макета теми, крім local.xml?


14

Я створив тему, створивши та відредагувавши такий файл:

frontend/mypackage/default/layout/local.xml

У мене є перегляд магазину "site1", і я хочу зробити винятки з default.xml "mypackage" за замовчуванням, тому я створив цей файл:

frontend/mypackage/site1/layout/local.xml

Однак, як тільки я створю цей файл, Magento пропускає зміни за замовчуванням local.xml.

Як мені сказати Magento використовувати local.xml за замовчуванням та додати зміни в local1x local.xml до цього?


У жодному разі. Вибачте. Добре питання до речі.
user487772

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

Чи немає нічого подібного до default.xml? Або ми можемо зламати основний код Magento, який проходить xml-файли, щоб також перевірити наявність default.xml?
Джерард Ніжбоер

Відповіді:


7

Оскільки Magento 1.9 ви можете додати оновлення власної верстки etc/theme.xmlтаким чином:

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
        </updates>
    </layout>
</theme>

Якщо ви визначите такі теми макетів, як ця, замість цього local.xml, легко додати ще одне оновлення дочірньої теми.

На жаль, та сама проблема стосується теми.xml, що використовується лише та, яка є з вашої фактичної теми, а не одна з батьківських тем. Але дублювання набагато менше.

Приклад theme.xmlдля дочірньої теми:

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
            <my_child_theme>
                <file>my_child_theme.xml</file>
            </my_child_theme>
        </updates>
    </layout>
</theme>

Джерело та додаткова інформація: http://alanstorm.com/magento_infinite_fallback_theme_xml


5

Magento не об'єднує зміни local.xml з іншими файлами local.xml. Те, як працює резервна тема Magento, полягає в тому, що будь-який файл, знайдений у поточній темі / пакеті, буде віддавати перевагу та використовуватись над будь-яким іншим файлом теми / пакету з аналогічною назвою.

Таким чином, ви не можете створити об'єднане переопределення. Це буде можливо в Magento 2, але це неможливо в Magento 1.x.

На жаль, вам доведеться скопіювати його на локальну тему за замовчуванням і внести свої зміни туди.

Удачі.


2
+1. Це можна, безумовно, досягти програмно, але, безумовно, не буде гідним зусиль.
user487772

3

Філ абсолютно правий, але теоретично є рішення (не те, що досить).

Ви можете створити спеціальний модуль, який введе оновлення верстки. Потім у модулі ви можете перевірити, чи не перегляд магазину потрібний та видалити це оновлення макета.

Поганим у цьому підході є те, що ви будете жорстко кодувати вигляд магазину. І в цілому це виглядає не дуже.

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