I would like to make use of a product list widget but I need to use it with my own template file.
I want to create a widget via content -> widgets. This is different from utilizing a widget from a CMS page or block.
But there is only the default "Products Grid Template". So I found this post: Magento2: How to override widget template
But the solution explained does not work.
I am using magento 2.2.3. I created a custom module...
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="module.xsd">
<module name="Vendor_Module" setup_version="0.0.1">
<sequence>
<module name="Magento_CatalogWidget" />
</sequence>
</module>
...with a widget.xml in the module's etc/ folder:
<?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" class="Magento\CatalogWidget\Block\Product\ProductsList" is_email_compatible="true" placeholder_image="Magento_CatalogWidget::images/products_list.png" ttl="86400">
<parameters>
<parameter name="template" xsi:type="select" required="true" visible="true">
<label translate="true">Bestseller</label>
<options>
<option name="bestseller" value="Vendor_Module::widget/bestseller.phtml">
<label translate="true">Bestseller</label>
</option>
</options>
</parameter>
</parameters>
</widget>
And put my template file in
app/code/Vendor/Module/view/frontend/widget/bestseller.phtml
Cleared all caches but the template won't show up as an option in the widget's admin interface.
Any idea what could be wrong here?
Thank you
EDIT:
This template thing does not make any sense. I tried to dig into this by looking at other modules.
I took the mageplaza blog extension for instance. It comes with a similar widget:
<widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Widget:etc/widget.xsd">
<widget id="mageplaza_blog_posts" class="Mageplaza\Blog\Block\Widget\Posts">
<label translate="true">Mageplaza Blog</label>
<description>Mageplaza Blog Widget </description>
<parameters>
<parameter name="title" xsi:type="text" required="false" visible="true">
<label translate="true">Title</label>
</parameter>
<parameter name="post_count" xsi:type="text" required="true" visible="true">
<label translate="true">Numbers of Posts Display</label>
<value>5</value>
</parameter>
<parameter name="show_type" xsi:type="select" required="false" visible="true"
source_model="Mageplaza\Blog\Model\Config\Source\WidgetShowType">
<label translate="true">Show Type</label>
</parameter>
<parameter name="category_id" xsi:type="text" required="true" visible="true">
<label translate="true">Category ID</label>
<depends>
<parameter name="show_type" value="category" />
</depends>
<value>2</value>
</parameter>
<parameter name="template" xsi:type="select" required="true" visible="true">
<label translate="true">Template</label>
<options>
<option name="posts" value="Mageplaza_Blog::widget/posts.phtml" selected="true">
<label translate="true">Default Posts Template</label>
</option>
<option name="posts2" value="Mageplaza_Blog::widget/posts2.phtml">
<label translate="true">Default Posts Template2</label>
</option>
</options>
</parameter>
</parameters>
<containers>
<container name="content">
<template name="posts" value="posts" />
</container>
</containers>
</widget>
Now when I expand the widget.xml inside the module:
<options>
<option name="posts" value="Mageplaza_Blog::widget/posts.phtml" selected="true">
<label translate="true">Default Posts Template</label>
</option>
<option name="posts2" value="Mageplaza_Blog::widget/posts2.phtml">
<label translate="true">Default Posts Template2</label>
</option>
This does not have ANY effect whatsoever. There is no way to select the second template. It sticks to "Default Posts Template".