Erst vor einigen Wochen habe ich das gleiche Problem im JTL Shop 3 via Plugin gelöst. Nun die gleiche Anforderung in einem xtcModified: verschiedene Seiten im Onlineshop sollen komfortabel per CSS im Design angepasst werden. Ein Beispiel: Produktseiten in einer Kategorie „Garten“ sollen über einen grünen Hintergrund verfügen, solche in der Kategorie „Technik“ über einen blauen.
Was dabei auch beachtet werden soll ist die Kategoriestruktur: die Unterkategorien in „Technik“ sollen bspw. weiterhin über einen blauen Hintergrund verfügen, optional aber individuell anpassbar sein.
Ein Weg ist das Setzen des class
Attributes im body
Tag des Dokuments. In einem xtcModied (und sicher auch in jedem anderen xt:Commerce oder xt:Commerce Fork) können wir dies in 2 Schritten erreichen. Leider müssen wir erneut in die Kern des Systems eingreifen.
1. CSS Fragment erstellen
In includes/application_top.php
nach folgendem Fragment suchen:
if (xtc_not_null($cPath)) { $cPath_array = xtc_parse_category_path($cPath); $cPath = implode('_', $cPath_array);
Danach einfügen:
// BOF cPath to CSS foreach($cPath_array as $cPath_item) { $cPath_css .= "cat_" . $cPath_item . " "; } $cPath_css = trim($cPath_css); // EOF
Damit wird ein String der Art „cat_61 cat_6“ erzeugt, den wir nun noch als Wert des class
Atributes des body
Tags setzen.
2. class Attribut im body
In includes/header.php
folgende Code suchen:
if (strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) { echo '<body onload="resize();"> '; } else { echo '<body>';
Und mit folgendem Code ersetzen:
// BOF cPath to CSS if (strstr($PHP_SELF, FILENAME_POPUP_IMAGE )) { echo '<body class="' . $cPath_css . '" onload="resize();"> '; } else { echo '<body class="' . $cPath_css . '">'; } // EOF
Das Ergebnis
Mit diesen Schritten erhalten wir folgenden öffnenden body
Tag in der Kategorieansicht einer Kategorie mit der ID 23 und der Elternkategorie mit der ID 1:
<body class="cat_1 cat_23">
Selbiges gilt für Produktseiten in dieser Kategorie.