2017-02-17 105 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>