2010-11-01 69 views
0

嗨 我有一個類別XXX下的類別我有一個子類別yyy。 該產品被分配到yyy類別。此外我已交叉銷售5件產品。 當我點擊yyy時,我需要獲得所有交叉銷售的產品名稱,這些產品名稱在左側分配爲交叉銷售。magento交叉銷售子類別

分類

XXXXXXXX
YYYYYYY
zzzzzzz

交叉銷售產品

Crosssell1 Crosssell2 Crosssell3

我怎麼能走呢?

回答

2

您將需要創建一個將出現在左列中的塊。我們來創建一個函數來獲取產品ID的初始列表。如果你的塊擴展Mage_Catalog_Block_Product_List那麼它可能會喜歡這樣的:

public function getCurrentProductIds() 
{ 
    return $this->getLoadedProductCollection()->getAllIds(); 
} 

但是,這僅適用於當前頁面上顯示的產品工作。如果你需要顯示在該類別後頁面中的所有相關產品,那麼該功能可能是這樣的:

public function getCurrentProductIds() 
{ 
    return Mage::registry('current_category')->getProductCollection()->getAllIds(); 
} 

兩個函數會返回一個整數列表。

接下來是必不可少的部分。獲取相關產品。

public function getCrossSellsCollection() 
{ 
    $productIds = $this->getCurrentProductIds(); 
    $link = Mage::getSingleton('catalog/product_link') 
     ->useCrossSellLinks();   // very important, this sets the linkTypeId to 5 
    $collection = $link->getProductCollection() 
     ->addProductFilter($productIds)   // find products associated with these 
     ->addExcludeProductFilter($productIds) // don't let these sames ones be loaded twice, that's a guaranteed error 
     ->addAttributeToSelect(array('name', 'url_key, 'url_path')); // list as many attributes here as you need 
    return $collection; 
} 

這返回的Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Link_Product_Collection一個對象,你可以從一個模板的方式爲產品列表相同的迭代。這一點是開放的調整和主題,你認爲合適。

<?php $_crossSellsCollection = $this->getCrossSellsCollection(); ?> 
<?php if ($_crossSellsCollection->count()): ?> 
<ul> 
    <?php foreach ($_crossSellsCollection as $_product): ?> 
    <li> 
     <a href="<?php echo $_product->getProductUrl() ?>"><?php echo $_product->getName() ?></a> 
    </li> 
    <?php endforeach ?> 
</ul> 
<?php endif ?> 

(希望你最近學會了如何接受的答案,但你的0%的分數表明othewise)

+0

得到它的幫助表示感謝 – 2010-11-05 03:51:28

+0

謝謝,clockworkgeek。這是一個可惜的,我不能downvote的作者(125聲譽閾值):) – Wiseman 2011-03-23 09:16:07