include php-classes voor link css

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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
$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?

Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
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’.

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 01:16
Je zou ook een autoload kunnen gebruiken om je include automatisch binnen te halen.

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Een autoload voor een class die je altijd gebruikt :?

Icelus geeft IMHO het juiste antwoord.

Acties:
  • 0 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 01:16
Nouja in dit geval is het een beetje nutteloos maar zodra je meerdere classes gaat gebruiken lijkt me een autoload wel fijn.

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Acties:
  • 0 Henk 'm!

Verwijderd

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

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Zet de theme achter die css.php link en je hebt geen include in je echte scripte nodig...

{signature}


Acties:
  • 0 Henk 'm!

  • remmelt
  • Registratie: Januari 2001
  • Laatst online: 09-04 12:25
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.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
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.

{signature}


Acties:
  • 0 Henk 'm!

  • remmelt
  • Registratie: Januari 2001
  • Laatst online: 09-04 12:25
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.

[ Voor 47% gewijzigd door remmelt op 19-07-2008 12:28 . Reden: uitleg ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

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

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
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.

Acties:
  • 0 Henk 'm!

  • remmelt
  • Registratie: Januari 2001
  • Laatst online: 09-04 12:25
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 :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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.

Acties:
  • 0 Henk 'm!

  • PeetR
  • Registratie: Februari 2002
  • Laatst online: 13-09 22:20
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


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Verwijderd 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 :)

Intentionally left blank

Pagina: 1