$_GET['versie'] in CSS ??

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Tom aan t Goor

Tom aan t Goor

20/12/2012 09:18:00
Quote Anchor link
Ik heb een (behoorlijk groot) CSS bestand.
Hier een klein voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
#menu{
  background: #FF0000;
}


Nu wil ik dat je ook een CSS kan aanpassen.
Dat je kan kiezen of je menu de achtergrond rood of groen hebt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
#menu{
  background: #FF0000;
}
#menu{
  background: #00FF00;
}


Nu wil ik dat de link naar de css bijvoorbeeld dit wordt:
style.css?menu=groen
style.css?menu=rood

Is het dan mogelijk om via me CSS bestand de $_GET['menu'] uit te lezen?
Of is een andere manier beter?
 
PHP hulp

PHP hulp

21/11/2024 20:22:46
 
No One

No One

20/12/2012 09:21:09
Quote Anchor link
Ja dat is mogelijk.

je kunt de stylesheet ook gewoon style.php noemen...
voeg boven aan een header toe om de mime type text/css mee te geven (zo even uit mijn hoofd, "Mime-Type: text/css" )

en dan kun je daarna buiten de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? ?>
tags je CSS tekst doen...en tussen door op plaatsen waar je dat wil php tags gebruiken.
 
Tom aan t Goor

Tom aan t Goor

20/12/2012 09:26:22
Quote Anchor link
Henze Berkheij op 20/12/2012 09:21:09:
Ja dat is mogelijk.

je kunt de stylesheet ook gewoon style.php noemen...
voeg boven aan een header toe om de mime type text/css mee te geven (zo even uit mijn hoofd, "Mime-Type: text/css" )

en dan kun je daarna buiten de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? ?>
tags je CSS tekst doen...en tussen door op plaatsen waar je dat wil php tags gebruiken.


Dan zou mijn 'css' (style.php) bestand dus zo iets worden?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<style type="text/css">
<?php
if($_GET['menu'] == 'rood'){
echo '#menu{
  background: #FF0000;
}'
;
}
else{
    echo '#menu{
  background: #00FF00;
}'
;
}

?>

</style>
Gewijzigd op 20/12/2012 09:26:37 door Tom aan t Goor
 
TJVB tvb

TJVB tvb

20/12/2012 09:27:12
Quote Anchor link
Ik zou dan een basis css bestand gebruiken met voor de aangepaste waardes losse css bestanden (of een php bestand dat de css weergeeft)
 
No One

No One

20/12/2012 09:28:49
Quote Anchor link
@Tom Tom : bijna
bovenaan nog even
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
header("Mime-Type: text/css");
?>

meegeven om aan de browser te laten weten dat het een css bestand is.
en de html tags verwijderen natuurlijk...anders is het geen CSS bestand maar een stukje html..
Gewijzigd op 20/12/2012 09:29:50 door No One
 
Tom aan t Goor

Tom aan t Goor

20/12/2012 09:55:38
Quote Anchor link
Henze Berkheij op 20/12/2012 09:28:49:
@Tom Tom : bijna
bovenaan nog even
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
header("Mime-Type: text/css");
?>

meegeven om aan de browser te laten weten dat het een css bestand is.
en de html tags verwijderen natuurlijk...anders is het geen CSS bestand maar een stukje html..


Dan zou dit dus mijn bestand worden?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
header("Mime-Type: text/css");

echo '<style type="text/css">';
if($_GET['menu'] == 'rood'){
echo '#menu{
  background: #FF0000;
}'
;
}
else{
    echo '#menu{
  background: #00FF00;
}'
;
}

echo '</style>';
?>
 
No One

No One

20/12/2012 10:00:02
Quote Anchor link
ehm...wordt het een CSS bestand of een style element in je html in de <head> ??

die
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo '<style type="text/css">'; ?>
en
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo '</style>'; ?>

moet je weghalen..
 
Kris Peeters

Kris Peeters

20/12/2012 10:02:13
Quote Anchor link
Geen <style> toevoegen aan het document.
Dat is enkel nodig als de code tussen de HTML staat.
 
Tom aan t Goor

Tom aan t Goor

20/12/2012 10:03:01
Quote Anchor link
Henze Berkheij op 20/12/2012 10:00:02:
ehm...wordt het een CSS bestand of een style element in je html in de <head> ??

die
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo '<style type="text/css">'; ?>
en
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo '</style>'; ?>

moet je weghalen..


Het word een CSS in PHP bestand.
Ik heb nog wat veranderd. Klopt het zo, of kan het nog beter?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
header("Mime-Type: text/css");

if($_GET['menu'] == 'rood'){
    ?>

    @variables{
        menubackground: #FF0000;
    }
    <?php
}else{
    ?>

    @variables{
        menubackground: #00FF00;
    }
    <?php
}
?>

#menu{
    background: var(menubackground);
}
 
No One

No One

20/12/2012 10:09:21
Quote Anchor link
Zo kan het ook idd ja...overigens heeft PHP ook nog iets leuks voor dergelijke manier van programmeren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
header("Mime-Type: text/css");

if($_GET['menu'] == 'rood'): ?>

    @variables{
        menubackground: #FF0000;
    }
<?php else: ?>
    @variables{
        menubackground: #00FF00;
    }
<?php endif; ?>

#menu{
    background: var(menubackground);
}

maakt het wat overzichtelijker en leesbaarder. je raakt zo niet in de war met die accolades

http://php.net/manual/en/control-structures.alternative-syntax.php
Gewijzigd op 20/12/2012 10:10:08 door No One
 
Kris Peeters

Kris Peeters

20/12/2012 10:10:24
Quote Anchor link
Het klopt.
... en het kan altijd beter. Maar 'beter' is vaak voor discussie vatbaar.
bv.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
header("Mime-Type: text/css");
echo '
    @variables{
        menubackground: '
. (isset($_GET['menu']) && $_GET['menu'] == 'rood') ? '#00FF00' : '#00FF00' . ';
    }
'
;
?>

#menu{
    background: var(menubackground);
}
 
No One

No One

20/12/2012 10:17:23
Quote Anchor link
@Kris...toch zou ik gaan voor uitgeschreven stijl. Deze is leesbaarder, plus je kan sneller aanpassingen doen waarbij de twee uit elkaar groeien..bijvoorbeeld wanneer bij menu=rood nog extra variabelen moeten die bij menu=groen niet nodig zijn. in jou stukje code moet ik eerst goed kijken en hopen dat ik hem direct goed heb geplaatst.
 
Tom aan t Goor

Tom aan t Goor

20/12/2012 10:24:56
Quote Anchor link
Ik heb dit nu in mijn style.php gezet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
header("Mime-Type: text/css");

if($_GET['menu'] == 'rood'): ?>

    @variables{
        menubackground: #FF0000;
    }
<?php else: ?>
    @variables{
        menubackground: #00FF00;
    }
<?php endif; ?>

#menu{
    background-color: var(menubackground);
    width: 150px;
    height: 150px;
}


Nu worden de hoogtes en breedtes wel goed doorgegeven. Alleen de achtergrond niet. Ziet iemand wat ik verkeerd doe? (Dit is de eerste keer dat ik met variabeles in CSS werk, dus ik weet ook niet of dit de beste variabele manier is).
 
Kris Peeters

Kris Peeters

20/12/2012 10:26:52
Quote Anchor link
Henze Berkheij op 20/12/2012 10:17:23:
@Kris...toch zou ik gaan voor uitgeschreven stijl. Deze is leesbaarder, ...


Ja, ik zeg het ook: het is voor discussie vatbaar (en ik spreek je hier niet tegen).
Het punt is ook: bij kleine voorbeelden zie je vaak niet goed waarom je het doet.
Nog een ander voorbeeld, met de herdoc notatie.
Het voordeel aan heredoc is dat je je nooit moet zorgen maken over escapen. Je kan een bestaand bestand copy/pasten, volledig onveranderd.
(dan in de structuur zetten en eventueel php-variabelen invullen waar nodig)
Voor template-achtige documenten heel handig.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
header("Mime-Type: text/css");
$menubackground = (isset($_GET['menu']) && $_GET['menu'] == 'rood') ? '#FF0000' : '#00FF00';
// zie "heredoc notation".
echo <<<CSS
  #menu {
    background: $menubackground;
  }
CSS
;
?>
Gewijzigd op 20/12/2012 10:28:35 door Kris Peeters
 
Erwin H

Erwin H

20/12/2012 10:50:50
Quote Anchor link
Tom Tom op 20/12/2012 10:24:56:
Nu worden de hoogtes en breedtes wel goed doorgegeven. Alleen de achtergrond niet. Ziet iemand wat ik verkeerd doe? (Dit is de eerste keer dat ik met variabeles in CSS werk, dus ik weet ook niet of dit de beste variabele manier is).

Waarschijnlijk omdat je GET parameter de parameter is voor je normale pagina. De http request voor het CSS stylesheet is een nieuw http request en dan is de server de GET parameters van de gewone pagina dus alweer kwijt. Wil je dus die parameter gebruiken in je CSS script, dan zal je in je normale script die GET parameter moeten doorgeven in de link naar het CSS script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
//in je normale pagina script:
echo '<link rel="stylesheet" type="text/css" href="www.blabla.nl/style.php?menu='.$_GET['menu'].'" /> ';
?>
 
Tom aan t Goor

Tom aan t Goor

20/12/2012 11:22:21
Quote Anchor link
In mijn HTML bestand staat
<link rel="stylesheet" type="text/css" href="style.php?menu=rood" />

Dus zou het moeten werken?
 
Erwin H

Erwin H

20/12/2012 11:24:12
Quote Anchor link
Volgens mij wel. Controleer eens door print_r($_GET) in je style.php te zetten en dan die link direct in je browser te openen.
 
Kris Peeters

Kris Peeters

20/12/2012 11:35:25
Quote Anchor link
Ja.
Surf eens rechtstreeks naar style.php?menu=rood
en kijk of het resultaat geeft wat het moet zijn.

Nog iets: eens de css file functionneert, kan je best de error reporting uit zetten, toch zeker de notice en warning.
Die error reporting kan je toch niet zien, eens het via <link> wordt opgevraagd, en zorgt enkel maar extra code, waar css niets van begrijpt.
Dat geldt ook voor andere dingen die je dynamisch genereert met php (bv. images met GD, zoals de captcha image; JSON data voor Ajax; ...)
 
TJVB tvb

TJVB tvb

20/12/2012 11:43:36
Quote Anchor link
Kris Peeters op 20/12/2012 11:35:25:
Nog iets: eens de css file functionneert, kan je best de error reporting uit zetten, toch zeker de notice en warning.

In productie staat display errors natuurlijk uit, maar je error reporting aan en dat log je.
 
Chris PHP

Chris PHP

20/12/2012 11:46:37
Quote Anchor link
Misschien is dit niet gebruikelijk maar,

Is het niet makkelijker om per 'thema' een losse stylesheet te maken? Dus dat je voor elke kleur die je wil een losse sheet maakt waar je de kleuren aanpast? Lijkt me stukken overzichtelijker dan alles zo uit te schrijven in php niet?

Dus kan krijg je in je css/style folder het folgende.
rood.css
groen.css
blauw.css
etc.

En je slaat in een 'functionele' cookie op welke keuze de gebruiker heeft gemaakt, of als alleen ingelogde gebruiker dit kunnen wijzigen sla je het op in je database. En dan kijk je gewoon simpelweg wat er in je cookie of db staat, en aan de hand daarvan laad je de juiste css file.
 
Kris Peeters

Kris Peeters

20/12/2012 11:47:01
Quote Anchor link
TJVB tvb op 20/12/2012 11:43:36:
In productie staat display errors natuurlijk uit, maar je error reporting aan en dat log je.

ja, inderdaad

Chris NVT op 20/12/2012 11:46:37:
... per 'thema' een losse stylesheet te maken? ...


Ja, waarom niet. Ik weet zelfs niet of dat zo ongebruikelijk is.
Wat je trouwens kan doen, is bv. alle gemeenschappelijke css in style.css zetten en dan juist de specifieke dingen in rood.css te zetten.
Gewijzigd op 20/12/2012 11:51:00 door Kris Peeters
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.