Ich habe ein seltsames Problem mit den Upsells der Magento-Zielregel.
Szenario: Magento EE 1.12. Über 30 Speicheransichten auf derselben Magento-Instanz. Über 30.000 Produkte. Die meisten Produkte haben in allen Geschäftsansichten die gleichen Einstellungen. Ich habe eine Regel zum Anzeigen von Upsells wie folgt erstellt. "Zeigen Sie Produkte aus derselben Kategorie mit einem Preis von 100% oder mehr als das aktuelle Produkt". Einstellungen für die Anzeige von Upsells: "Nur regelbasiert" (das Problem wird für "regelbasiert und ausgewählt" reproduziert). Ich habe die Regel gespeichert. alles neu indiziert. Alles scheint in Ordnung zu sein, Upsells werden (für die von mir getesteten Produkte) gemäß der Regel angezeigt, ABER ... Nach einiger Zeit für dasselbe Produkt in einer Geschäftsansicht werden die Upsells angezeigt und in anderen Geschäftsansichten nicht. Das Produkt hat in allen Geschäftsansichten die gleichen Einstellungen. (und es sollte die gleichen Upsells haben.)
Wenn ich etwas in der Regel ändere und es erneut speichere, werden die Upsells in allen Geschäftsansichten angezeigt, aber nach einiger Zeit wird das Problem reproduziert.
Nachdem ich den Code eingegraben hatte, stellte ich fest, dass die von der Zielregel generierten Upsells in der Tabelle Enterprise_targetrule_index_upsell gespeichert sind, um zu vermeiden, dass jedes Mal alle Regeln analysiert werden. So funktioniert es. (Die Tabelle wird beim Speichern einer Regel abgeschnitten.) Wenn die von mir erwähnte Tabelle Upsells für Zielregeln enthält, werden diese abgerufen. Ist dies nicht der Fall, werden die Regeln analysiert und das Ergebnis in die Indextabelle eingetragen. Hier sind einige Datensätze aus dieser Tabelle für ein bestimmtes Produkt.
+-----------+----------+-------------------+---------------------------------------------------------------------+---------------------+
| entity_id | store_id | customer_group_id | product_ids | customer_segment_id |
+-----------+----------+-------------------+---------------------------------------------------------------------+---------------------+
| 17372 | 2 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 5 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 17 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 18 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 19 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 20 | 0 | | 0 |
| 17372 | 21 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 22 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 23 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
Wie Sie sehen können, sind die Upsells für Produkte mit der ID 17372 in allen Geschäftsansichten gleich, mit Ausnahme von store_id 20, das leer ist. Das Geschäft 20 hat nichts Besonderes. Alle hier genannten Produkte sind in allen Geschäften erhältlich.
Irgendeine Idee?
Vielen Dank. Marius.
quelle
cron
richtig konfiguriert. IIRC die Regeln werden jede Nacht neu aufgebaut und ohne ein aktivescron
wird seltsames Verhalten erzeugenAntworten:
In EE 1.13 scheint dieser Fehler behoben zu sein (aber EE 1.13 ist weg)
In
Enterprise_TargetRule_Model_Resource_Index::saveProductIndex
, Zeile mit Problem wurde ersetzt durch (Hinweis: 4. Parameter "false")$targetRule->bindRuleToEntity($ruleId, $productId, 'product', false);
und in
Mage_Rule_Model_Resource_Abstract
wurde die FunktionbindRuleToEntity
geändert in:und Linie
$adapter->delete(...)
wurde eingewickeltEin weiterer Fehler, shell / indexer.php --reindex targetrule, bewirkt nichts. Sie können also nicht über cron / console neu indizieren. Beheben Sie dies durch Hinzufügen von
Enterprise_TargetRule_Model_Index
:SPÄTER: Siehe diesen Patch https://github.com/magendooro/targetrulefix
quelle
Integrity constraint violation:for key '5B1C775075460366570ABDA2839BC68A'
-> dieser Schlüssel stammt vonenterprise_targetrule_index_related
... haben Sie eine Idee, ob er mit den genannten Änderungen zusammenhängt?Ich habe beschlossen, das, was ich gefunden habe, als Antwort hinzuzufügen, damit diese Frage nicht als unbeantwortet markiert wird.
Beim Speichern eines Produkts werden die Zielregeln für dieses Produkt indiziert und dies geschieht am Ende :(
Mage_Rule_Model_Resource_Abstract::bindRuleToEntity()
)Dadurch werden alle anderen Produkte aus der Liste der betroffenen Produkte gelöscht. Wenn ich den Modus für den Zielregelindex auf "manuell" setze, wird das Problem nicht reproduziert. Aber das löst es nicht. Es verbirgt es einfach.
Aus meiner Sicht ist dies ein schwerwiegender Magento EE-Fehler.
quelle