Làm cách nào để gọi tệp PHTML trong trang CMS Magento 2?


16

Magento 2

Tôi đã cài đặt mô-đun Bannerslider mẫu được tải xuống từ Magestore.

Khi tôi gọi bannerslider.phtmlvào Trang chủ CMS, nó hiển thị lỗi không đáng tin cậy trên trang chủ.

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

Thông báo lỗi là We're sorry, an error has occurred while generating this email.

Tôi cũng đã thay đổi lớp khối, nhưng nó vẫn hiển thị lỗi tương tự. Bạn có thể vui lòng gợi ý cho tôi một cách thích hợp?

Nếu bạn cần thêm chi tiết mã, xin vui lòng đề cập đến tôi trong bình luận. Tôi thực sự bị mắc kẹt ở đây.

Sau uncoment SetEnv MAGE_MODE developertrong .htaccessthông báo lỗi tập tin bị thay đổi và hiển thị

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

Bằng cách quản trị phần của mô-đun này đang hoạt động tốt.

Lớp khối

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;
    }
}

Mô-đun

<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
bạn cần phải bỏ qua nhà phát triển SetEnv MAGE_MODE từ tệp .htaccess để tránh lỗi.
Taral Patoliya

Cảm ơn bạn Taral. Tôi đã làm xong rồi. Bây giờ thông báo lỗi đã được thay đổi. Tôi đã chỉnh sửa câu hỏi của tôi bây giờ.
Rajput đáng khen ngợi

Vui lòng cho tôi xem lớp khối và mã module.xml của bạn.
Amit Bera

Tôi đã thêm lớp block và mã module.xml để đăng.
Rajput đáng khen ngợi

@TaralPatoliya Cảm ơn bạn đã gợi ý ... Nó thực sự giúp ích cho tôi!
DRAJI

Câu trả lời:


35

Hãy thử mã bên dưới trong trang cms, Nếu bạn muốn gọi phtml bằng trang cms.

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

20

Trong magento, nếu bạn muốn thêm lớp chặn trong trang cms, thì bạn có thể tre bên dưới mã

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

Công thức là:

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

Khối mặc định:

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

Điều này tương đương với mã phiên bản Magento 1.X

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

xin chào @Amit, chúng tôi có thể sử dụng bộ nhớ cache = "false" ở đây không? khi được sử dụng trong cms
jafar pinjar 21/03/19

Có thể sử dụng nhưng nó khiến bạn không thể lưu trữ được
Amit Bera

Có tôi cần cái đó, cú pháp sử dụng cms là gì, tôi đã sử dụng nó nhưng nó không hoạt động
jafar pinjar 21/03/19
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.