В 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();
0
Pranesh Gohil 28 Дек 2016 в 16:36

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'); 
0
Jickson Johnson Koottala 28 Дек 2016 в 16:50

В дополнение к опечатке в имени блока, о которой упоминал Джиксон, вы никогда не должны создавать блок программно в шаблоне. Вместо этого используйте Layout XML, чтобы добавить свой блок в блок, из которого вам нужно его вызвать. Затем используйте $this->getChildHtml() в файле шаблона этого блока, чтобы вызвать новый блок.

Создание его вручную - это, по сути, обход фреймворка, который сводит на нет цель его использования.

0
Mikel Bitson 29 Дек 2016 в 01:16