$_GET['versie'] in CSS ??
Hier een klein voorbeeld:
Nu wil ik dat je ook een CSS kan aanpassen.
Dat je kan kiezen of je menu de achtergrond rood of groen hebt:
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?
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 tags je CSS tekst doen...en tussen door op plaatsen waar je dat wil php tags gebruiken.
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 tags je CSS tekst doen...en tussen door op plaatsen waar je dat wil php tags gebruiken.
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 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)
Gewijzigd op 20/12/2012 09:26:37 door Tom aan t Goor
Ik zou dan een basis css bestand gebruiken met voor de aangepaste waardes losse css bestanden (of een php bestand dat de css weergeeft)
bovenaan nog even
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
Henze Berkheij op 20/12/2012 09:28:49:
@Tom Tom : bijna
bovenaan nog even
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..
bovenaan nog even
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?
die en
moet je weghalen..
Dat is enkel nodig als de code tussen de HTML staat.
Henze Berkheij op 20/12/2012 10:00:02:
Het word een CSS in PHP bestand.
Ik heb nog wat veranderd. Klopt het zo, of kan het nog beter?
Code (php)
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
... en het kan altijd beter. Maar 'beter' is vaak voor discussie vatbaar.
bv.
@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.
Code (php)
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).
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)
Gewijzigd op 20/12/2012 10:28:35 door Kris Peeters
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)
1
2
3
4
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'].'" /> ';
?>
//in je normale pagina script:
echo '<link rel="stylesheet" type="text/css" href="www.blabla.nl/style.php?menu='.$_GET['menu'].'" /> ';
?>
<link rel="stylesheet" type="text/css" href="style.php?menu=rood" />
Dus zou het moeten werken?
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.
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; ...)
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.
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.
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