Quand je lis la documentation sur les mises en page ( http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/layout-types.html#layout-types-page ) je vois que le les instructions suivantes dans ce document XML sont autorisées:
<container>
<referenceContainer>
<move>
<update>
Étant donné <referenceBlock name="block.name" remove="true" />
qu'aucune des instructions n'est autorisée, comment puis-je supprimer un certain élément dans une mise en page spécifique?
Ce que je veux pour les catégories supérieures, c'est un tout autre design de page. Je n'ai pas besoin de certains conteneurs et blocs pour cette conception. Pour ces catégories, je souhaite uniquement afficher les catégories enfants et non les produits.
La chose que j'ai faite maintenant, c'est d'ajouter les lignes suivantes dans ma mise en page: (in design\frontend\Vendor\Name-of-theme\Magento_Theme\page_layout\catalog-blocks.xml
)
<move element="category.image" destination="delete"></move>
<move element="category.description" destination="delete"></move>
<move element="category.products" destination="delete"></move>
<move element="page.main.title" destination="delete"></move>
Dans le design\frontend\Vendor\Name-of-theme\Magento_Theme\layouts.xml
j'ai ajouté:
<layout id="catalog-blocks">
<label translate="true">Catalog Blocks</label>
</layout>
J'ai donné à toutes les catégories supérieures cette mise en page de page de blocs de catalogue dans l'admin.
Ensuite, dans la mise en page principale ( design\frontend\Vendor\Name-of-theme\Magento_Theme\layout\default.xml
), j'ai ajouté:
<referenceBlock name="delete" remove="true" />
Ainsi, tout le bloc de suppression sera supprimé, avec toutes les choses que j'ai déplacées ici, dans la mise en page. Ça marche bien! Il réalise exactement ce que je veux mais le tout me semble un peu hackish.
Est-ce considéré comme une bonne pratique? Sinon, quelle serait une bonne alternative?
Edit 1 : Changé le remove
-tag dans ma question avec le bon pour éviter toute confusion.
Edit 2 : Quelques informations supplémentaires sur les fichiers et les emplacements de fichiers.
C'est la meilleure pratique pour supprimer tout bloc ou conteneur dans magento 2. Vous pouvez passer à l'
name attribute
intérieurname
dans l'élément ci-dessous.Vous pouvez rechercher dans le système magento 2, vous avez trouvé la syntaxe de nombreux endroits comme ci-dessus.
Sa méthode de recommandation magento. Si l'attribut remove = "true" alors ajoutez l'élément à lister supprimer de cette mise en page.
Dans magento 1
<remove> element
est valide mais dans Magento 2 vous devez définir la même syntaxe que ci-dessus.la source
<referenceBlock name="block.name" remove="true" />
(je me trompais sur laremove
balise) dans une mise en page directement carreferenceBlock
n'est pas autorisé non plus. Je dois toujoursmove
un élément à un «supprimer-conteneur», puis le supprimer dans le fichier de mise en page principal. Ce qui me semble étrange.<block class="Magento\Framework\View\Element\Html\Links" name="top.links">
, dans ce cas, vous pouvez utiliser<referenceBlock name="top.links" remove="true" />
Les mises en page ne sont censées être utilisées que pour créer une structure filaire / structure de la page et non pour des modifications plus petites telles que la suppression de blocs.
Pour supprimer un bloc uniquement pour votre nouvelle mise en page, je pense que la meilleure façon est de créer votre propre poignée de mise en page et d'y apporter les modifications. Par exemple, vous pouvez créer catalog_category_toplevel.xml qui utilise votre nouvelle structure filaire / disposition et supprimer les blocs qui s'y trouvent.
Comme il s'agit plus d'une tâche principale, je ne me sens pas assez à l'aise pour fournir des instructions pour cette excuse :( Ces deux articles d'Alan Storm peuvent vous aider avec ceci:
TL: DR
Si vous souhaitez le faire et suivre les meilleures pratiques, vous devez créer un nouveau descripteur de présentation.
la source