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>
magento2
static-block
magento2-dev-beta
Praful Rajput
źródło
źródło
Odpowiedzi:
Wypróbuj poniższy kod na stronie cms, jeśli chcesz wywołać phtml ze stroną cms.
źródło
W magento, jeśli chcesz dodać klasę bloków na stronie cms, możesz przejść poniżej kodu
Formula to:
Domyślny blok:
Jest to równe kodowi wersji Magento 1.X
źródło