カスタムウィジェットでモジュールを作成しました。管理者にログインしてcontent->widgets
にアクセスし、インスタンスを作成し、そのインスタンスをホームページに表示するように設定すると、ウィジェットは期待どおりに表示されます。Magento2カスタムウィジェットが表示されない
このインスタンスを削除しました。content->pages
に行き、homepage -> content
セクションを編集し、insert widget
を選択してウィジェットを作成しようとしています。ウィジェットの新しいインスタンスを作成し、homepage -> content
セクションに追加のtext
を追加しました。
ホームページを読み込むと、text
の残りの部分が表示されますが、ウィジェットは表示されません。
ウィジェットのブロックが呼び出されています(私はこれをvar_dump
とexit
でテストしました)。
ただし、テンプレートはレンダリングされません。ここで
は私のブロックです:
<?php
namespace MyNamespace\Slider\Block\Widget;
use Magento\Framework\View\Element\Template;
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
use Magento\Catalog\Block\Product\Context;
class Slider extends Template
{
protected $_template = "Yamazaki_Slider::widget/slider.phtml";
/**
* @var CollectionFactory
*/
protected $_productCollectionFactory;
/**
* @var CollectionFactory
*/
protected $_imageHelper;
/**
* @param Context $context
* @param CollectionFactory $productCollectionFactory
*/
public function __construct(Context $context, CollectionFactory $productCollectionFactory)
{
$this->_imageHelper = $context->getImageHelper();
$this->_productCollectionFactory = $productCollectionFactory;
parent::__construct($context);
}
/**
* Retrieve featured products collection
*/
public function getProducts()
{
$collection = $this->_productCollectionFactory->create();
return $collection->addAttributeToSelect('*')->addAttributeToFilter('is_featured','1');
}
}
と私のテンプレート:
<?php $imageBlock = $block->getLayout()->createBlock('Magento\Catalog\Block\Product\ListProduct'); ?>
<?php foreach($this->getProducts() as $product): ?>
<?php $productImage = $imageBlock->getImage($product, 'product_page_image_large'); ?>
<?php echo $productImage->toHtml(); ?>
<?php endforeach ?>
私のモジュール内の他のファイルは、次のとおりです。
など/ 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="yamazaki_slider" class="MyNamespace\Slider\Block\Widget\Slider">
<label translate="true">My Image Slider</label>
<description>My Image Slider</description>
</widget>
</widgets>
module.xmlとregistration.p hp。
ウィジェット/モジュールに含まれていることに気づいたので、私はetc/layout.xml
ファイルを持っていません。これ、または他のファイルが必要ですか?私はcontent->pages->edit->content
内部「エディタを隠す」場合
また、私は次を参照してください。
<p>{{widget type="MyNamespace\Slider\Block\Widget\Slider"}}</p>`
私はコンテンツが、私は得ることができた