Bir Magento Class geçersiz kılma

0 Cevap php

Ben bu şekilde benim MyCompany_Mymodule_Block_View ile Mage_Catalog_Block_Product_View geçersiz kılmak için çalışıyorum:

<?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;

    }

} 

I would like to check if the product selected is within a particular category, if the answer is yes I redirect the user to the customer login page.

Şimdi, çekirdek sınıfını düzenlemek durumunda doğrudan kod düzgün çalışır. Benim özel sınıf ile Mage_Catalog_Block_Product_View geçersiz denerseniz ürün detay sayfasında boş bir yeri olsun. Sınıfı doğru adı olmuştur, ama hiçbir html cevap yoktur.

Bu Config.XML özüdür:

         <blocks>
            <mymodule>
                <class>MyCompany_Mymodule_Block</class>
            </mymodule>
            <catalog>
                <rewrite>
                    <product_view>MyCompany_Mymodule_Block_View</product_view>
                </rewrite>
            </catalog>

        </blocks>

Biri bana bu gizlememiz keşfetmek için yardımcı olabilir mi?

0 Cevap