0

我有一个查询,它使用 ajax 和无限 scorll 获取产品列表的一堆产品。如果您在最后注意到,它使用偏移量在产品列表之间“分页”,这意味着对于 20 个产品,相同的查询使用不同的偏移量(无偏移量、偏移量 9、偏移量 18)运行 3 次。

现在它使用按仓位排序和 is_in_stock。我遇到的问题是所有产品的位置都设置为 1,因为管理员没有将每个产品的位置更新为 1、2、3、4、5、6 等。

并且由于所有位置都设置为 1,因此偏移功能无法正常工作,在偏移的不同页面上显示重复的产品。

我是否被迫必须设置位置,还是有其他方法可以做到这一点?也许我应该检查客户是否设置了位置,如果没有,删除 ORDER BY 位置语法?

想法?

SELECT `e`.*, `cat_index`.`position` AS `cat_index_position`, `price_index`.`price`, `price_index`.`tax_class_id`, `price_index`.`final_price`, IF(price_index.tier_price IS NOT NULL, LEAST(price_index.min_price, price_index.tier_price), price_index.min_price) AS `minimal_price`, `price_index`.`min_price`, `price_index`.`max_price`, `price_index`.`tier_price`, IF((IF(cisi.use_config_manage_stock = 1, 1, cisi.manage_stock) = 1), cisi.is_in_stock, 1) AS `is_saleable`, `cisi`.`is_in_stock` AS `inventory_in_stock` FROM `catalog_product_entity` AS `e`
 INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=1 AND cat_index.visibility IN(2, 4) AND cat_index.category_id='3'
 INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '1' AND price_index.customer_group_id = 0
 LEFT JOIN `cataloginventory_stock_item` AS `cisi` ON (cisi.product_id=e.entity_id) GROUP BY `e`.`entity_id` 
   ORDER BY `is_in_stock` desc, `cat_index`.`position` ASC LIMIT 9 OFFSET 9
4

1 回答 1

0

您必须确实设置位置,或者找到另一种方式来订购产品,例如通过 ID(您应该将其设置为 auto_increment)。

于 2013-04-30T11:35:07.003 回答