Magento 2 - тип темы 0: физическая, 1: виртуальная, 2: постановочная. Когда использовать?


30

В themeтаблице есть typeполе с 3 возможными значениями: физическое, виртуальное и промежуточное.

Когда использовать физическую виртуальную и сценическую тему?

Когда я расширил тему luma, моя новая тема появилась в таблице тем как виртуальный тип. Но похоже, что этот тип не позволяет переопределять некоторые файлы, и только изменение типа темы с виртуальной на физическую позволяет мне расширить, например, Magento_Themeпакет.


Хороший вопрос Может быть не уверен0: Physical - Magento Default Theme (Example: Magento Blank, Magento Luma, Magento 2 Backend) 1: Virtual - Custom Theme which is created by you (custom) which has parent as Default Theme (Example: My Theme) 2: Staging - ?
Анкит Шах

Обратитесь кvendor\magento\module-theme\Model\Theme\Registration.php /** Allowed sequence relation by type, array(parent theme, child theme) * @var array */ protected $_allowedRelations = [ [ThemeInterface::TYPE_PHYSICAL, ThemeInterface::TYPE_VIRTUAL], [ThemeInterface::TYPE_VIRTUAL, ThemeInterface::TYPE_STAGING],]; /** Forbidden sequence relation by type ** @var array*/ protected $_forbiddenRelations = [[ThemeInterface::TYPE_VIRTUAL, ThemeInterface::TYPE_VIRTUAL],[ThemeInterface::TYPE_PHYSICAL, ThemeInterface::TYPE_STAGING],];
Анкит Шах

Ответы:


32

Есть 3 различных типа, определенных в Magento/Framework/View/Design/ThemeInterface:

  • Физический тип
  • Виртуальный тип
  • Тип постановки

Физические темы

Физический относится к тому факту, что эти темы определяются файлами. Например, бланк и тема яркости физически определены вapp/design/frontend/

Виртуальные темы

Это пока неясно, но я думаю, что виртуальные темы относятся к темам, которые вы можете создать в бэкэнде, что расширяет существующие физические темы, но кажется, что они еще не полностью реализованы.

Вы можете видеть, что есть две вкладки, доступные в разделе редактирования только для виртуальных тем, которые позволяют вам предоставлять пользовательские CSS и JS для виртуальной темы.

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

Кнопка «Добавить виртуальную тему» ​​пока недоступна, но если вы выполните следующий запрос SQL, вы можете настроить виртуальную тему, и вы увидите вкладку CSS и JS при ее редактировании:

INSERT INTO `theme` (`theme_id`, `parent_id`, `theme_path`, `theme_title`, `preview_image`, `is_featured`, `area`, `type`, `code`) VALUES (NULL, '1', NULL, 'test', NULL, '0', 'frontend', '1', 'test/test');

И вот, две дополнительные вкладки и кнопки Сохранить / Удалить:

введите описание изображения здесь

Постановочные темы

Я считаю, что темы подготовки связаны с функцией подготовки Magento 2.1 EE: http://devdocs.magento.com/guides/v2.1/extension-dev-guide/staging/Staging.html

Я предполагаю, что вы можете иметь промежуточную тему при использовании кампании, но я не уверен на 100%.


Вы только что решили мою проблему прямо здесь, Раф! Спасибо - Элвин :)
Элвин Нгуен

1
Я столкнулся с проблемой со typeстолбцом в themeтаблице: я создал тему и каким-то образом typeполучил значение 1(вместо значения по умолчанию 0). Все мои изменения LESS / JS работали, но Magento не считывал файлы макетов из моей темы, пока я не изменил typeзначение на 0. Подробнее об этом здесь: nahuelsanchez.com/…
Эрик Хансен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.