Jump to content
xt:Commerce Community Forum

Wie funktioniert das ???


radi

Recommended Posts

Hallo,

ich bin gerade auch an dem gleichen Thema. Habe aber noch keinen richtigen Ansatz. Bis jetzt versuche ich mich gerade an dieser Version.

Aus der URL die Rubrik NR. auslesen und entsprechend eine CSS Datei laden.

Geht aber noch nicht mit Artikel Details.

Füge folgenden Code in die Datei: includes/header.php ein.


<?php

// CSS Style changer

$a = substr($_SERVER['PHP_SELF'], 20);
$a = explode("_", $a);

switch ($a[0]) {
case 1:
$cssstyle = "/stylesheet1.css";
break;
case 2:
$cssstyle = "/stylesheet2.css";
break;
case 3:
$cssstyle = "/stylesheet3.css";
break;
default:
$cssstyle = "/stylesheet.css";
}


if (!file_exists('templates/'.CURRENT_TEMPLATE.$cssstyle)) {
$cssstyle = "/stylesheet.css";
}

?>

<link rel="stylesheet" type="text/css" href="<?php echo 'templates/'.CURRENT_TEMPLATE.$cssstyle; ?>" />
[/PHP]

Wenn jemand aber eine bessere Idee hat, bin ich auch dankbar.

www.basic-home.de

Link to comment
Share on other sites

So, habe das Thema noch ein wenig optimiert.

Jetzt wird jede Rubrik und das enthaltene Angebot mit dem jeweiligen CSS formatiert.

Änderug in:

includes/application_top.php

Folgende Funktion ganz unten über xtc_count_cart(); einfügen:


function mycategoryid (){
global $cPath_array;
return $cPath_array[0]; //mit suchmaschinenfreundlichen links [0] ohne [1]
}
[/PHP]

Änderung in:

includes/header.php

[PHP]
// CSS Style changer
switch (mycategoryid()) {
case 1:
$cssstyle = "/stylesheet1.css";
break;
case 2:
$cssstyle = "/stylesheet2.css";
break;
case 3:
$cssstyle = "/stylesheet3.css";
break;
default:
$cssstyle = "/stylesheet.css";
}

if (!file_exists('templates/'.CURRENT_TEMPLATE.$cssstyle)) {
$cssstyle = "/stylesheet.css";
}

<link rel="stylesheet" type="text/css" href="<?php echo 'templates/'.CURRENT_TEMPLATE.$cssstyle; ?>" />
[/PHP]

www.basic-home.de

Link to comment
Share on other sites

  • 2 weeks later...

"Aus der URL auslesen" kann (je nach URL und je nachdem wonach man sucht) zu uneindeutigen Ergebnissen führen. Und wenn man irgendwann Erweiterungen (wie z.B. ShopStat) installiert, ändern sich die URLs und die ganzen Funktionen greifen nicht mehr.

Ich regel solche "Inhalts abhängigen" Umgestaltungen lieber mit ein paar global verfügbaren Variablen, zum Beispiel $_SESSION, $this, $GLOBALS ...

Damit kann man auch Änderungen an System-Dateien umgehen.

Und wenn's um unterschiedliche Stylesheets geht, brauchst Du die nicht in der application_top.php aufzurufen. Nimm dazu besser die "general.js.php" im Template-Ordner "javascript" - Die wird ja ohnehin im HTML-Header eingefügt.

Probier's mal aus, Du kannst ja PHP im Template verwenden.


<pre>{php}print_r($GLOBALS[cPath_array]);{/php}</pre>

... oder wenn Du direkt nur die momentan aktive Kategorie brauchst

<pre>{php}print_r($GLOBALS[current_category_id]);{/php}</pre>

:-)

Link to comment
Share on other sites

  • 1 month later...

Der von "shopler" beschriebene Weg müsste eigentlich ziemlich direkt in die js-Datei übernommen werden können.

Du brauchst also prinzipiell eine Funktion, die "erkennt wo Du bist" - und die Ergebnisse zurückgibt, mit denen Du Deine verschiedenen Styles unterscheiden kannst.

:-)

Beziehungsweise ...

Na, die Funktion muss gar nicht, wirklich "erkennen", welcher Shop-Bereich aktiv ist - das weiß der Shop ja ohnehin selbst - sonst würden die ganzen Geschichten wie BreadCrumb, aktive Kategorie-Markieren etc. überhaupt nicht funktionieren können ...

Man muss sich eigentlich nur die globale Variable herauspicken, die einen weiterbringt bzw. die für das, was man erreichen will, auch das richtige "Kriterium" ist. Das ist insbesondere bei Kategorien oftmals auch Geschmacksache - Einige globale "Kategorien-Bezeichner" sind zum Beispiel "an" bzw. "gesetzt", wenn man gar nicht in einer Kategorie ist - sondern sich bloß eine Produktbewertung eines Produktes in dieser Kategorie anguckt. Oder was soll z.B. in der Unterkategorie einer Kategorie passieren?

Zweifelsfälle ... *Beispiel-aus-den-Fingern-saug* .... Wenn Kategorie Rasenmäher irgendwie grün sein soll - aber man guckt sich grad das Verlängerungskabel an, das a) als Zubehör für Rasenmäher und B) als Zubehör für Gartenhäcksler (irgendwie braun) einsortiert ist?

Es kommt da hauptsächlich auf die gewünschte "Verhaltensweise" an, was für Layout A klasse klappt, kann für B wiederum völlig ungeeignet sein ...

--> Prinzipiell jedenfalls kann man sein Layout so ziemlich allen Bedingungen und jedem Piesepampel abhängig machen ...

("wenn Anzahl Produkte im Warenkorb Schnappszahl, dann Foto von Jägermeisterbuddel einblenden" ...)

--> Dieser Piesepampel muss halt bloß "bekannt" sein - oder sich aus "bekannten Daten" zusammensetzen.

Tipp:

Was alles bekannt ist, kann man sich gesammelt anzeigen lassen: Einmal

<pre>{php} print_r($GLOBALS); {/php}</pre> in die index.html schreiben Shop aufrufen - Quelltext angucken - ... Nagut. Übersichtlich ist etwas anderes - da kann man ... laaaange scrollen. Ist n Haufen.

Scrollen lohnt sich aber - Oft kann man sich ne Menge Programmier-Arbeit sparen - da die Daten, die man haben möchte, dem System ohnehin schon bekannt sind - und nur noch angezeigt werde müssten.

Für Dich interessant:

Probier doch erst mal aus, was die erwähnte "js.php"-Datei so macht - die ist zwar ursprünglich für die Leute gedacht, die ihren Shop mit noch mehr überflüssigem JS-Blödsinn vollpupen wollen - Alles was dort reingeschrieben wird, erscheint im HTML-Header einer jeden Shopseite.

Man kann dort z.B.

a) Alle im Shop benutzten JavaScripts direkt reinschreiben (und die schöne xt:C Tradition, ne ganze Bildschirmseite voller Quelltext aufzubauen, bevor das erste Sterbenswörtchen lesbarer Inhalt auftaucht gediegen fortsetzen) - wer will, kann den Header dort nach Herzenslust weiter zumüllen.

B) Man kann seine Scripts dort natürlich auch via Verlinkung aufrufen. Also dazu ist das Teil eigentlich gedacht.

Interessant wird die Geschichte aber, weil es eine ".php"-Datei ist - Man kann dort also ein bisschen mehr anstellen, als "statische Texte automatisch vor jede Seite zu klatschen"

c) PHP-Code wird in der "general.js.php" interpretiert - und die gesamte Datei wird "ausgeführt" bevor sie "includet" wird. Das heißt also, dass sich ihr Inhalt auch dynamisch verändern lässt - und man eine bequeme Möglichkeit hat, ein paar Spezialfunktionen einzubauen.

Also ein komfortabler Weg, in deinem Shop bei Zustand "A = blablabla" andere Informationen in den Header zu schreiben als bei Zustand "A = tralala". Und nachdem Stylesheet-Aufrufe ohnehin in den Header gehören - ist die js-Datei der ideale Ort für sowas.

--> Vorteil: Diese "Veränderungen" gelten damit auch NUR für das aktive Template - Wenn Du dann ein anderes Template einschaltest, interessiert sich DAS dann nicht mehr für deine "tralala-von-blablabla"-Unterscheidungen.

--> Wenn Du hingegen in der "applicationtop-Dings" herumbastelst, ist das eine System-Datei die immer so ausgeführt wird, wie Du sie geändert hast. Egal, welches Template Du installierst.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...