CMS पेज Magento 2 के भीतर PHTML फ़ाइल कैसे कॉल करें?


16

Magento 2

मैंने Magestore से डाउनलोड किया गया बैनस्लाइडर मॉड्यूल नमूना स्थापित किया है।

जब मैं bannerslider.phtmlCMS होम पेज पर कॉल करता हूं , तो यह होम पेज पर अविश्वसनीय त्रुटि दिखा रहा है।

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

त्रुटि संदेश है We're sorry, an error has occurred while generating this email.

मैंने ब्लॉक क्लास को भी बदल दिया, फिर भी यह वही त्रुटि दिखा रहा है। क्या आप कृपया मुझे एक उचित तरीका सुझा सकते हैं?

यदि आपको और अधिक कोड विस्तार की आवश्यकता है, तो कृपया टिप्पणी में मेरा उल्लेख करें। मैं वास्तव में यहां फंस गया हूं।

फ़ाइल त्रुटि संदेश 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 फ़ाइल से Eloborate त्रुटि करने के लिए SetEnv MAGE_MODE डेवलपर को असहज करना होगा।
तराल पटोलिया

धन्यवाद तारल। मैंने यह कर दिया है। अब त्रुटि संदेश बदल दिया गया है। मैंने अपना प्रश्न अब संपादित कर लिया है।
प्रफुल्ल राजपूत

कृपया मुझे अपना ब्लॉक वर्ग और माड्यूल। Xml कोड दिखाएं।
अमित बेरा

मैंने पोस्ट करने के लिए ब्लॉक क्लास और मॉड्यूल.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 का उपयोग करने में क्या वाक्यविन्यास है, मैंने इसका इस्तेमाल किया, लेकिन यह काम नहीं किया
jafar pinjar
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.