есть модуль похожих товаров, который выдаёт похожие товары по тегам, он абсолютно рабочий, ноработает на версиях не выше 1.5.1.3, нужно адаптировать под 1.5.4.1
Кусок кода совсем не большой, поэтому привожу тут:
<modification>
<id>Automatic Relate</id>
<version>1.0.1</version>
<vqmver>2.1</vqmver>
<author>Palcet - =^_^=.ru</author>
<file name="catalog/model/catalog/product.php">
<operation>
<search position="after">
<![CDATA[
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
]]>
</search>
<add>
<![CDATA[
if($query->num_rows==0)
{
$sql=" select *,p.product_id as related_id
FROM " . DB_PREFIX . "product p
LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON ( p.product_id = p2s.product_id )
WHERE p.product_id
IN (
SELECT product_id
FROM " . DB_PREFIX . "product_tag
WHERE tag
IN (
SELECT tag
FROM " . DB_PREFIX . "product_tag
WHERE product_id=".(int)$product_id."))
AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' limit 100";
$query = $this->db->query($sql);
}
]]>
</add>
</operation>
</file>
</modification>
autorelate.xml