Mục tiêu của một mô-đun tôi hiện đang phát triển là thêm một loại hình ảnh tùy chỉnh được gọi là "opengraph_image". Tôi đã thêm một thuộc tính EAV mới mặc dù tập lệnh InstallData.php của tôi hoạt động tốt. Khi tôi đăng nhập vào phụ trợ Magento2 và thay đổi sản phẩm, tôi có thể chọn loại hình ảnh "opengraph_image" trong khi tải lên hoặc chỉnh sửa hình ảnh sản phẩm.
Tuy nhiên, trên frontend tôi muốn hiển thị hình ảnh này. Do đó, tôi đã tạo một tệp etc / view.xml trong mô-đun của mình với nội dung sau:
<?xml version="1.0"?>
<view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Esites_SEO:etc/custom.xsd">
<media>
<images module="Magento_Catalog">
<image id="opengraph_image" type="opengraph_image">
<width>265</width>
<height>265</height>
</image>
</images>
</media>
</view>
Nhưng bây giờ tôi nhận được lỗi sau:
Invalid XML in file /var/www/html/vhosts/magento2/app/code/Esites/SEO/etc/view.xml:
Element 'image', attribute 'type': [facet 'enumeration'] The value 'opengraph_image' is not an element of the set {'thumbnail', 'small_image', 'image', 'swatch_image', 'swatch_thumb'}.
Line: 5
Element 'image', attribute 'type': 'opengraph_image' is not a valid value of the local atomic type.
Line: 5
Lý do là nó dường như không tải custom.xsd của tôi nằm ở: app/code/Esites/SEO/etc/custom.xsd
nơi tôi xác định opengraph_image. Thay vào đó, nó dường như chỉ tải tệp XSD mặc định của nó:vendor/magento/framework/Config/etc/view.xsd
Nội dung của custom.xsd của tôi là một bản sao (cho mục đích thử nghiệm) của view.xsd gốc này, nơi tôi đã thêm vào dòng sau trên dòng 75:
<xs:enumeration value="opengraph_image"/>
Giao diện không hoạt động mà không có lỗi nếu tôi bao gồm dòng trên trong tệp view.xsd gốc. Tôi đã làm theo tài liệu trên: http://devdocs.magento.com/guides/v2.0/extension-dev-guide/build/XSD-XML-validation.html và các đường dẫn của tôi được xây dựng theo thông tin trên trang đó. Bộ nhớ cache bị xóa nhiều lần.
Tôi đang thiếu gì?
module="Magento_Catalog"
thànhmodule="Esites_SEO"
?