WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Skapa ett css dokument med php (https://www.wn.se/forum/showthread.php?t=1039988)

tartareandesire 2010-01-15 07:56

Citat:

Ursprungligen postat av Nihilnovi (Inlägg 20339162)
Tycker inte att ge en fil fel ändelse är smidigt på något sätt alls, kanske funkar i små företag eller om man är freelancer, men om jag skulle gå runt o döpa css filer med .php eller javascript med .php i projekt som ska hålla en viss internationell standard så skulle projektledarn hänga mig med mina egna skosnören just för att .css finns och känns igen av varje webdesigner som stylesheet, men vi får väl helt enkelt hålla me om att vi har olika åsikter =) Om man nu vet att bara en själv eller en liten grupp folk som man känner kommer ha något att göra med koden så spelar det väl ingen större roll vad man döper saker till, men tycker ändå sånt beteende går emot att ha en viss standard bland alla som sysslar med webdesign i alla dess olika former.

Det fåtal undantagsfall som eventuellt finns är ju enkla att dokumentera så det bör inte ställa till några problem oavsett storleken på organisationen. Dessutom informeras man direkt om att css-syntaxen genereras mha php och det är betydligt oftare en programmerare kan hantera css än en designer kan hantera php. Jag tror visserligen aldrig jag själv döpt en css-fil till annat än .css men sak samma :)

Ska man generera javascript till en extern tjänst så är det ju enklast att använda en annan filändelse.

mch 2010-01-17 20:33

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;
}

BjörnJ 2010-01-17 20:55

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:

Ursprungligen postat av mch (Inlägg 20339453)
<?if($_GET['f']){$f=$_GET['f'];}else{$f=10;}?>

Jag skulle göra så här:
PHP-kod:

if(isset($_GET['f'])&&intval($_GET['f'])>7$f=intval($_GET['f']); else $f=10


allstars 2010-01-17 21:04

Citat:

Ursprungligen postat av BjörnJ (Inlägg 20339455)
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?


Jag skulle göra så här:
PHP-kod:

if(isset($_GET['f'])&&intval($_GET['f'])>7$f=intval($_GET['f']); else $f=10


Kan man inte köra
PHP-kod:

$f = (isset($_GET['f']) ? $_GET['f'] : "10"


BjörnJ 2010-01-18 07:05

Citat:

Ursprungligen postat av allstars (Inlägg 20339457)
Kan man inte köra
PHP-kod:

$f = (isset($_GET['f']) ? $_GET['f'] : "10"


Jo, det borde också gå bra, men jag skulle fortfarande ha med intval(). Dels för att vara säker på att det är ett riktigt värde, och dels för att det inte ska gå att utifrån få in valfri data i koden.
PHP-kod:

$f = (isset($_GET['f'])&&intval($_GET['f'])>7) ? intval($_GET['f']) : 10

Man skulle även kunna lägga till t.ex. &&intval($_GET['f'])<25 om man vill sätta en maxstorlek.

mch 2010-01-18 07:29

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;

BjörnJ 2010-01-18 07:45

Citat:

Ursprungligen postat av mch (Inlägg 20339498)
<link rel="stylesheet" type="text/css" href="css.php" />

css.php får ju inte veta eventuella parametrar som index.php får.
PHP-kod:

<link rel="stylesheet" type="text/css" href="css.php<?php if(isset($_GET['f'])) echo '?f='.intval($_GET['f']); ?>" />

Citat:

Ursprungligen postat av mch (Inlägg 20339498)
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;

Nej, det var inte menat som en lösning på problemet, bara en förbättring av koden.

mch 2010-01-18 07:52

Aaaa!! TACK!!! .... nu funkar det :D
Jag tog för givet att variablerna följde med in där också :)

BjörnJ 2010-01-18 08:03

Citat:

Ursprungligen postat av mch (Inlägg 20339500)
Aaaa!! TACK!!! .... nu funkar det :D
Jag tog för givet att variablerna följde med in där också :)

Varsågod, kul att det gick bra. :)

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

grinditwp 2010-01-19 15:55

Citat:

Ursprungligen postat av Nihilnovi (Inlägg 20339100)
Det är ungefär som att ha HTML i sina php klasser, det följer en dålig struktur av hela systemet. Jag tycker att CSS kod ska vara i CSS filer, om CSS filen är dynamisk med hjälp av PHP/javascript/annat gör det väl knappast förvirrande.

Man ser liksom inte css sheets med .html som ändelse, eller javascript med .asp, precis som man inte ska ha .php på css sheets.

Att döpa sin css fil till .php är knappast som att ha HTML i sina PHP klasser, det är snarare som att ha HTML i sina PHP filer, vilket är mycket vanligt :)

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.


Alla tider är GMT +2. Klockan är nu 17:28.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson