ผลิตภัณฑ์บางอย่างหายไปในแคตตาล็อกตาราง _product_index_price!


11

ทุกคนสามารถช่วยฉันอธิบายการจัดทำดัชนีราคาใน Magento ได้หรือไม่ ฉันใช้เวอร์ชั่น 1.9
งานของฉัน : แสดงผลผลิตภัณฑ์เด่นในหน้าแรก
โซลูชันของฉัน : แทนที่จะสร้างหมวดหมู่ที่เรียกว่า "ผลิตภัณฑ์เด่น" ฉันสร้างแอททริบิวต์ "is_featured" ดังนั้นฉันจึงกรองผลิตภัณฑ์ที่มีแอททริบิวนั้นเป็นจริงเพื่อให้ได้ผลลัพธ์ตามที่คาดหวัง
ขึ้นอยู่กับวิดเจ็ตในตัวMage_Catalog_Block_Product_Widget_Newฟังก์ชั่นของฉันเพื่อรับชุดผลิตภัณฑ์ตามที่กำหนดไว้:

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;
    }

ผลลัพธ์: ผลิตภัณฑ์บางอย่างปรากฏขึ้น แต่บางผลิตภัณฑ์หายไป เมื่อการดีบัก SQL ฉันเห็น:

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

ปัญหาอยู่ที่นี่catalog_category_product_indexผลิตภัณฑ์บางอย่างหายไปในตารางนี้ใช่ไหม แต่ฉันไม่รู้ทำไมดัชนีของผลิตภัณฑ์บางอย่างถึงพลาด ฉันได้ลองทำดัชนีซ้ำหลาย ๆ ครั้งโดยที่ไม่มีผลลัพธ์ที่คาดไว้! มีใครช่วยฉันได้บ้าง ขอบคุณมาก!


ฉันกำลังจัดการกับปัญหาเดียวกัน มีโชคหรือเปล่า?
versalle88

คำตอบ:


2

หากผลิตภัณฑ์ขาดหายไปจากดัชนีราคามักเป็นเพราะไม่ได้เชื่อมโยงกับเว็บไซต์ปัจจุบัน

หากต้องการค้นหาวิธีการจัดทำดัชนีผลิตภัณฑ์ให้เรียกใช้ตัวสร้างดัชนีราคาและแก้ไขข้อสงสัยในMage_Catalog_Model_Resource_Product_Indexer_Price_Default::_prepareFinalPriceData()รอบ ๆ บรรทัดที่ 285 (หลังจากprepare_catalog_product_index_selectเหตุการณ์ถูกเรียกใช้)

นี่คือผลิตภัณฑ์ที่เรียบง่าย สำหรับผลิตภัณฑ์ประเภทอื่นมันเป็นสิ่งเดียวกันในการใช้งานตัวทำดัชนีที่เกี่ยวข้อง (subclass ของMage_Catalog_Model_Resource_Product_Indexer_Abstract)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.