Wenn ich die Dokumentation zu Seitenlayouts lese ( http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/layout-types.html#layout-types-page ), sehe ich, dass die Die folgenden Anweisungen in diesem XML-Dokument sind zulässig:
<container>
<referenceContainer>
<move>
<update>
<referenceBlock name="block.name" remove="true" />
Wie kann ich ein bestimmtes Element in einem bestimmten Seitenlayout entfernen, da dies keine der zulässigen Anweisungen ist?
Was ich für die Top-Kategorien möchte, ist ein ganz anderes Seitendesign. Ich brauche keine bestimmten Behälter und Blöcke für dieses Design. Für diese Kategorien möchte ich nur untergeordnete Kategorien und nicht die Produkte anzeigen.
Ich habe jetzt die folgenden Zeilen in mein Seitenlayout eingefügt: (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>
In dem habe design\frontend\Vendor\Name-of-theme\Magento_Theme\layouts.xml
ich hinzugefügt:
<layout id="catalog-blocks">
<label translate="true">Catalog Blocks</label>
</layout>
Ich habe allen Top-Kategorien dieses Katalogs Block-Seitenlayout im Admin gegeben.
Dann habe design\frontend\Vendor\Name-of-theme\Magento_Theme\layout\default.xml
ich im Hauptlayout ( ) hinzugefügt:
<referenceBlock name="delete" remove="true" />
Der gesamte Löschblock wird also mit allen Dingen, die ich hierher verschoben habe, im Seitenlayout gelöscht. Das funktioniert gut! Es erreicht genau das, was ich will, aber das Ganze scheint mir ein wenig hackisch.
Wird dies als gute Praxis angesehen? Wenn nicht, was wäre eine gute Alternative?
Edit 1 : Das remove
-tag in meiner Frage wurde durch das richtige geändert , um Verwirrung zu vermeiden.
Bearbeiten 2 : Weitere Informationen zu den Dateien und Speicherorten.
Dies ist die beste Vorgehensweise zum Entfernen von Blöcken oder Behältern in Magento 2. Sie können das folgende Element im
name attribute
Inneren passierenname
.Sie können innerhalb des Magento 2-Systems suchen, Sie haben viele Orte Syntax wie oben gefunden.
Seine magento Empfehlung Weg. Wenn Attribut remove = "true", dann fügen Sie das Element zur Liste entfernen aus diesem Layout.
In Magento 1
<remove> element
ist gültig, aber in Magento 2 müssen Sie die Syntax wie oben festlegen.quelle
<referenceBlock name="block.name" remove="true" />
(ich habe mich in Bezug auf dasremove
Tag geirrt ) direkt in einem Seitenlayout zu verwenden, da dies ebenfallsreferenceBlock
nicht zulässig ist. Ich sollte nochmove
ein Element zu einem 'Löschcontainer' und dann in der Hauptlayoutdatei löschen. Was mir seltsam erscheint.<block class="Magento\Framework\View\Element\Html\Links" name="top.links">
, in diesem Fall können Sie verwenden<referenceBlock name="top.links" remove="true" />
Die Seitenlayouts sollten nur zum Erstellen eines Drahtgitters / einer Drahtstruktur der Seite verwendet werden und nicht für kleinere Änderungen wie das Entfernen von Blöcken.
Um einen Block nur für Ihr neues Layout zu entfernen, ist es meiner Meinung nach am besten, ein eigenes Layout-Handle zu erstellen und die Änderungen dort vorzunehmen. Sie können beispielsweise catalog_category_toplevel.xml erstellen, die Ihr neues Drahtmodell / Layout verwendet, und die darin enthaltenen Blöcke entfernen.
Da dies eher eine Back-End-Aufgabe ist, fühle ich mich nicht wohl genug, um Anweisungen für diese Entschuldigung zu geben :( Diese beiden Artikel von Alan Storm können Ihnen dabei helfen:
TL: DR
Wenn Sie dies tun und bewährte Methoden befolgen möchten, müssen Sie ein neues Layout-Handle erstellen.
quelle