Magento 2
Saya telah menginstal sampel modul Bannerslider yang diunduh dari Magestore.
Ketika saya menelepon bannerslider.phtml
ke 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 developer
dalam .htaccess
pesan 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>