Как сделать так, чтобы модуль отображался на всех темах

13

Вот ситуация: у меня есть несколько самодельных модулей, все протестированы и работают с использованием темы по умолчанию. Затем мы купили и установили новую тему. Перешли на новую тему и модули не показываются. После нескольких пробных / неудачных тестов я обнаружил, что мне нужно скопировать соответствующие файлы макета и шаблона в соответствующие папки недавно установленной темы.

Итак, мой вопрос: что я должен сделать, чтобы все мои модули работали с любой темой, установленной после установки модуля?

Ярослав
источник
1
Если вы разместите свои файлы макетов в design / frontend / base / default / ... они будут показаны независимо от темы
Сандер Мангель

Ответы:

17

Поместите все в base/defaultпути.

Пример:

app/design/frontend/base/default

skin/frontend/base/default

Марк Шуст
источник
Ой! не думал об этом, вы правы, будете тестировать, как только приедете в офис.
Ярослав
+1 - Есть слишком много модулей, помеченных как «сообщество», которые не следуют этой практике, и они должны.
pspahn
Базовый шаблон был введен в Magento 1.4. чтобы решить именно эту проблему. В более ранних версиях копирование файлов шаблонов, если вы не использовали пакет по умолчанию, было способом сделать это.
Кристоф на Fooman
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. Этот файл имеет строки конфигурации, относящиеся к модулю, с помощью которых вы можете указать, какие файлы связаны с этим модулем.

Как я сказал в своей первой строке, это трудно управлять.

Огуз Челикдемир
источник
Я думаю, что вы пропустили суть вопроса. Он спрашивал об обновлениях макета. Рекомендуется использовать путь base / default / yourmodule.
Марк Шуст