Magento 2 - Thème Type 0: physique, 1: virtuel, 2: mise en scène. Quand utiliser?

30

Dans le themetableau, il y a un typechamp avec 3 valeurs possibles: physique, virtuel et intermédiaire.

Quand utiliser le thème physique virtuel et de mise en scène?

Lorsque j'ai étendu le thème luma, mon nouveau thème apparaît dans la table des thèmes en tant que type virtuel. Mais il semble que ce type ne permette pas de remplacer certains fichiers, et le changement de type de thème de virtuel à physique me permet d'étendre par exemple le Magento_Themepackage.

Pawel Dubiel
la source
Bonne question Peut-être pas sûr0: 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 - ?
Ankit Shah
Reportez-vous à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],];
Ankit Shah

Réponses:

32

Il existe 3 types différents définis dans Magento/Framework/View/Design/ThemeInterface:

  • Type physique
  • Type virtuel
  • Type de mise en scène

Thèmes physiques

Physique fait référence au fait que ces thèmes sont définis par des fichiers. Par exemple, le thème vide et luma sont physiquement définis sousapp/design/frontend/

Thèmes virtuels

Ce n'est pas encore clair, mais je pense que les thèmes virtuels se réfèrent à des thèmes que vous pouvez créer dans le backend qui étend les thèmes physiques existants, mais il semble que ce ne soit pas encore complètement implémenté.

Vous pouvez voir qu'il y a deux onglets disponibles dans la section d'édition uniquement pour les thèmes virtuels qui vous permettent de fournir des CSS et JS personnalisés pour un thème virtuel.

Je pense qu'un thème virtuel serait quelque chose que vous configurez temporairement (comme le thème de Noël) pour une courte période de thème et qui ne nécessite que peu de modifications de conception par rapport au thème physique qu'il étend.

Il n'y a pas encore de bouton Ajouter un thème virtuel disponible, mais si vous exécutez la requête SQL suivante, vous pouvez configurer un thème virtuel et vous verrez l'onglet CSS et JS lors de sa modification:

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');

Et c'est parti, deux onglets supplémentaires et des boutons Enregistrer / Supprimer:

entrez la description de l'image ici

Thèmes de mise en scène

Je pense que les thèmes de mise en scène sont liés à la fonctionnalité de mise en scène de Magento 2.1 EE: http://devdocs.magento.com/guides/v2.1/extension-dev-guide/staging/Staging.html

Je suppose que vous pouvez avoir un thème de mise en scène lors de l'utilisation d'une campagne, mais je ne suis pas sûr à 100%.

Raphael chez Digital Pianism
la source
Vous venez de résoudre mon problème ici, Raph! Merci - Alvin :)
Alvin Nguyen
1
J'ai rencontré un problème avec la typecolonne sur la themetable: j'ai créé un thème et la typevaleur a été définie 1(au lieu de la valeur par défaut 0). Toutes mes modifications LESS / JS ont fonctionné, mais Magento ne lirait aucun fichier de disposition de mon thème tant que je n'aurais pas changé la typevaleur en 0. Plus d'informations à ce sujet ici: nahuelsanchez.com/…
Erik Hansen