В Magento 1.9.2.4 я не могу создать новый блок. Когда я создаю файл класса и во внешнем интерфейсе, когда я пытаюсь получить имя класса или получить макет, он говорит «класс не найден».
Существующие блоки работают исправно и только новые не работают.
Я определил блок в config xml
<?xml version="1.0"?>
<config>
<modules>
<Custom_Homepage>
<version>0.1.0</version>
</Custom_Homepage>
</modules>
<global>
<blocks>
<homepage>
<class>Custom_Homepage_Block</class>
</homepage>
</blocks>
</global>
</config>
<?php
class Custom_Homepage_Block_Product_Slider3 extends
Mage_Catalog_Block_Product_List{
protected function _construct(){
echo 1212;exit;
}
}
?>
И пытаюсь вызвать блок в файле шаблона:
$this->getLayout()->createBlock('homepage/product_Slider3')
->setTemplate('homepage/catalog/product/category-3.phtml')->toHtml();
2 ответа
Попробуйте расширить с помощью Mage_Core_Block_Template вместо Mage_Catalog_Block_Product_List. Также измените это
$this->getLayout()->createBlock('homepage/product_Slider3') ->setTemplate('homepage/catalog/product/category-3.phtml')->toHtml();
К
$this->getLayout()->createBlock('homepage/product_slider3') ->setTemplate('homepage/catalog/product/category-3.phtml')->toHtml();
Чтобы отобразить содержимое этого блока, вы также можете вызвать его, так как вы не используете макет внешнего интерфейса
$this->getLayout()->createBlock('homepage/product_slider3');
В дополнение к опечатке в имени блока, о которой упоминал Джиксон, вы никогда не должны создавать блок программно в шаблоне. Вместо этого используйте Layout XML, чтобы добавить свой блок в блок, из которого вам нужно его вызвать. Затем используйте $this->getChildHtml()
в файле шаблона этого блока, чтобы вызвать новый блок.
Создание его вручную - это, по сути, обход фреймворка, который сводит на нет цель его использования.
Похожие вопросы
Новые вопросы
magento
Magento — это платформа электронной коммерции, написанная на PHP. Используйте этот тег для вопросов о написании кода для Magento v1.x. Вместо этого общие вопросы Magento (например, администрирование) можно задать на https://magento.stackexchange.com.