Зачем использовать тему, когда у вас есть модули?

9

Внутри моего пользовательского модуля я добавил файл

Vendor/Theme/view/layout/default.xml

который я использую, чтобы переопределить многие глобальные шаблоны сайта с помощью шаблонов / блоков / макетов из пользовательского модуля. Я также прилагаю свой собственный глобальный стиль, который существует в view/webкаталоге в этом модуле.

Должен ли я использовать тему для этого вместо этого? Есть ли хороший аргумент для одного шаблона проектирования над другим? Например. используя app/designболее app/code?

Дэниел Томпсон
источник

Ответы:

13

Вы можете сделать все, что захотите, но если это правильно, вопрос здесь.

Модули

Модули должны добавлять или изменять функциональность интернет-магазина и должны / могут быть перенесены в другие интернет-магазины Magento 2. Модули могут иметь собственную компоновку, шаблоны и стили и могут изменять общую компоновку, шаблоны и стили, если это необходимо для функциональности вашего модуля. Модули в основном ориентированы на одну функциональность и поэтому (относительно) малы, что делает их доступными для многих интернет-магазинов Magento 2.

Модули могут быть легко включены и отключены, что приведет к появлению или исчезновению определенных функций, которые они добавляют или изменяют. Это не должно вызывать изменения всего сайта.

Темы

Темы изменяют макет, шаблоны и стили глобального интернет-магазина и не должны добавлять или удалять функциональные возможности. Хотя упакованные (платные) темы могут включать специальные функции, это чаще всего делается в модулях, сопровождающих такую ​​тему. Темы должны быть взаимозаменяемыми, поэтому их можно применять к любому интернет-магазину Magento 2, но также интернет-магазин Magento 2 может легко переключать темы (или иметь несколько, например, в настройке нескольких магазинов).


Поэтому, если вы спросите, где «переопределить многие глобальные шаблоны сайта с помощью шаблонов / блоков / макетов» , ответ будет в теме .

Опять же, вы можете делать все, что захотите, но если кто-то еще присоединится или возьмет на себя разработку, он / она ожидает, что глобальные изменения темы сайта будут в теме, а не в модуле. Когда все не так, как ожидалось, это замедляет разработку и усложняет обслуживание.

7ochem
источник
1
Точно, я хочу сделать все правильно. Оцените полезный ответ, я начну переносить некоторые из этих изменений в тему.
Дэниел Томпсон
3

Этот ответ - то, что я думал, это не могло быть стандартом Magento

Когда использовать тему для макета и шаблонов, а когда использовать модуль

тема

Когда вам нужно, чтобы ваши изменения были в одном месте, вам нужно показать, что ваши изменения должны выглядеть по-разному, в другом магазине или на сайте, и у вас есть несколько тем, тогда вы можете вносить изменения в тему напрямую

модуль

когда вы разрабатываете какой-либо модуль или расширение для требования и думаете, что ваши изменения должны быть глобальными, тогда вы помещаете макет и шаблон в сам модуль

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

Таким образом, вы можете решить такие проблемы, как если тема была изменена, то и ваши модули были там

Муртуза Забуавала
источник