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>
magento2
static-block
magento2-dev-beta
Rajput orante
fuente
fuente
Respuestas:
Pruebe el siguiente código en la página cms, si desea llamar a phtml con en la página cms.
fuente
En magento, si desea agregar una clase de bloque en la página de cms, puede ir debajo del código
La fórmula es:
Bloque predeterminado:
Esto es igual al código de versión de Magento 1.X
fuente