Bagaimana cara memanggil file PHTML dalam halaman CMS Magento 2?


16

Magento 2

Saya telah menginstal sampel modul Bannerslider yang diunduh dari Magestore.

Ketika saya menelepon bannerslider.phtmlke Halaman Utama CMS, itu menunjukkan kesalahan tidak dapat diandalkan di halaman rumah.

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

Pesan kesalahan adalah We're sorry, an error has occurred while generating this email.

Saya mengubah kelas blok juga, masih menunjukkan kesalahan yang sama. Bisakah Anda menyarankan saya cara yang tepat?

Jika Anda membutuhkan detail kode lebih lanjut, Tolong sebutkan saya dalam komentar. Saya benar-benar terjebak di sini.

Setelah uncoment SetEnv MAGE_MODE developerdalam .htaccesspesan kesalahan file diubah dan ditampilkan

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

Ngomong-ngomong, admin bagian dari modul ini berfungsi dengan baik.

Blokir kelas

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
Anda perlu membatalkan SetEnv MAGE_MODE pengembang dari file .htaccess untuk mengurangi kesalahan.
Taral Patoliya

Taral terima kasih. Saya telah selesai melakukannya. Sekarang pesan kesalahan telah diubah. Saya telah mengedit pertanyaan saya sekarang.
Praful Rajput

Tolong tunjukkan padaku kelas blok dan kode module.xml Anda.
Amit Bera

Saya telah menambahkan kode blok class dan module.xml ke posting.
Praful Rajput

@ TaralPatoliya Terima kasih atas saran Anda ... Ini sangat membantu saya!
DRAJI

Jawaban:


35

Coba kode di bawah ini di halaman cms, Jika Anda ingin memanggil phtml dengan halaman cms.

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

21

Di magento, jika Anda ingin menambahkan kelas blok di halaman cms, maka Anda dapat menggunakan kode di bawah ini

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

Formula adalah:

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

Blok default:

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

Ini sama dengan kode versi Magento 1.X

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

hai @Amit, bisakah kita menggunakan cacheable = "false" di sini? bila digunakan dalam cms
jafar pinjar

Dapat digunakan tetapi itu membuat Anda membuat non Cacheable
Amit Bera

Ya saya membutuhkan yang itu, apa sintaks dalam menggunakan cms, saya menggunakannya tetapi tidak berhasil
jafar pinjar
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.