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.

Eine Antwort schreiben