Avatar billede the_edge Nybegynder
06. november 2006 - 19:38 Der er 20 kommentarer og
1 løsning

Hvordan er det smartes at lave en side med forskellige css filer

Hejsa eksperten.

hvordan er det smartes at lave en side med flere forskellige designs ? Det skal være sådan at man kan ændre det perment fra admin delen. Skal man lægge det ned i en database ? eller hvad med replace string commandoen ? nogen der har nogen gode svar ?

vh the_edge
Avatar billede thesurfer Nybegynder
06. november 2006 - 19:52 #1
Når brugeren logger på, hentes navnet på CSS-filen fra en database, og gemmes i en session..

Hvis der ikke er noget bruger login, bliver du nok nødt til at bruge en cookie..

Cookien kan jo slettes, og det normale/standard theme skal loades..
Avatar billede udvikler Nybegynder
06. november 2006 - 19:55 #2
Jeg vil mene at det er bedst at lave en tabel i databasen ved navn design. Der skal så være 4 rækker fx (kommer an på hvor mange designs du har). Rækkerne skal hedder design1, design2 osv.. Så skal der være 1 felt ud for hver række der hedder "brug". Så skal du lave en form i admin delen der opdatere feltet brug i databasen fra off til on.. så kan du tjekke på alle dine sider hvilket design du skal bruge således:

<?php

$query = mysql_query("SELECT * FROM brug") or die(mysql_error());
while ($row=mysql_fetch_array($query)){
    $design1 = $row[design1];
    $design2 = $row[design2];
    $design3 = $row[design3];
    $design4 = $row[design4];
}


if ($design1 == "on") {
    include "css1.css";
}
if ($design2 == "on") {
    include "css2.css";
}
if ($design3 == "on") {
    include "css3.css";
}
if ($design4 == "on") {
    include "css4.css";
}


?>
Avatar billede the_edge Nybegynder
06. november 2006 - 19:56 #3
nej altså brugerens skal ikke kunne ændre det... det skal være at jeg som admin vælger at nu skal der et andet design end for en bestemt tid.. giver det nogen mening ? :)
Avatar billede thesurfer Nybegynder
06. november 2006 - 19:59 #4
<link rel="stylesheet" href="minstil.css" type="text/css">

Så laver du backup af "minstil.css", og erstatter "minstil.css" med f.eks. "red.css", som kommer til at hedde "minstil.css"..
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:00 #5
Eksempel:

minstil.css - denne læses altid!

Du vil gerne skifte til et grønt-theme..
1) Slet "minstil.css"
2) kopier "green.css" til "minstil.css"
Avatar billede the_edge Nybegynder
06. november 2006 - 20:02 #6
ja men det skal være mere dynamisk ligesom the surfer har fåslået... men kan man man godt oploade en css fil ? eller skal jeg bare oploade hele css koden som rent text ?
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:05 #7
Du skal bare bruge en fil, f.eks. med navnet "minstil.css".

CSS-filer er tekst-baseret.

Det er lige meget hvad filen indeholder, bare den hedder "minstil.css".

Du kan have man filer liggende, og bare overskrive "minstil.css" når du vil skifte tema..

Om du har dem liggende på server, eller uploader dem til "minstil.css", er helt op til dig..
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:05 #8
udvikler> Det er da en dårlig måde at gør det på..? Du kan nøjes med 1 felt i databasen, eller måske 2..
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:10 #9
udvikler> 06/11-2006 19:52:11 ville nok have været bedre..
Og det er kun med 1 felt..


Men nu vil the_edge gerne have at det ligger fast, når han har valgt design..
Så filen (i mit eksempel "minstil.css") skal bare erstattes..
Avatar billede the_edge Nybegynder
06. november 2006 - 20:11 #10
the surfer... sådan som jeg tolker det du skriver, så skal jeg bare gå ind og rette i selve kilde koden ik ?
Avatar billede udvikler Nybegynder
06. november 2006 - 20:11 #11
Altså, jeg regner med at du bruger MySQL til at ændre temaet med, eller har jeg misforstået?

Hvis du gør det, mener jeg stadig at min måde er optimal - kan sagtens være jeg tager fejl :-)

Der kan dog lige ændres følgene:

<?php
if ($design1 == "on") {
    $css = "css1.css";
}
if ($design2 == "on") {
    $css = "css2.css";
}
if ($design3 == "on") {
    $css = "css3.css";
}
if ($design4 == "on") {
    $css = "css4.css";
}
?>

<link rel="stylesheet" href="<? echo $css; ?>" type="text/css">
Avatar billede the_edge Nybegynder
06. november 2006 - 20:17 #12
ja det er med DB...
Avatar billede udvikler Nybegynder
06. november 2006 - 20:20 #13
Ok, ja du vælger selvfølgelig selv hvilken løsning du vil bruge, men min er altid til rådighed :-)
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:20 #14
the_edge> Nej, ud skal ikke ind og rette i kildekoden..

Det er jo netop det der er smart.. Du erstatter indeholdet af filen "minstil.css", ved at overskrive den..

Dvs, du sletter filen "minstil.css", og derefter kopierer du en anden fil, og omdøber den nye kopi til "minstil.css"..

Browseren ved ikke at du har slettet filen og kopieret en ny.. den læser bare den fil der hedder "minstil.css", fordi den får at vide, at den skal læse filen her:

<link rel="stylesheet" href="minstil.css" type="text/css">

Hvis filen ikke findes, sker der ikke noget..
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:22 #15
Det skal lige siges, at udviklers løsning ikke er permanent.

Der skal din server hen og arbejde hver eneste gang en side loades..

Hver gang en side loades, skal den hen og sige:
- load fra database
- hvis design1 er on, sæt variabelen $css til design1
- hvis design2 er on, sæt variabelen $css til design2
- hvis design3 er on, sæt variabelen $css til design3
- hvis design4 er on, sæt variabelen $css til design4
- udskriv variablen $css

Det er (hvis du spørger mig) langt ud, og bruger alt for mange ressourcer..
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:26 #16
Man kan gøre det på 2 gode måder:

1) Erstat filen "minstil.css"

2) Det jeg skrev i 06/11-2006 19:52:11:
- Indlæs fra database, og sæt filnavn i en session
- Læs sessionen og udskriv filnavn i <link>-tag'et: href<?php echo session['css'] ?> (eller hvordan man nu gør)

3) udviklers metode

Nummer 1 er klart den mest effektive, og bruger langt færre ressourcer, da det er ren HTML.

Nummer 2 bruger lidt ressourcer, da den skal læse fra database 1 gang, og gemme det i en session, hvor den så læser fra

Nummer 3 bruger alt for mange ressoucer, da den skal læse fra databasen hver eneste gang en side loades
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:27 #17
Rettelse:
Der skulle have stået: "Man kan gøre det på 3 måder"
Avatar billede the_edge Nybegynder
06. november 2006 - 20:30 #18
ja det er rigtigt nok.. det er smart at lægge det op i en session... tak for hjælpen begge, vælger thesurfers svar
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:35 #19
Så smider jeg et svar :-)
Avatar billede udvikler Nybegynder
06. november 2006 - 20:39 #20
Tjaa, thesurfer har lidt ret vil jeg mene. Hvis din side indeholder utrolig mange brugere så er min løsning ikke god. Så kræver det alt for meget server arbejde og gør siden lidt langsom. Derimod er thesurfers god til en populær side.

Hvis din side er lille er det hip som haps. :-)
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:49 #21
Takker for points.. Held og lykke med projektet! :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester