Ich verwende einen Cron, um Inventaränderungen jede Nacht zu importieren. Wenn ich versuche, die Informationen eines Produkts (Preis usw.) zu ändern, erhalte ich den folgenden Fehler:
%Vor%Ich kann das beheben, indem ich im Cache Management Panel auf "Flat Catalog Product neu erstellen" klicke. Ich habe ein Cron eingerichtet, um dies programmgesteuert mit dem folgenden Code zu tun:
%Vor%Ich erhalte keine Fehler, wenn ich das Skript ausführe, aber der Fehler "Spalte nicht gefunden" bleibt bestehen.
Weiß jemand, wie ich den flachen Katalog anders als über die Verwaltungsschnittstelle neu erstellen kann?
Vorher habe ich gesagt:
%Vor%Das ist nicht wahr. Entweder funktioniert. Ich habe jedoch durch einen ziemlich schmerzhaften Trial-and-Error-Prozess herausgefunden, dass die flachen Produkttabellen nicht korrekt neu erstellt werden, wenn ich nicht auch den gesamten Katalog neu aufbaut. So habe ich mein Problem endlich gelöst:
%Vor%Im Grunde einfach alles neu erstellen. Mach dir keine Sorgen über die Optimierung. Wie jemand einmal sagte: "Vorzeitige Optimierung ist die Wurzel allen Übels."
Ich habe festgestellt, dass es eine effizientere Möglichkeit gibt, nur bestimmte Produktattribute zu aktualisieren.
%Vor%Oder Sie können das gesamte Produkt in der flachen Tabelle aktualisieren:
%Vor%Dabei ist $ productIds ein Array der zu aktualisierenden Product-Entity-IDs. Diese Funktionen aktualisieren auch andere indizierte Daten in Bezug auf die von Ihnen aktualisierten Produkte. Hoffe, das hilft.
Sehen Sie sich dieses Skript an. Ich persönlich hatte einige Probleme damit, aber andere scheinen damit recht zufrieden zu sein Wenn Sie die ganze Sache nicht wollen, können Sie das Teil, das das flache Katalogprodukt neu baut und einen Cron-Job darauf richtet, leicht herausziehen.
Ich kann es auch nicht richtig funktionieren lassen.
Wenn ich das Rebuild Flat Catalog Product aus dem Admin neu erstelle, funktioniert es gut und ich bekomme den SQL-Spaltenfehler nicht, aber wenn ich es programmatisch mache, funktioniert es nicht über:
Mage :: getResourceModel ('catalog / product_flat_indexer') - & gt; rebuild ();
Ich habe diesen Code basierend auf dem Shell-Reindex-Skript geschrieben. Ich habe es in Magento 1.5.1 mit einem Web-Skript (mit langer max_execution_time) getestet.
%Vor%Tags und Links magento