如何在Magento中为每个产品通过代码设置相关产品

3
我有一个Magento商店,我们已经创建了超过300个产品。问题在于每10到15个产品的名称格式相同且相似度超过80%。
例如:
Embroidered Vine - 12 Embroidered Vine - 13 Embroidered Vine - 14 Embroidered Vine - 15 Embroidered Vine - 16 Embroidered Vine - 17
我现在正在通过在描述字段中输入这些项目来显示其他相关项目。相反,我想运行一个脚本,该脚本将自动添加相关产品,因为产品名称相似,除了最后两个字符外。请问如何在Magento中通过代码自动设置相关产品?
是否有像setRelatedItems()这样的功能可以在Magento中为产品设置相关产品?
我使用的是Magento 1.4.2。

1
我不知道为什么这个问题被评为-1。无论如何,感谢您没有发表负面评论。 - Elamurugan
我认为如果你重新表述你的问题以澄清你想要实现什么,你会得到更多的关注。 - Lee Saferite
将相关产品设置为通过代码/脚本而不是从后端进行设置。我只是在问这个。你能帮我吗? - Elamurugan
2个回答

5

您可以使用一些原始的SQL查询来实现这个功能。我曾经参与过一个数据加载的项目,负责将大量产品导入Magento,因此我知道如何操作。

您可以按照以下步骤进行操作:

SELECT DISTINCT cpev.entity_id

FROM catalog_product_entity_varchar cpev

WHERE value LIKE 'Embroidered Vine%'

现在,您已经拥有所有以“刺绣藤蔓”为标题的产品的实体ID。可以将此结果存储在一个数组中,例如$result

然后,您需要进行双重循环(对于每个“刺绣藤蔓”产品,您必须将所有其他“刺绣藤蔓”产品添加为相关产品)。

首先,在另一个数组中复制所有“刺绣藤蔓”产品以进行foreach循环(这可能不是必需的,但仍建议执行此操作)。

$copy = $result; // Where result is the result of the query (= the entity_id's)
foreach($result as $main_product){ //Each 'Embroidered Vine' product
  foreach($copy as $related_product){
    if($main_product["entity_id"] == $related_product["entity_id"])
      continue; //We do not want to add the same products as related product

    // Insert related product
    mysql_query("INSERT INTO catalog_product_link (product_id,linked_product_id,link_type_id) VALUES ($main_product["entity_id"],$related_product["entity_id"],1)");
  }
}

如果您需要更多帮助,请添加评论,我会尽力为您解决问题;)

希望这对您有所帮助。

祝好, Kenny


0

您可以传递产品ID以获取相关产品。在此,您可以循环产品并使用getRelatedProductIds()来实现此目的。

例如,您需要特定产品(比如$_product)的相关产品

您可以通过以下方式获取相关产品ID:

  $_product->getRelatedProductIds()

你可以通过以下方式查看id数组:

  print_r($_product->getRelatedProductIds()); 

希望这能对你有所帮助。

祝好, Kamesh J


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接