如何覆盖PrestaShop的产品类以限制SQL查询中返回的产品数量?

时间:2013-03-04 16:31:49

标签: sql product prestashop

第2070行有一个像这样的SQL:

SELECT product_shop.id_product, product_attribute_shop.id_product_attribute
FROM `'._DB_PREFIX_.'product` p
'.Shop::addSqlAssociation('product', 'p').'
LEFT JOIN  `'._DB_PREFIX_.'product_attribute` pa ON (product_shop.id_product = pa.id_product)
'.Shop::addSqlAssociation('product_attribute', 'pa', false, 'product_attribute_shop.default_on = 1').'
WHERE product_shop.`active` = 1
'.(($ids_product) ? $ids_product : '').'
AND p.`id_product` IN (
    SELECT cp.`id_product`
    FROM `'._DB_PREFIX_.'category_group` cg
    LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
    WHERE cg.`id_group` '.$sql_groups.'
)
'.($front ? ' AND product_shop.`visibility` IN ("both", "catalog")' : '').'
AND (pa.id_product_attribute IS NULL OR product_attribute_shop.default_on = 1)
GROUP BY product_shop.id_product
ORDER BY RAND()

我想知道我是否可以删除:

'.(($ids_product) ? $ids_product : '').'

因为使用16k产品,我有16k“OR”而且它太大了,我的服务器需要太多的资源。

我也添加了“LIMIT 0,200”,我不知道它是否合适?

由于

1 个答案:

答案 0 :(得分:0)

limit应该有效。您的其他更改也可能产生预期的结果。

最重要的是,您不要更改核心文件,因为这可能会导致对您网站其他部分的意外更改。

Prestashop提供了一种覆盖核心文件而不会破坏所有内容的方法,并允许您快速恢复原始文件。

将文件products.php复制到overrides目录并在那里进行更改。

您可以找到Prestashop覆盖@ Overriding default behaviors

的支持和文档