Kategoriemenü
- Kategorie: AfPark
- Erstellt: Freitag, 09. März 2012 11:03
- Zuletzt aktualisiert: Freitag, 09. März 2012 11:27
- Geschrieben von Martina Major
Zuordnung der Produkte zu Menüpunkten im CRON
Für die Zuordnung der Produkte zu Menüpunkten, wird für jede Domain eine Index-Tabelle (id, shop_id, menu_item_id) erstellt: PREFIX_TABLE_MENU + DomaindID + a/b-switch.
Diese Menü-Tabellen werden nach dem Einlesen der Produkte für alle geänderten Shops für jede aktive Domain erstellt.
Zuordnung der Produkte zu Menüpunkten im Backend
Die Menü-Tabelle muss bei Änderungen im Menüpunkt neu erstellt werden, damit die Änderung im Frontend wirksam wird.
Um hier bei einer ggf. bereits gut laufende Domain - die Seitenladezeiten nicht unnötig zu verzögern wäre für die Bearbeitung der Menüpunkte und Kontrolle, des Ergebnisses, die Neuerstellung der Tabelle - ohne diese aktiv zu schalten möglich. Dazu müssten dann innerhalb der Bearbeitung im Backend - eine Art Vorschau möglich sein. Aufruf der Domain mit einem Kontrollparameter, bei dem die Daten für die Anzeige des Menüs aus dem TMP-Tabellen und der inaktiven Index-Tabelle verwendet würden.
Mit Beendigung und Speichern des geänderten Menüs (Erstellung der Menü-XML) erfolgt in jedem Fall der Switch auf die geänderte Index-Tabelle.
Datei: module/mod_catmenu/catmenu_funktionen.php (Auszug)
/*------------------------------------------------------ // Zuordnung der Produkte zu den Menüpunkten eines // catmenüs, Eintrag in Steuertabelle. // Das Update selbst erfolgt erst im Cron-Job, bzw. // beim manuellen Ausführen des Cron-Jobs //------------------------------------------------------*/ function tep_db_prepare_update_catmenu_catids($domid) { tep_db_connect(); $query = "INSERT INTO ".TABLE_TMP_UPDATE_CHECK." (domain_id, need_update) VALUES ('" .$domid."', '3')"; $result = mysql_query($query) OR log_db($query.' '.mysql_error()); if (!$result) { $error = array('code' => 2, 'text' => 'Es ist ein Fehler beim Löschen der Daten aufgetreten:', 'err' => mysql_error() ); return $error; } return true; }