Bir CMS sayfası Magento 2 içinde bir PHTML dosyası nasıl çağırılır?


16

Magento 2

Magestore'dan indirilen örnek Bannerslider modülünü kurdum.

bannerslider.phtmlCMS Giriş Sayfasını aradığımda , giriş sayfasında güvenilir olmayan bir hata gösteriyor.

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

Hata mesajı: We're sorry, an error has occurred while generating this email.

Blok sınıfını da değiştirdim, yine de aynı hatayı gösteriyor. Lütfen bana uygun bir yol önerebilir misin?

Daha fazla kod detayına ihtiyacınız varsa, lütfen yorumda bana bahsetti. Burada gerçekten sıkışıp kaldım.

Uncoment sonra SetEnv MAGE_MODE developeriçinde .htaccessdosya hata mesajı değişikliği olmak ve göstererek

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

Bu arada, bu modülün yönetici bölümü iyi çalışıyor.

Blok sınıfı

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
hatayı yeniden başlatmak için SetEnv MAGE_MODE geliştiricisini .htaccess dosyasından ayırmanız gerekir.
Taral Patoliya

Teşekkürler Taral. Ben yaptım. Şimdi hata mesajı değiştirildi. Şimdi sorumu düzenledim.
Praful Rajput

Lütfen bana blok sınıfınızı ve module.xml kodunuzu gösterin.
Amit Bera

Yazıya blok sınıfı ve module.xml kodu ekledim.
Praful Rajput

@TaralPatoliya Öneriniz için teşekkür ederim ... Bana gerçekten yardımcı oldu!
DRAJI

Yanıtlar:


35

Cms sayfasında phtml ile aramak istiyorsanız, aşağıdaki kodu cms sayfasında deneyin.

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

21

Magento'da, cms sayfasına blok sınıfı eklemek istiyorsanız, kodun altında tre yapabilirsiniz

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

Formül:

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

Varsayılan blok:

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

Bu Magento 1.X sürüm koduna eşittir

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

hi @Amit, burada cacheable = "false" kullanabilir miyiz? cms kullanıldığında
jafar pinjar 21:19

Kullanabilir ama önbelleğe alınamaz hale getirir
Amit Bera

Evet buna ihtiyacım var, cms kullanarak sözdizimi nedir, onu kullandım ama işe yaramadı
jafar pinjar 21:19
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.