WN

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

robincox 2010-09-08 15:47

php med css header
 
Jag använder ett php dokument som stylesheet: cssConfig.php. Anledningen till detta är att ett antal divar, färger mm. ändras beroende på en mängd olika saker. Detta har dock nackdelen med sig att varje sida har ett stort style block i headern.

Jag har försökt fixa detta genom att sätta headern på cssConfig.php till text/css, så att phpkoden ska resultera i css kod istället för html. Detta går fint ända tills det att cssConfig.php behöver använda en variabel som sätts i ett annat dokument. Exempel nedan:

i index.php:

$divWithPictures

i cssConfig.php:

.pictureContainer {

width: <?php echo $divWithPictures; ?>px;

}

Eftersom cssConfig.php länkas in som ett vanligt cssdokument dvs.
<link href="/cssConfig.php" rel="stylesheet" type="text/css" />
så får den inte del av de variabler som skapas i index.php som t.ex. $divWithPictures.

Hur ska jag lösa det här?

Lumax 2010-09-08 16:30

Hur får $divWithPictures i index.php sitt värde?
Kan inte cssConfig.php hämta värdet från samma källa?

objx 2010-09-08 16:49

Haha, oj vad snabb jag var på att svara. Låter någon annan svara.

Clarence 2010-09-08 17:02

Har du bara en bredd som är beroende av innehållet på just den sidan så kan du gott lägga den i ett style-attribut alternativt i style-tagg på sidan. Nyttan med en extern fil (och korrekt cache-hantering) är att du inte behöver ladda om innehållet när det ändå ska vara detsamma på alla sidor. Har du i den externa css:en regler som ska ändras för varje sida så måste du också ladda en ny extern fil för varje sida. Det ger mest bara nackdelar.

Lägg inte CSS externt för att det är fint att göra det, gör det för att det är funktionellt fördelaktigt.

robincox 2010-09-08 17:23

Citat:

Ursprungligen postat av Clarence (Inlägg 20368608)
Har du bara en bredd som är beroende av innehållet på just den sidan så kan du gott lägga den i ett style-attribut alternativt i style-tagg på sidan. Nyttan med en extern fil (och korrekt cache-hantering) är att du inte behöver ladda om innehållet när det ändå ska vara detsamma på alla sidor. Har du i den externa css:en regler som ska ändras för varje sida så måste du också ladda en ny extern fil för varje sida. Det ger mest bara nackdelar.

Lägg inte CSS externt för att det är fint att göra det, gör det för att det är funktionellt fördelaktigt.

Låter som ett klokt tips. skulle gissa att ungefär 90% av allt i configCss.php är lika på alla sidor. Gå in på min hemsida (länk finns i sidfoten) och visa källkod så förstår du vad jag menar.

Jonas 2010-09-09 02:35

Skicka värderna som en GET variabel till filen?

cssConfig.php?pictureContainerWidth=433&pictureCon tainerHeight=636

Dock har du en ev. maxlängd på GET med 255 tecken (beror på webbläsare & webbserver).

qson 2010-09-09 09:10

Lägg med den variabeln i sökvägen till cssConfig.php

i index.php:
HTML-kod:

<link rel="stylesheet" type="text/css" href="cssConfig.php?width=<?php echo $divWithPictures; ?>" />
i cssConfig.php:
HTML-kod:

.pictureContainer {

width: <?php echo (int)$_GET['width']; ?>px;

}


robincox 2010-09-09 10:04

Citat:

Ursprungligen postat av qson (Inlägg 20368748)
Lägg med den variabeln i sökvägen till cssConfig.php

i index.php:
HTML-kod:

<link rel="stylesheet" type="text/css" href="cssConfig.php?width=<?php echo $divWithPictures; ?>" />
i cssConfig.php:
HTML-kod:

.pictureContainer {

width: <?php echo (int)$_GET['width']; ?>px;

}


Jag har ungefär hundra variabler som jag i så fall skulle skicka på det sättet vilket löser problemet med att inte all stylekod tar upp en massa plats innan body. Problemet är då att det ändå blir ett stort block som tar plats innan body.

qson 2010-09-09 10:18

Citat:

Ursprungligen postat av robincox (Inlägg 20368757)
Jag har ungefär hundra variabler som jag i så fall skulle skicka på det sättet vilket löser problemet med att inte all stylekod tar upp en massa plats innan body. Problemet är då att det ändå blir ett stort block som tar plats innan body.

Är dessa variabler statiska, eller är det något som ändras per användare/besök/sida/annat.?

Annars kan du ju ha dina variabler i en config-fil (eller lagra dem i session) och sedan skriva ut dem i ditt css-skript.

index.php
PHP-kod:

$style = array();
$style['divWithPictures'] = 150;
$style['divWithText'] = 200;

session_start();
$_SESSION['style'] = $style

cssConfig.php
PHP-kod:

<?php
session_start
();
$style $_SESSION['style'];
?>
.pictureContainer {

width: <?php echo (int)$style['divWithPictures']; ?>px;

}

EDIT: Om du vill vara säker på att besökaren alltid använder senaste css-filen lägger du till ett dynamiskt värde i sökvägen till css-filen:
HTML-kod:

<link rel="stylesheet" type="text/css" href="cssConfig.php?<?php echo time(); ?>" />
Problemet är att webbläsaren inte kan cacha css-filen utan måste ladda den varje gång, så det blir egentligen ingen skilllnad mot att ha det i en <style>-tagg i html-koden.


Alla tider är GMT +2. Klockan är nu 16:19.

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