2017-02-17 104 views
1

内的Magento的控件布局我加入一个有特色的产品小部件来使用的Magento 2内置的目录产品列表控件站点的主页。什么我希望做的是延长在vendor/magento/module-catolog/widget/etc/widget.xml发现,这样我可以与WYSIWIG编辑器CMS块添加此窗口小部件时添加其他模板选项窗口小部件的布局文件。扩展主题

现在,我已经位于app/design/frontend/Vendor/theme一个主题,我试图把我自己的widget.xml文件在app/design/frontend/Vendor/theme/Magento_CatalogWidget/widget.xml,但似乎这无法覆盖原始widget.xml文件。

这里是我的代码:

<widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Widget:etc/widget.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"> 
     <label translate="true">Catalog Products List</label> 
     <description translate="true">List of Products</description> 
     <parameters> 
      <parameter name="template" xsi:type="select" required="true" visible="true"> 
       <label translate="true">Template</label> 
       <options> 
        <option name="default" value="product/widget/content/grid.phtml" selected="true"> 
         <label translate="true">Products Grid Template</label> 
        </option> 
        <option name="default" value="product/widget/content/alternate-grid.phtml" selected="true"> 
         <label translate="true">Alternate Products Grid Template</label> 
        </option> 
       </options> 
      </parameter> 
     </parameters> 
    </widget> 
</widgets> 

我想模板参数中添加一个选项,这样我可以插入窗口小部件时选择一个“替代产品网格模板”。

下面是从magento-catalog-widget.xml文件:

<?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.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"> 
     <label translate="true">Catalog Products List</label> 
     <description translate="true">List of Products</description> 
     <parameters> 
      <parameter name="title" xsi:type="text" required="false" visible="true"> 
       <label translate="true">Title</label> 
      </parameter> 
      <parameter name="show_pager" xsi:type="select" visible="true" 
         source_model="Magento\Config\Model\Config\Source\Yesno"> 
       <label translate="true">Display Page Control</label> 
      </parameter> 
      <parameter name="products_per_page" xsi:type="text" required="true" visible="true"> 
       <label translate="true">Number of Products per Page</label> 
       <depends> 
        <parameter name="show_pager" value="1" /> 
       </depends> 
       <value>5</value> 
      </parameter> 
      <parameter name="products_count" xsi:type="text" required="true" visible="true"> 
       <label translate="true">Number of Products to Display</label> 
       <value>10</value> 
      </parameter> 
      <parameter name="template" xsi:type="select" required="true" visible="true"> 
       <label translate="true">Template</label> 
       <options> 
        <option name="default" value="product/widget/content/grid.phtml" selected="true"> 
         <label translate="true">Products Grid Template</label> 
        </option> 
       </options> 
      </parameter> 
      <parameter name="cache_lifetime" xsi:type="text" visible="true"> 
       <label translate="true">Cache Lifetime (Seconds)</label> 
       <description translate="true">86400 by default, if not set. To refresh instantly, clear the Blocks HTML Output cache.</description> 
      </parameter> 
      <parameter name="condition" xsi:type="conditions" visible="true" required="true" sort_order="10" 
         class="Magento\CatalogWidget\Block\Product\Widget\Conditions"> 
       <label translate="true">Conditions</label> 
      </parameter> 
     </parameters> 
     <containers> 
      <container name="content"> 
       <template name="grid" value="default" /> 
      </container> 
      <container name="content.top"> 
       <template name="grid" value="default" /> 
      </container> 
      <container name="content.bottom"> 
       <template name="grid" value="default" /> 
      </container> 
     </containers> 
    </widget> 
</widgets> 

我知道,如果我成功地扩展了文件,因为我已经尝试过编辑原始文件并添加在widget时看到我的新的选择,这将工作管理员。显然,这不是最好的做法,我希望widget.xml文件只能在我的自定义主题进行扩展。

请注意,我的模板放置在app/design/frontend/Vendor/theme/Magento_CatalogWidget/templates/product/widget/content之内,其中我有grid.phtmlalternate-grid.phtml。我没有把alternate-grid.phtmlmagento_catalog_widget目录中,但我可以改变原有的widget.xml文件在该目录中(超出我的主题),当访问它。这就是为什么我相当有信心,这个问题是重写的插件的布局文件的问题。

如果任何人都可以回答这个问题,我认为这可能是给其他开发者非常有帮助,以及因为这将允许开发者内置的小工具不与基本框架干涉任何Magento的范围内自定义选项。

回答

0

您需要创建app/design/frontend/Vendor/theme/etc/widget.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
/** 
* Copyright © 2013-2017 Magento, Inc. All rights reserved. 
* See COPYING.txt for license details. 
*/ 
--> 
<widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Widget:etc/widget.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"> 
     <label translate="true">Catalog Products List</label> 
     <description translate="true">List of Products</description> 
     <parameters> 
      <parameter name="template" xsi:type="select" required="true" visible="true"> 
       <label translate="true">Template</label> 
       <option name="list" value="product/widget/content/alternate-grid.phtml"> 
        <label translate="true">Alternate Products Grid Template</label> 
       </option> 
      </parameter> 
     </parameters> 
    </widget> 
</widgets>