2013-03-28 184 views
3

我在训练期间完全从Magento开始。我一直在做一个项目两个星期,有时我不知道如何继续。Magento:从产品ID和当前类别获取相关产品ID

我会尽力代表我的类别树:

- accessories 
    * visors 
    * communication systems 
    * other 
- helmets 
    * a lot of subcategories and subcategories... 

我实际的问题是:我在配件子类别(例如面罩)之一。我添加了一个表格,允许选择一个头盔模型select。提交select时,我想显示与所选头盔模型相关的遮阳板列表(实际上这是一个virtual product)。

我可以获得当前的类别ID(在这种情况下,遮阳帽)和虚拟产品ID(如此头盔模型)。但我无法弄清楚如何通过产品ID和类别ID显示相关产品。

我尝试这样的东西:

$relatedProducts = Mage::getModel('catalog/product_link') 
         ->getCollection() 
         ->addCategoryFilter($myCurrentCat) 
         ->addFieldToFilter('product_id',$myVirtualProductId) 
         ->addFieldToFilter('link_type_id','1'); 

但似乎没有工作。

任何帮助,欢迎。谢谢。

编辑:10天后,我问这个问题,我仍然不知道如何解决我的问题。如果有人可以帮助,哪怕是一点点,只是一个线索...

+0

参阅本和应用代码//添加或条件: $收藏 - > addAttributeToFilter(阵列( 阵列( “属性'=>'field_name', 'in'=>'array(1,2,3), ), array( 'attribute'=>'date_field', 'from'=>'2000-09-10 ', ), )); – oscprofessionals

回答

0

其实我只是自己解决了我的问题。

这里是我的解决方案,如果它可以帮助任何人在未来:

$mainProduct = Mage::getModel('catalog/category')->load($myCurrentCat->getId()); 
$mainProduct = $mainProduct->getProductCollection(); 
$mainProduct = $mainProduct->addAttributeToFilter('product_id', $myVirtualProductId); 

foreach ($mainProduct as $product) { 
    $related = $product->getRelatedProductIds(); 
    if ($this->array_contains($related, $myVirtualProductId)) { 
     //TODO 
    } 
} 
4

我不能在此刻进行测试,但你可以尝试做这样的事情:


$collection = Mage::getSingleton('catalog/product_link') 
    ->useRelatedLinks() 
    ->getProductCollection() 
    ->setIsStrongMode(); 
$product = Mage::getModel('catalog/product')->load($productId); 
$collection->setProduct($product); 
$collection->addCategoryFilter($category); //I'm not sure if this will work correctly 

我要测试,当我会得到更多的时间。