Magento 2
Magestore'dan indirilen örnek Bannerslider modülünü kurdum.
bannerslider.phtml
CMS 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 developer
içinde .htaccess
dosya 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>