radi Posted May 31, 2007 Report Share Posted May 31, 2007 Guten Abend, ich habe in den Live! Shops diese Seite gefunden: http://www.intensive-care-cosmetics.de/ Dort gibt es drei Kategorien in drei Farben/Templates und ein Grundtemplate in Grau. Wenn man sich den Quellcode anguckt, erkennt man das verschiedene css-Dateien geladen werden. Ist das die Lösung? Wenn ja, wie realisiert man sowas? Radi Link to comment Share on other sites More sharing options...
shopler Posted June 3, 2007 Report Share Posted June 3, 2007 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 More sharing options...
shopler Posted June 5, 2007 Report Share Posted June 5, 2007 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 More sharing options...
pufaxx Posted June 18, 2007 Report Share Posted June 18, 2007 "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 More sharing options...
Hottinger Posted August 15, 2007 Report Share Posted August 15, 2007 ... das klingt nach genau der Lösung, die ich brauche ... aber wie kombiniert man die beiden hier geschilderten Ansätze bzw. was muss ich in die general.js.php nun eintragen ... bin leider ne null in sachen php ... DANKE! Link to comment Share on other sites More sharing options...
pufaxx Posted August 19, 2007 Report Share Posted August 19, 2007 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 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. 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.