Magento 2
Ich habe ein Beispiel-Bannerslider-Modul installiert, das von Magestore heruntergeladen wurde.
Wenn ich die bannerslider.phtml
CMS-Homepage aufrufe, wird auf der Homepage ein unzuverlässiger Fehler angezeigt.
{{block class="Magento\Bannerslider\Block\Slideshow" template="bannerslider.phtml"}}
Fehlermeldung ist We're sorry, an error has occurred while generating this email.
Ich habe auch die Blockklasse geändert, aber sie zeigt immer noch den gleichen Fehler. Können Sie mir bitte einen geeigneten Weg vorschlagen?
Wenn Sie weitere Codedetails benötigen, erwähnen Sie mich bitte im Kommentar. Ich stecke hier wirklich fest.
Nach uncoment SetEnv MAGE_MODE developer
in .htaccess
Datei Fehlermeldung ändern und mehr zeigt
Error filtering template: Invalid block type: Magento\Bannerslider\Block\Slideshow
Übrigens, der Admin-Bereich dieses Moduls funktioniert einwandfrei.
Klasse blockieren
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>