Hoofdcategorieën
Topicacties

include php-classes voor link css

Pagina: 1

Reageer Nieuw Topic
Hoi, ik probeer met php dynamische stylesheets te maken. Ik wil de css uit een class method laten komen. Maar de file waar die class in staat (class_csshandler.php) wil ik voor de html-openingstags includen, om dan die class aan te roepen in het bestand dat ik link in de header
in index.php
PHP:
1
2
3
4
5
6
7
8
9
10
include('class_csshandler.php');
?>
<html>
<head>
<link href="css/css.php" rel="stylesheet" type="text/css" />
</head>
<body>
</body>
</html>
<?

en css.php
PHP:

1
2
3
4
<?php
$csshandler = new CSS_Handler//hier loopt het dus fout, CSS_Handler is niet gedefinieerd
$csshandler->setTheme($_GET["theme"]);
header("Content-type: text/css");
$csshandler->outputCSS();
?>

De code is maar een abstractie, maar het principe is dit: op deze manier worden de ge-include bestanden niet waargenomen in css.php. CSS_Handler is daar niet gedefinieerd, terwijl de includes toch qua code gezien eerder worden gedaan, dan het aanroepen van het css bestand. Ook de get-variabele is niet beschikbaar, tenzij in de <link /> meegegeven. Mis ik iets?
 
Berichten: 1.894
Reg. datum: 22 januari 2004

De browser zal twee aparte bestanden ophalen; de HTML en het CSS-bestand.
Het heeft geen zin om class_csshandler.php in het HTML-bestand te includen omdat het daar niet gebruikt wordt.

Verplaats de include uit het HTML-bestand naar het CSS-bestand (daar wordt de class gebruikt). Vervolgens vervang je de <link> in het HTML-bestand door iets als ‘css/css.php?theme=xxx’.

De browser zal nu het HTML-bestand openen en vervolgens de CSS ophalen met theme als ‘GET-waarde’.

Whereas Europeans generally pronounce my name the right way ('Nick-louse Veert'), Americans invariably mangle it into 'Nickel's Worth.' This is to say that Europeans call me by name, but Americans call me by value - Niklaus Wirth

Berichten: 11.707
Reg. datum: 20 juli 2000

Je zou ook een autoload kunnen gebruiken om je include automatisch binnen te halen.

Help Firefox in het Guinness book of records te komen | Following rules makes you stupid. | God is an imaginary friend for adults.

Breda Helpt

Een autoload voor een class die je altijd gebruikt :?

Icelus geeft IMHO het juiste antwoord.
Berichten: 11.707
Reg. datum: 20 juli 2000

Nouja in dit geval is het een beetje nutteloos maar zodra je meerdere classes gaat gebruiken lijkt me een autoload wel fijn.

Help Firefox in het Guinness book of records te komen | Following rules makes you stupid. | God is an imaginary friend for adults.

ok meerdere bestanden dus, wel lastig omdat je dan je classes 2 keer moet includen. Maar bedankt voor de snelle respons.
 
Trunks

Zet de theme achter die css.php link en je hebt geen include in je echte scripte nodig...
Dit zijn twee verschillende aanroepen, dus inderdaad twee keer includen. Is niet lastig, is volledig logisch. Voor de server zijn het twee verschillende bestanden, kan net zo goed van een andere user zijn.

Vraag is: waarom wil je je CSS dynamisch maken? Het voordeel van een iets kleiner bestand is meteen teniet gedaan doordat het niet wordt gecached. Gooi al je CSS in een plat tekstbestand wat netjes gecached kan worden. Als je echte dynamische dingen hebt, zoals door de gebruiker gedefinieerde kleuren ofzo, zet je die gewoon in de header tussen style tags. Zo heb je minder dynamische hits op je server en hoef je ook niet meer twee keer te includen.
 
Trunks

quote:
remmelt schreef op zaterdag 19 juli 2008 @ 12:16:
Het voordeel van een iets kleiner bestand is meteen teniet gedaan doordat het niet wordt gecached.
Dan zet je de goede headers daarvoor.
Nee, want dan is het niet meer dynamisch en kan je alsnog beter een plat bestand gebruiken.

Die headers zijn voor "statische dynamische" pagina's, dingen die je dus wel kan veranderen in een CMS bijvoorbeeld maar die daarna niet of nauwelijks wijzigen.

remmelt wijzigde dit bericht 19-07-2008 12:28 (47%)
Reden: uitleg

 

Acties: [view][quote]


Door: -NMe-
Admin DevschuurŽ
Watching you I am.
Berichten: 27.979
Reg. datum: 25 februari 2004

Wie zegt dat dat laatste hier niet het geval is? :)

"The Assassin moved quietly from roof to roof. His movements could be called cat-like, except that he did not stop to spray urine up against things."
De Tweakers.net Tijdlijn

Breda Helpt

Kan nog gewoon gecached worden hoor. Browser zal netjes een If-Modifief sturen die je kunt beantwoorden met een leeg bestand of een nieuwe versie.
Ik bedoel alleen maar dat de exta overhead van het programmeren van een dynamische css en de extra overhead op je server (per css een extra php hit) niet opwegen tegen een iets kleiner plat css bestand wat gewoon zonder php en zonder extra gedoe netjes geserved en gecached wordt.

Ik zeg ook niet dat het niet gecached KAN worden, ik zeg alleen dat het niet nodig is om te doen.

Maar goed, ieder z'n meug :)
 
wat ik wil bereiken is dat ik via classes verschillende style-thema's aan kan roepen, dus dat je dit via de site kan kiezen (via get oid). Ik wil het in een class, omdat me dat het handigst lijkt. Dan kan ik makkelijk thema's samenstellen, met alleen de aan te passen css-eigenschappen.
 
Horeca
Berichten: 111
Reg. datum: 17 februari 2002

Misschien zit ik er naast, maar waarom maak je dan niet per thema verschillende CSS bestanden?
Dan laat je het door de gebruiker gedefinieerde bestand aanroepen. De voorkeur van de user sla je dan op in je userdatabase of in een cookie.

Your time as a student is the best time of your life

ja dat kan ook, het leek mij alleen praktisch die themas in een class te genereren, zodat ik 1 lijstje heb van aan te passen variabelen, ipv meerdere plekken die ook nog alle defaults bevatten.
 

Acties: [view][quote]


Door: crisp
Devver / Moderator WEB
Papa van Jeremy \o/
Berichten: 31.114
Reg. datum: 24 februari 2000

quote:
cheshirepuss schreef op zaterdag 19 juli 2008 @ 23:21:
ja dat kan ook, het leek mij alleen praktisch die themas in een class te genereren, zodat ik 1 lijstje heb van aan te passen variabelen, ipv meerdere plekken die ook nog alle defaults bevatten.
Da's het mooie van CSS: het is cascading. Je hoeft in je theme CSS bestanden dus niet de defaults meer mee te nemen, enkel de uitzonderingen, en vervolgens link je zowel je standaard CSS als je theme CSS :)

Pagina: 1



VNU Media logo Powered by True

© 1998 - 2008 Tweakers.net - Alle rechten voorbehouden

Uitgever van: