Как расширить модель блока списка основных продуктов?
Я хочу расширить функцию pring в magento, где я собираю некоторые данные о продукте.
В конце я хочу вызвать функцию, подобную $this->getAlternateTitle()
, в списках и продуктах.
Вот что у меня есть: app/etc/modules/Namespace_Name.xml
<?xml version="1.0"?>
<config>
<modules>
<Namespace_Catalog>
<active>true</active>
<codePool>local</codePool>
</Namespace_Catalog>
</modules>
</config>
Затем я создаю конфигурацию в app/code/local/Namespace/Catalog/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Namespace_Catalog>
<version>0.0.1</version>
</Namespace_Catalog>
</modules>
<global>
<blocks>
<class>Namespace_Catalog_Block_Product_List</class>
</blocks>
</global>
</config>
И, наконец, определение функции здесь: app/code/local/Namespace/Module/Block/Product/List.php
<?php
class Namespace_Catalog_Block_Product_List extends Mage_Catalog_Block_Product_List {
public function makeBlue() {
echo "Blueberrys are colorful";
}
}
Я есть только возвращаясь: Invalid method Mage_Catalog_Block_Product_List::makeBlue
Что я здесь делаю не так? Это моя первая функция magento, поэтому, пожалуйста, будьте добры ко мне;)
2 answers
config.xml
<global>
<blocks>
<catalog>
<rewrite>
<product_list>Namespace_Catalog_Block_Catalog_Product_List</product_list>
<product_view>Namespace_Catalog_Block_Catalog_Product_View</product_view>
</rewrite>
</catalog>
</blocks>
</global>
Написать класс :
App/code/local/Namespace/Catalog/Block/Catalog/Product/List.php
<?php class Namespace_Catalog_Block_Catalog_Product_List extends Mage_Catalog_Block_Product_List { }
App/code/local/Namespace/Catalog/Block/Catalog/Product/view.php
<?php class Namespace_Catalog_Block_Catalog_Product_View extends Mage_Catalog_Block_Product_View { }
Вам необходимо использовать систему перезаписи классов Magento, чтобы расширить блок Mage_Catalog_Block_Product_List
. Следующий пример кода должен дать вам хорошее представление о том, как это сделать:
В app/etc/modules/Namespace_Name.xml
:
...
<Namespace_Catalog>
...
<depends>
<!-- This dependency ensures that your module is loaded after the core module that you are extending. -->
<Mage_Catalog/>
</depends>
</Namespace_Catalog>
...
В app/code/local/Namespace/Catalog/config.xml
:
...
<blocks>
<catalog>
<rewrite>
<product_list>Namespace_Catalog_Block_Product_List</product_list>
</rewrite>
</catalog>
</blocks>
....
Если вам нужна более подробная информация, этот учебник от Tuts+ - отличный ресурс.