您好 我有一个类别XXX类别我有一个子类别yyy。 产品被分配到yyy类别。此外,我已经交叉销售了5种产品。 当我点击yyy时,我需要获得在左侧指定为交叉销售的所有交叉销售产品名称。
分类
XXXXXXXX
YYYYYYY
zzzzzzz
交叉销售产品
Crosssell1 Crosssell2 Crosssell3
我怎么能去做?
答案 0 :(得分: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%分数表示不同)