Magento 2
He instalado un módulo de muestra Bannerslider descargado de Magestore.
Cuando llamo bannerslider.phtml
a la página de inicio de CMS, muestra un error poco confiable en la página de inicio.
{{block class="Magento\Bannerslider\Block\Slideshow" template="bannerslider.phtml"}}
Mensaje de error es We're sorry, an error has occurred while generating this email.
También cambié la clase de bloque, todavía muestra el mismo error. ¿Me puede sugerir una forma adecuada?
Si necesita más detalles sobre el código, por favor, mencione mi comentario. Estoy realmente atrapado aquí.
Después de uncoment SetEnv MAGE_MODE developer
en el .htaccess
archivo, el mensaje de error se cambia y muestra
Error filtering template: Invalid block type: Magento\Bannerslider\Block\Slideshow
Por cierto, la sección de administración de este módulo funciona bien.
Clase de bloque
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>