Styleswitcher

Gesperrt
eltowo
Beiträge: 6
Registriert: Fr 5. Nov 2004, 09:11
Wohnort: EF
Kontaktdaten:

Styleswitcher

Beitrag von eltowo » Fr 5. Nov 2004, 09:19

Hat schon einmal jemand versucht einen puren PHP-Styleswitcher (ohne Java!) in eine "Contenidoseite" einzubauen?
Ich habe bisher alle Varianten dieser Seite http://www.perun.net/archiv/2004/01/23/ ... r/#more-25 versucht, leider ohne Erfolg.
Wenn mal eine Lösung funktioniert hat, dann wurde diese nicht an die folgenden Seiten weitergegeben, da die url dann immer in etwa so aussah: front_content.php&style=xxx anstatt front_content.php?idcat=X&style=xxx.

Wäre schön, wenn mir da jemand weiterhelfen könnte...

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Fr 5. Nov 2004, 09:37

du kannst ja das ganze über sessions lösen. dann brauchst du das gar nicht immer weiter zu geben:

Code: Alles auswählen

<?php

if (!empty($_REQUEST['style'])) $_SESSION['style'] = $_REQUEST['style'];

$stil = $style[$_SESSION['style']];
// wobei $style ein assoziativer array mit den dateinamen ist

echo "<link rel=\"stylesheet\" href=\"$stil\" type=\"text/css\">";
?>
gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 5. Nov 2004, 09:39

machs so:

Code: Alles auswählen

<a href="<?php echo "front_content.php?idcat=$idcat&idart=$idart&lang=$lang&style=default"; ?>">Das Standard-Design</a>
<a href="<?php echo "front_content.php?idcat=$idcat&idart=$idart&lang=$lang&style=style1"; ?>">Design 1</a>
<a href="<?php echo "front_content.php?idcat=$idcat&idart=$idart&lang=$lang&style=style2"; ?>">Design 2</a>
*** make your own tools (wishlist :: thx)

eltowo
Beiträge: 6
Registriert: Fr 5. Nov 2004, 09:11
Wohnort: EF
Kontaktdaten:

Beitrag von eltowo » Fr 5. Nov 2004, 10:51

Tut mir leid, aber ich bin irgendwie immer noch blind. Momentan sieht das Ganze bei mir so aus:

im head-Bereich:

Code: Alles auswählen

<?php
if($style=="1") {echo "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/01.css\">";}
if($style=="2") {echo "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/02.css\">";}
if($style=="3") {echo "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/03.css\">";}
?>
<link href="css/print.css" rel="stylesheet" type="text/css" media="print">
und die Links im body:

Code: Alles auswählen

<a href="<?php echo "front_content.php?idcat=$idcat&idart=$idart&lang=$lang&style=1"; ?>" target="_self">[ 1 ]</a> 
<a href="<?php echo "front_content.php?idcat=$idcat&idart=$idart&lang=$lang&style=2"; ?>" target="_self">[ 2 ]</a> 
<a href="<?php echo "front_content.php?idcat=$idcat&idart=$idart&lang=$lang&style=3"; ?>" target="_self">[ 3 ]</a>
Das Resultat des Ganzen:
Wenn die Seite zum ersten mal aufgerufen wird, wird erst einmal gar kein Stylesheet geladen. Erst wenn ich über die Links den jeweiligen Stylesheet auswähle, bekomme ich diesen auch. Will ich nun zu einer anderen Seite gehen, wird selbstverständlich wieder kein Style angezeigt.

Gibt es irgendeine Möglichkeit, außer Freitod?
Vielleicht könnt ihr mir ja eine idotensichere Variante vorschlagen, also im head so: ... und im body so: ..., da meine php-Kenntnisse doch noch sehr beschränkt sind. Ob Session- oder Cookievariante ist mir dabei erstmal egal.

DANKE!

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Fr 5. Nov 2004, 11:18

das problem bei der übergabe via get ist einfach, dass alle links den wert übergeben müssten. das heisst natürlich auch alle module. konkret bedeutet das, dass du alle module anpassen müsstest.

deshalb würde ich dir vorschlagen, über die session zu gehen.

damit auch dann ein stil ausgewählt wird, wenn anfänglich nichts gewählt worden ist, müsste der code so aussehen:

Code: Alles auswählen

<?php

$stil = array('01'=>'css/01.css','02'=>'css/02.css','03'=>'css/01.css');

if (!empty($_REQUEST['style'])) $_SESSION['style'] = $_REQUEST['style'];
if (empty($_SESSION['style'])) $_SESSION['style'] = '01';

$stil = $style[$_SESSION['style']]; 

echo "<link rel=\"stylesheet\" href=\"$stil\" type=\"text/css\">"; 
?>
du musst einfach sicherstellen, dass die session initialisiert ist.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

eltowo
Beiträge: 6
Registriert: Fr 5. Nov 2004, 09:11
Wohnort: EF
Kontaktdaten:

Beitrag von eltowo » Fr 5. Nov 2004, 12:26

Gute Antwort, funktioniert aber leider immer noch nicht...
You got to do, what you got to do!

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Fr 5. Nov 2004, 12:37

die sessions sind aktiviert? das ganze funktioniert natürlich nur, wenn eine session am laufen ist.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Fr 5. Nov 2004, 13:47

okay, so funktionierts:

(1) im layout vor die erste zeile folgende zeile einfügen:

Code: Alles auswählen

<?session_start();?>
(2) dann entweder als modul oder direkt im layout folgenden code verwenden:

Code: Alles auswählen

<?php

$cssStil = array(1 =>'css/01.css',2 =>'css/02.css',3 =>'css/03.css'); 

if (!empty($_REQUEST['style'])) $_SESSION['style'] = $_REQUEST['style']; 
if (empty($_SESSION['style'])) $_SESSION['style'] = 1; 

$stil = $cssStil["{$_SESSION['style']}"]; 

echo "<link rel=\"stylesheet\" href=\"$stil\" type=\"text/css\">";
?>
das funktioniert nun garantiert. mindestens bei mir.

für die css-wahl einfach per get oder post 'style=1' oder 'style=2' oder 'style=3' übergeben.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

Soeren
Beiträge: 33
Registriert: Mi 29. Dez 2004, 17:29
Wohnort: Bremen
Kontaktdaten:

Beitrag von Soeren » Do 27. Jan 2005, 22:11

Hi,

der Styleswitcher interessiert mich auch ziemlich da ich in der Firma so einige Leute mit Flaschenböden vor den Augen habe.

Bin nun an dem Punkt, dass ich scheinbar die Session nicht initialisiert bekomme. Müsste ich die Sid nicht auch bei mir in der Adresszeile sehen im Browser?

Code: Alles auswählen

<?session_start();?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
        <title>Titel</title>
        <link rel="stylesheet" type="text/css" href="css/format.css">
</head>
<?php 

$cssStil = array(1 =>'css/01.css',2 =>'css/02.css',3 =>'css/03.css'); 

if (!empty($_REQUEST['style'])) $_SESSION['style'] = $_REQUEST['style']; 
if (empty($_SESSION['style'])) $_SESSION['style'] = 1; 

$stil = $cssStil["{$_SESSION['style']}"]; 

echo "<link rel=\"stylesheet\" href=\"$stil\" type=\"text/css\">"; 
?>
<body bgcolor="white" style="margin:0px">
Des weiteren komme ich mit dem Post oder get nicht so ganz klar. Kannst Du mir mal eine Hilfe geben, wie ich den Link gestalten muss um umzuschalten?!

Danke soweit
-------------------------------
Contenido 4.4.5; Windows

andreasb
Beiträge: 212
Registriert: Fr 10. Dez 2004, 02:48
Wohnort: Fernwald
Kontaktdaten:

Beitrag von andreasb » Do 26. Apr 2007, 13:54

Das funkt zwar bei mir, aber eigentlich bräuchte ich einen Switcher für die Font-Grössse. Z.B. ein "+" um die Grösse sukzessive zu vergrössern und analog ein "-" um sie zu veringern.

Hat das schon jemand hier gemacht?
Danke!

andreasb
Beiträge: 212
Registriert: Fr 10. Dez 2004, 02:48
Wohnort: Fernwald
Kontaktdaten:

Beitrag von andreasb » Mo 30. Apr 2007, 03:15

Hat sich erledigt. Ich habe ein JS-Script reinkodiert.

Gesperrt