Magento 2
Zainstalowałem przykładowy moduł Bannerslider pobrany z Magestore.
Kiedy dzwonię bannerslider.phtml
do strony głównej CMS, na stronie głównej pojawia się niewiarygodny błąd.
{{block class="Magento\Bannerslider\Block\Slideshow" template="bannerslider.phtml"}}
Komunikat o błędzie to We're sorry, an error has occurred while generating this email.
Zmieniłem także klasę bloków, wciąż pokazując ten sam błąd. Czy możesz mi zasugerować właściwy sposób?
Jeśli potrzebujesz więcej szczegółów kodu, proszę wspomnieć o mnie w komentarzu. Naprawdę utknąłem tutaj.
Po niepowodzeniu SetEnv MAGE_MODE developer
w .htaccess
pliku komunikat o błędzie jest zmieniany i wyświetlany
Error filtering template: Invalid block type: Magento\Bannerslider\Block\Slideshow
Nawiasem mówiąc, sekcja administracyjna tego modułu działa dobrze.
Blokuj klasę
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>