Einige Produkte fehlen in der Tabelle catalog_product_index_price!

11

Kann mir jemand helfen, die Preisindizierung in Magento zu klären? Ich benutze Version 1.9.
Meine Aufgabe : Rendern der vorgestellten Produkte auf der Homepage.
Meine Lösung : Anstatt die Kategorie "Empfohlenes Produkt" zu erstellen. Ich habe ein Attribut "is_featured" erstellt, also filtere ich das Produkt einfach mit diesem Attribut "true", um das erwartete Ergebnis zu erhalten. Basierend
auf dem eingebauten Widget Mage_Catalog_Block_Product_Widget_New , meine Funktion, um die Produktkollektion wie definiert abzurufen :

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

Ergebnis: Einige Produkte werden angezeigt, andere fehlen. Beim SQL-Debugging sehe ich:

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

Das Problem ist hier, catalog_category_product_index , einige Produkte verschwinden in dieser Tabelle fehlt? Aber ich weiß nicht, warum der Index einiger Produkte fehlt? Ich habe Re-Index so oft ohne die erwarteten Ergebnisse ausprobiert! Kann mir jemand helfen? Vielen Dank!

De Nguyen
quelle
Ich beschäftige mich mit dem gleichen Problem. Etwas Glück?
versalle88

Antworten:

2

Wenn ein Produkt im Preisindex fehlt, liegt dies normalerweise daran, dass es nicht mit der aktuellen Website verknüpft ist.

Um herauszufinden, wie die Produkte indiziert sind, führen Sie den Preisindex aus und debuggen Sie die Abfrage in Mage_Catalog_Model_Resource_Product_Indexer_Price_Default::_prepareFinalPriceData()Zeile 285 (nachdem das prepare_catalog_product_index_selectEreignis ausgelöst wurde).

Dies ist für einfache Produkte. Für andere Produkttypen ist dies in der entsprechenden Indexer-Implementierung (Unterklasse von Mage_Catalog_Model_Resource_Product_Indexer_Abstract) identisch .

Fabian Schmengler
quelle