Sie können das Widget in Ihrem Modul erweitern.
Dazu muss Ihr Modul von dem Modul abhängen, in dem das ursprüngliche Widget definiert ist (siehe Reihenfolge in der module.xml).
Dann erstellen Sie eine widget.xml in Ihrem etc-Verzeichnis.
Der Schlüssel ist, nicht die Datei widget.xsd zu verwenden (es sind viele Felder erforderlich, die Sie nicht zum Erweitern benötigen), sondern die Datei widget_file.xsd.
Hier ist ein Beispiel zum Hinzufügen einer Vorlage zum statischen Block-Widget:
<?xml version="1.0" encoding="UTF-8"?>
<widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Widget:etc/widget_file.xsd">
<widget id="cms_static_block">
<parameters>
<parameter name="template" xsi:type="select">
<options>
<option name="option_id" value="Your_Module::view/form.phtml">
<label translate="true">Your Template</label>
</option>
</options>
</parameter>
</parameters>
</widget>
</widgets>
Hier ist ein weiteres Beispiel mit einer Containerkonfiguration, um die Vorlage für bestimmte Container zuzulassen:
<?xml version="1.0" encoding="UTF-8"?>
<widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Widget:etc/widget_file.xsd">
<widget id="products_list">
<parameters>
<parameter name="template" xsi:type="select">
<options>
<option name="slider" value="Vendor_Module::product/widget/content/slider.phtml">
<label translate="true">Products Slider Template</label>
</option>
</options>
</parameter>
</parameters>
<containers>
<container name="content">
<template name="slider" value="slider" />
</container>
<container name="content.top">
<template name="slider" value="slider" />
</container>
<container name="content.bottom">
<template name="slider" value="slider" />
</container>
</containers>
</widget>
</widgets>
Invalid Document Element 'label': This element is not expected. Line: 34
Die Zeile 34, auf die sich dieser Fehler bezieht, befindet sich in vendor / magento / module-catalog-widget / etc / widget.xml. Können Sie versuchen, ein Modul zu erstellen? und Implementierung Ihrer Lösung, um eine Vorlage in dieses Widget aufzunehmen? Ich denke, Sie können den gleichen Fehler wie ich bekommen. Wenn Sie dies tun, werde ich eine Ausgabe auf Github einreichen. Wenn nicht, werde ich zumindest wissen, dass ich etwas falsch mache.products_list
Widget. Wenn Sie den ID-Parameter auf dem Widget-Knoten in products_list geändert haben, wird wahrscheinlich derselbe Fehler angezeigt, den ich sehe.Sie können die grid.phtml ersetzen, in der Sie das Widget aufrufen
quelle
Erstellen Sie ein benutzerdefiniertes Design, kopieren Sie die HTML-Datei und nehmen Sie Ihre Änderungen vor.
app/design/frontend/<package>/<theme>/Magento_Catalog_Wiget/templates/product/widget/content/grid.phtml
quelle
<module>/view/frontend/templates/
und Sie würden die Datei in Ihrem XML genauso angeben wie CatalogWidget. Selbst wenn Sie CatalogWidget erweitern und Ihre Vorlage dies ist<module>/view/frontend/templates/product/widget/content/grid.phtml
, hat die Datei in Ihrem benutzerdefinierten Modulverzeichnis Vorrang.Ich hatte den gleichen Fehler: Ungültiges Dokumentelement 'label': Dieses Element wird nicht erwartet. Zeile: 34 mit products_list Dies funktionierte für mich ( Magento 2.0.4 ) widget.xml- Datei in Ihrem benutzerdefinierten Modul:
quelle
label
Tag hinzufügen (Widgets> Widget> Parameter> Parameter> Label) und dann funktionierte es. Dascontainers
ist also nicht erforderlich.Ich habe eine Voreinstellung für die Widgets-Blockklasse erstellt, die den Vorlagenpfad relativ zum Modulverzeichnis erstellt.
di.xml:
Klasse:
Jetzt wird die Vorlage in
Vendor/Module/view/frontend/templates/product/widget/content/grid.phtml
anstelle von verwendetMagento/CatalogWidget/view/frontend/templates/product/widget/content/grid.phtml
quelle