bạn có thể mở rộng các widget trong mô-đun của bạn.
Để làm được điều đó, mô-đun của bạn phải phụ thuộc vào mô-đun nơi tiện ích gốc được xác định (xem trình tự trong mô-đun).
Sau đó, bạn tạo một widget.xml trong thư mục vv của bạn.
Điều quan trọng là, không sử dụng widget.xsd (có nhiều trường bắt buộc mà bạn không cần phải mở rộng) mà là widget_file.xsd.
Dưới đây là một ví dụ để thêm một mẫu vào tiện ích khối tĩnh:
<?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>
Dưới đây là một ví dụ khác với cấu hình bộ chứa, để cho phép mẫu cho các bộ chứa cụ thể:
<?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
Dòng 34 lỗi này được đề cập là trong nhà cung cấp / magento / module-catalog-widget / etc / widget.xml Bạn có thể thử tạo mô-đun không và thực hiện giải pháp của bạn để bao gồm một mẫu trong widget đó? Tôi nghĩ rằng bạn có thể nhận được cùng một lỗi như tôi. Nếu bạn làm tôi sẽ gửi một vấn đề trên github. Nếu không ít nhất tôi sẽ biết mình đang làm gì đó sai.