Một số sản phẩm bị thiếu trong bảng catalog_product_index_price!


11

Bất cứ ai cũng có thể giúp tôi làm rõ Chỉ số giá trong Magento? Tôi đang sử dụng phiên bản 1.9.
Nhiệm vụ của tôi : Kết xuất các sản phẩm nổi bật vào trang chủ.
Giải pháp của tôi : Thay vì tạo danh mục có tên "Sản phẩm nổi bật". Tôi đã tạo một thuộc tính "is_featured", vì vậy tôi chỉ cần lọc sản phẩm có thuộc tính đó là đúng để có kết quả như mong đợi.
Dựa trên tiện ích tích hợp Mage_Catalog_Block_ Productt_Widget_New , chức năng của tôi để có được bộ sưu tập sản phẩm như được xác định:

protected function _getProductCollection()
    {
        /** @var $collection Mage_Catalog_Model_Resource_Product_Collection */
        $collection = Mage::getResourceModel('catalog/product_collection');
        $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
        $collection = $this->_addProductAttributesAndPrices($collection)
            ->addStoreFilter()
            ->addAttributeToFilter('is_featured', array('eq' => true))
            ->setPageSize($this->getProductsCount())
            ->setCurPage(1);
        return $collection;
    }

Kết quả: Một số sản phẩm đã xuất hiện, nhưng một số sản phẩm khác bị thiếu. Khi gỡ lỗi SQL, tôi thấy:

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`,
    `at_is_featured`.`value` AS `is_featured`
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 = '2'
        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
        INNER JOIN
    `catalog_product_entity_int` AS `at_is_featured` ON (`at_is_featured`.`entity_id` = `e`.`entity_id`)
        AND (`at_is_featured`.`attribute_id` = '210')
        AND (`at_is_featured`.`store_id` = 0)
WHERE
    (at_is_featured.value = '1')
LIMIT 6

Vấn đề là ở đây, catalog_carget_product_index , một số sản phẩm biến mất có bị thiếu trong bảng này không? Nhưng tôi không biết, tại sao chỉ số của một số sản phẩm lại bị bỏ lỡ? Tôi đã thử Re-Index rất nhiều lần mà không có kết quả như mong đợi! Có ai có thể giúp tôi không? Cảm ơn rất nhiều!


Tôi đang giải quyết vấn đề tương tự. Bất kỳ may mắn?
Versalle88

Câu trả lời:


2

Nếu một sản phẩm bị thiếu trong chỉ số giá, thì thường là do sản phẩm đó không liên quan đến trang web hiện tại.

Để tìm hiểu cách các sản phẩm được lập chỉ mục, hãy chạy bộ chỉ mục giá và gỡ lỗi truy vấn trong Mage_Catalog_Model_Resource_Product_Indexer_Price_Default::_prepareFinalPriceData()khoảng dòng 285 (sau khi prepare_catalog_product_index_selectsự kiện đã được kích hoạt)

Đây là cho các sản phẩm đơn giản. Đối với các loại sản phẩm khác, nó giống nhau trong triển khai bộ chỉ mục tương ứng của chúng (lớp con của Mage_Catalog_Model_Resource_Product_Indexer_Abstract).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.