CMSページMagento 2内でPHTMLファイルを呼び出す方法


16

Magento 2

MagestoreからダウンロードしたサンプルBannersliderモジュールをインストールしました。

bannerslider.phtmlCMSホームページを呼び出すと、ホームページに信頼できないエラーが表示されます。

{{block class="Magento\Bannerslider\Block\Slideshow" template="bannerslider.phtml"}}

エラーメッセージは We're sorry, an error has occurred while generating this email.

ブロッククラスも変更しましたが、それでも同じエラーが表示されます。適切な方法を提案してもらえますか?

さらにコードの詳細が必要な場合は、コメントで私に言及してください。私は本当にここで立ち往生しています。

uncomentした後SetEnv MAGE_MODE developer.htaccess、ファイルのエラーメッセージが変更されてと示します

Error filtering template: Invalid block type: Magento\Bannerslider\Block\Slideshow

ところで、このモジュールの管理セクションは正常に動作しています。

ブロッククラス

namespace Magento\Bannerslider\Block;
use Magento\Framework\View\Element\Template;
use Magento\Framework\View\Element\Template\Context;
use Magento\Framework\Filesystem;
use Magento\Framework\App\Filesystem\DirectoryList;
class Slideshow extends Template
{
    public function __construct(
        Context $context,
        \Magento\Bannerslider\Model\BannerFactory $bannerFactory,
        \Magento\Framework\Filesystem $fileSystem,
        \Magento\Framework\StoreManagerInterface $storeManager,
        array $data = array()
    ) {
        $this->_fileSystem = $fileSystem;
        $this->_bannerFactory = $bannerFactory;
        $this->_storeManager = $storeManager;
        parent::__construct($context, $data);
    }
    public function _prepareLayout()
    {
        return parent::_prepareLayout();
    }
    public function getBaseJs($fileName){

        return $this->_storeManager->getStore()->getBaseUrl(
                \Magento\Framework\UrlInterface::URL_TYPE_MEDIA
            ).'bannerslider/js/'.$fileName;
    }
    public function getBannerData(){
        $banners = $this->_bannerFactory->create()
                        ->getCollection()
                        ->addFieldToFilter('status',1);
        foreach ($banners as $banner){
                $result['banners'][] = $banner->getData();
        }
        return $result;
    }
    public function getBannerImage($imageName) {

        $mediaDirectory = $this->_storeManager->getStore()->getBaseUrl(
                \Magento\Framework\UrlInterface::URL_TYPE_MEDIA
            );
        return $mediaDirectory.'bannerslider/images'.$imageName;
    }
}

Module.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Magento_Bannerslider" setup_version="1.0.0"/>
</config>

3
.htaccessファイルからSetEnv MAGE_MODE開発者のコ​​メントを外してエラーを生成する必要があります。
タラルPatoliya

ありがとう、タラル。やった エラーメッセージが変更されました。質問を編集しました。
Prafulラージプート

ブロッククラスとmodule.xmlコードを見せてください。
アミットベラ

投稿するブロッククラスとmodule.xmlコードを追加しました。
プラーフルラージプート

@TaralPatoliyaご提案ありがとうございます...本当に助かりました!
-DRAJI

回答:


35

cmsページでphtmlを呼び出したい場合は、cmsページで以下のコードを試してください。

{{block class="Magento\Bannerslider\Block\Slideshow" template="Magento_Bannerslider::bannerslider.phtml"}} 

21

magentoで、cmsページにブロッククラスを追加する場合は、以下のコードを実行できます

{{block class="Magento\Bannerslider\Block\Slideshow" template="Magento_Bannerslider::bannerslider.phtml"}} 

式は次のとおりです。

{{block class="[BlockClassFullName]" template="[VendorName]_[ModuleName]::[YourTemplateFileLocation].phtml"}} 

デフォルトのブロック:

{{block class="Magento\Framework\View\Element\Template" template="[VendorName]_[ModuleName]::[YourTemplateFileLocation].phtml"}} 

これは、Magento 1.Xバージョンコードと同じです。

{{ block type="core/template" template="YourtemplateFileLocation.phtml"}}

こんにちは@Amit、ここでcacheable = "false"を使用できますか?CMSで使用する場合
ジャファルpinjar

使用できますが、キャッシュ不可になります
Amit Bera

はい、私は1つを必要とする、CMSを使用する際の構文は何である、私はそれを使用しますが、それが機能しなかった
ジャファルpinjar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.