я пытаюсь переопределить Mage_Catalog_Block_Product_View с моим MyCompany_Mymodule_Block_View таким образом:Переопределение Magento класса
<?php
class MyCompany_Mymodule_Block_View extends Mage_Catalog_Block_Product_View {
/**
* Add meta information from product to head block
*
* @see Mage_Catalog_Block_Product_View::_prepareLayout()
* @return Mage_Catalog_Block_Product_View
*/
protected function _prepareLayout() {
$product = $this->getProduct();
$logged_in = Mage::getSingleton('customer/session')->isLoggedIn();
$groupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
if($this->checkPrivateCategories($product->getCategoryIds())){
if($logged_in && $groupId == 1){
# die('The user can see the product');
}else{
header('location: /customer/account/login');
die;
}
}
return parent::_prepareLayout();
}
private function checkPrivateCategories($categories){
if(is_array($categories)){
foreach($categories as $category){
$collection = Mage::getModel('catalog/category')->getCollection();
/* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */
$collection
->addAttributeToFilter('private', true)
->addIdFilter(array($category))
->load();
$data = $collection->getData();
if(!empty($data)){
if ($data[0]['private']){
return true ;
}
}
}
}
return false;
}
}
Я хотел бы проверить, если продукт выбран в пределах определенной категории, если ответ да перенаправить пользователя на страницу входа в систему.
Теперь, если я отредактировал основной класс напрямую, код работает правильно. Если я попытаюсь переопределить Mage_Catalog_Block_Product_View с моим пользовательским классом, я получаю пустой раздел страницы сведений о продукте. Класс был вызван правильно, но нет html-ответа.
Это Config.xml экстракт:
<blocks>
<mymodule>
<class>MyCompany_Mymodule_Block</class>
</mymodule>
<catalog>
<rewrite>
<product_view>MyCompany_Mymodule_Block_View</product_view>
</rewrite>
</catalog>
</blocks>
ли кто-нибудь может помочь мне открыть этот MISTERY?
Как вы можете сказать, что это загрузка класса Block? – 2010-11-26 11:35:06