2014-02-16 259 views

回答

2

我昨天寫了一個簡單的擴展,就是在1.8中完成的。設立觀察員的事件controller_action_predispatch

我的觀察者文件看起來像這樣

class CommerceExtensions_GroupedProductRedirect_Model_Observer extends Varien_Event_Observer 
{ 
    public function redirectProductView($observer) 
    { 
    $id = Mage::app()->getRequest()->getParam('id'); 
    $product = Mage::getModel('catalog/product')->load($id); 
    if($product->getTypeId() == 'simple' && $product->getVisibility() == 1){ 
     $parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($product->getId()); 
     if(!empty($parentIds)){ 
     $parentProduct = Mage::getModel('catalog/product')->load($parentIds[0]); 
     Mage::app() 
      ->getResponse() 
      ->setRedirect($parentProduct->getProductUrl(), 301) 
      ->sendResponse(); 
     } 
    }   
    } 
} 

這是我在我的config.xml

<controller_action_predispatch_catalog_product_view> 
    <observers> 
     <commerceextensions_groupedproductredirect_observer> 
     <class>CommerceExtensions_GroupedProductRedirect_Model_Observer</class> 
     <method>redirectProductView</method> 
     </commerceextensions_groupedproductredirect_observer> 
    </observers> 
    </controller_action_predispatch_catalog_product_view> 

它只會重定向,如果孩子的產品被設置爲單獨不可見,並且具有父母分組的產品。這可以很容易地適應與配置或捆綁產品,我只是不使用這些類型在我自己的網站,但只要你可以得到父產品ID,沒有問題。

您應該可以將這兩個部分添加到您的模塊,它將完美工作。我還最終爲這些兒童產品的評論頁做了一個。它基本上與一些適應性相同的代碼。

+0

在您的站點使用本網站時,請刪除此部分Mage :: getStoreConfig('groupedproductredirect/active/overall'),因爲它只是從我的自定義模塊中爲該擴展設置主開關。 –

+0

當我將這段代碼添加到觀察者文件時,我得到:解析錯誤:語法錯誤,意外的T_CLASS,期望在107行/home/unicohom/public_html/app/code/core/Mage/Admin/Model/Observer.php中的T_FUNCTION行107 – user3315004

+0

你可能增加了一個額外的}。給我一點時間,我會根​​據你的需要給你一個經過編輯的答案。 –