Magento 2
J'ai installé un exemple de module Bannerslider téléchargé depuis Magestore.
Lorsque j'appelle bannerslider.phtml
sur la page d'accueil de CMS, cela montre une erreur non fiable sur la page d'accueil.
{{block class="Magento\Bannerslider\Block\Slideshow" template="bannerslider.phtml"}}
Le message d'erreur est We're sorry, an error has occurred while generating this email.
J'ai également changé la classe de bloc, toujours avec la même erreur. Pouvez-vous s'il vous plaît me suggérer une bonne façon?
Si vous avez besoin de plus de détails sur le code, veuillez me mentionner en commentaire. Je suis vraiment coincé ici.
Après uncoment SetEnv MAGE_MODE developer
dans .htaccess
le message d'erreur de fichier en cours de modification et d'affichage
Error filtering template: Invalid block type: Magento\Bannerslider\Block\Slideshow
Par ailleurs, la section admin de ce module fonctionne bien.
Classe de bloc
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>