![]() |
Skapa ett css dokument med php
Jag har en sida vars css styrs med ett gäng variabler, t.ex.
.vansterspalt { width: <?php echo $vansterspaltsBredd; ?>px; padding: 0px 15px; } Detta innebär att jag måste ha en massa <style> taggar på min index.php vilket inte blir snyggt om man visar källkoden för sidan i en webbläsare. Det jag undrar är om det istället går att med php skapa ett css dokument och spara ner det till servern? Alernativet skulle vara om det på något sätt går att gömma mina <style> taggar för de som visar källkoden i sina webbläsare. |
I html-koden:
Kod:
<link rel="stylesheet" href="min_css.php" type="text/css" /> Kod:
<?php header('Content-type: text/css'); ?> |
Citat:
Du kan ha en php-fil med css-information och koppla mot databas eller vad du vill. <link href="css.php" type="text/css" media="screen" rel="stylesheet"/> Alternativet, som du tar upp är att ha en funktion som genererar en cssfil, och detta är bra i cache-synpunkt. |
lägg till i din root .htaccess file: (apache server)
AddType application/x-httpd-php .css Detta gör att du kan använda PHP kod helt fritt i .CSS dokument. Se till att ha <?php Header ("Content-type: text/css");?> på toppen av den CSS filen annars blir det fel i strict doctype. edit: Tycker bara att CSS filer ska ha .CSS och inte .PHP som någon tidigare i tråden sa, kan bli förvirrande. |
Citat:
|
Ta en titt på http://net.tutsplus.com/tutorials/ht...our-css-files/
Då ser källkoden bra ut också ;) |
Citat:
Man ser liksom inte css sheets med .html som ändelse, eller javascript med .asp, precis som man inte ska ha .php på css sheets. |
Citat:
|
Citat:
|
Varför inte .css.php? Eller möjligen tvärt om.
Jag skulle inte förvänta mig att fil.css eller fil.js innehåller PHP-kod. Samtidigt håller jag med om att det inte känns helt rätt att en ren CSS- eller JS-fil heter fil.php, även om den skapas dynamiskt. |
Citat:
Ska man generera javascript till en extern tjänst så är det ju enklast att använda en annan filändelse. |
Webbläsaren lyder inte
Hej!
Hoppas det är ok att låna tråden då det gäller samma sak. Jag försöker använda PHP i min CSS, men webläsaren tolkar inte förändringarna. Jag vill kunna ändra textstorlek direkt ifrån adressfältet men satt till 10px om jag inte anger någon storlek men det förändras inte. Kollar jag direkt på PHP.css med webläsaren så ändras font-size-siffran, men inte själva texten. index.php?f=20 <? //Längst upp i PHP.css header("Content-type: text/css");?> <?if($_GET['f']){$f=$_GET['f'];}else{$f=10;}?> body,td{ color: #330033; font-family: verdana, arial; font-size: <?=$f?>px; } |
Hur inkluderar du CSS-filen från HTML-koden?
Har du testat att istället inkludera en statisk CSS-fil på samma sätt, som är exakt likadan som den som skapas med t.ex. f=20? Citat:
PHP-kod:
|
Citat:
PHP-kod:
|
Citat:
PHP-kod:
|
Så här infogar jag det.
<html> <head> <meta http-equiv="Content-Language" content="sv"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title></title> <link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico"> <link rel="stylesheet" type="text/css" href="css.php" /> </head> Och sätter jag 20 statiskt i samma fil så fungerar det font-size: 20px;. Det gör ingen skillnad om jag använder ditt... if(isset($_GET['f'])&&intval($_GET['f'])>7) $f=intval($_GET['f']); else $f=10; |
Citat:
PHP-kod:
Citat:
|
Aaaa!! TACK!!! .... nu funkar det :D
Jag tog för givet att variablerna följde med in där också :) |
Citat:
Det blir ju ett separat anrop från webbläsaren för att hämta CSS-filen. Däremot kommer man åt variablerna i filer som man inkluderar med require(). Det kanske var det du tänkte på. |
Citat:
Du förlorar all mobilitet av dina script om du måste konfigurera om servern för att de skall fungera. Det lär alltså vara både enklast och mest standardiserat att döpa sina dynamiska css filer till .php om de innehåller php. Absolut bäst är såklart att generera sina .css filer med php så att de kan cachas korrekt. Dessutom vet alla vilken fil som är style sheet filer genom att kolla headern i dokumentet. |
Vill inte upprepa mig igen, håller helt enkelt inte med =)
Med det sagt har jag nästan bara jobbat i USA där detta är standard bland alla byråer jag har vart involverad med. Hur det funkar i sverige är knappast något just jag personligen sätter något värde på då det inte är min marknad, precis som 99% av personer här på WN inte skulle bry sig om andra marknader. Vill också påpeka att när jag bara freelancede så gjorde jag ungefär på grinditwp's sätt! Det är nog lite annorlunda regler i B2B och B2C=) |
Alternativet är ju att ha klasser i .css filen som motsvarar textstorleken
och sedan sätta klasserna dynamiskt i själva markupen <body class="<?php print GetClassName()?>".. Det är väl också helt ok att generera css inom headern för just detta syfte enligt min mening..det kommer ju validera m.m och |
Citat:
|
Citat:
Ford gör bilar i USA med amerikas flagga på, de är ett internationellt företag som finns i hela världen. Hur bra tror du de bilarna som har den amerikanska flaggan skulle sälja i resten av världen? Nej du hittar de inte där, för att att även som ett internationellt företag så anpassar sig Ford mot den marknaden där kunden befinner sig i. Är man så dum, som enligt dig "många här på WN är" att man inte bryr sig om sånt så kan man knappast kalla sig seriös på någon nivå, det bästa man kan uppnå är att knega för sina 20-50k i månaden och vara nöjd med att vara medelmåttig. Om jag nån gång skulle göra en enterprise sida åt en svensk kund så skulle jag självfallet ta reda på allt jag behöver vad gäller namnkonventioner(självfallet allt annat också) i sverige. Med det sagt, så letar jag knappast efter kunder i ett land med 9 miljoner invånare. Hela sveriges internet marknad ungefär like stor som ett par kvarter i NYC, och därför, om du nu som svensk utvecklare jobbar internationellt(eller mot USA som många seriösa utvecklare gör, för där är alla pengar) börjar du snabbt förstå att det som gäller i världens största marknad snabbt blir till internationell standard, gör du inte det, ja, lycka till! I B2C spelar det nog ingen roll vad eller hur man gör något, de flesta kunder är helt okunniga men även där tycker jag man ska hålla en viss standard som är anpassad till marknaden, fast det är nog knappast några pengar där och jag skulle inte rekomendera att jobba i den sektorn. Fast det är nog där de flesta börjar och det är absolut normalt, jag gjorde själv det =) Nu har ju hela tråden blivit om något helt annat så jag får sluta tjata :P In the end tycker jag att en fil ska sluta på den ändelsen som filtypen är, men om det nu är så att t.ex i sverige är det väldigt vanligt för css filer att ha php som ändelse så är det bara att köra på så länge det är en svensk kund, och anpassa sig(gällande allt, inte bara filändelse självklart :P) beroende på geografi om man jobbar internationellt. |
|
Nihilnovi, du missuppfattade mig nog. Jag reagerade enbart på din formulering som löd så här "precis som 99% av personer här på WN inte skulle bry sig om andra marknader". Där har du nog faktiskt fel.
I övrigt håller jag absolut med dig om att man bör följa standarder i de fall de finns tydligt definierade. Däremot så bör man oavsett position verka för att internationella standarder ska gälla, inte nationella sådana vilka är relativt meningslösa i förlängningen. USA må vara den största marknaden än så länge men Asien kommer säkerligen gå om. Pengar är heller inte allt vilket alla som beställt jobb säkerligen insett vid det här laget. Det finns välbetalda utvecklare som gör skräp liksom det finns mindre välbetalda sådana som gör utmärkt ifrån sig. |
Tänk på att om man använder denna teknik skapar man beroenden som ofta kan vara oönskade och försvåra tex uppskalning av webbarna, om man tex kör statiska filer ,css m.m, på en separat server kräver detta att php är installerat på denna server ..
|
Citat:
|
Citat:
|
Citat:
Lite off-topic, men det är väldigt dumt att ha viktig information i en css fil, t.ex databas connect uppgifter utan någon form av encryption med salt som ändras regelbundet. Själv använder jag mig av cron och mina salter baseras på atmospheric noise som hämtas och ändras varje timme. |
Alla tider är GMT +2. Klockan är nu 08:38. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson