2016-12-28 6 views
0

突然Magento 1.9.2.4で、新しいブロックを作成できません。クラス名を取得しようとしたときにフロントエンドでクラスファイルを作成したり、レイアウトを取得しようとしたときにクラスが見つかりません。新しく作成されたブロッククラスがマゼンタに見つかりません

既存のブロックは正常に動作しており、新しいブロックのみが機能していません。

私は設定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

Mage_Core_Block_Templateの代わりMage_Catalog_Block_Product_Listで延長してみます。あなたがタイプミスに加えて、任意のフロントエンドのレイアウト

$this->getLayout()->createBlock('homepage/product_slider3'); 
0

を使用していないため、また、あなたはまた、このように呼び出すことができ、このブロックのコンテンツを表示するには、この

$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(); 

に変更Jicksonが言及したブロック名では、プログラム内でテンプレート内にブロックを作成すべきではありません。代わりに、レイアウトXMLを使用して、呼び出す必要があるブロックにブロックを追加します。そのブロックのテンプレートファイル内で$this->getChildHtml()を使用して、新しいブロックを呼び出します。

これを手動で作成することは、フレームワークを本質的にバイパスすることであり、フレームワークを使用する目的を無効にします。

関連する問題