Themes i codeigniter

Tags:    php codeigniter

Hejsa.

Jeg ved jeg har skrevet om det før, men har aldrig fundet en egentlig løsning.

Jeg kunne godt tænke mig at få lavet så jeg udvikle en theme løsning til mit system.
Det skal forståes så jeg let uden at skulle ind og ændre i koden kan skifter over til et andet design.

Fx så laver design 1 og 2 ikke den samme opbygning af en login side. Design 1 har to felter, en glemt adgangskode knap og en sübit knap, den anden har det samme men derudover også fb login og husk mig.

Hvordan laver så jeg ikke skal ind og ændre koden i dette?



7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hej Daniel
Det jeg har gjort for at løse en lignende problematik var at lave mit eget theme library som kombineres med min controller og min model for at finde de korrekte views baseret på det theme der står i en database tabel.
Min løsning bygger meget på det princip jeg kan se i Drupal hvor der findes nogle standarder til alle former for views jeg bruger i systemet og når man laver et theme, så kan man oprette et view med samme navn, hvorefter denne fil bruges i stedet for standarden.

Du kan med den fremgangsmåde godt opnå det du ønsker så længe at din kode kan håndtere den handling som bindes til f.eks. FB login.



Hej Kenneth.

Det forstår jeg ikke helt rigtig.
Jeg har selv forsøgt mig ud at lave mit eget theme library. Det fungere også med at opbevare de forskellige themes i databasen, men der hvor jeg så møder problemer er at jeg ikke kan forstå hvordan jeg dynamisk får kaldt det rigtige view. Har du nogle forslag til hvordan jeg kommer omkring denne hurdle?



Hvert element som vises på siden køres igennem din model som vha. dit theme library henter det korrekte view.

Jeg har f.eks. følgende views som standard
Fold kodeboks ind/udKode 


I min model henter jeg det korrekte view til den specifikke handling via mit theme library. I mit library har jeg en metode der hedder path() som benytter filbehandlingsfunktioner og if-statements til at finde frem til om mit tema har det view jeg mangler. Har den ikke det rigtige view benyttes et standard view i stedet.



Hej Kenneth.
Ja det begynder at give en smule mening.
Kan du evt smide et lille udsnit af nogle filer på hvordan du gør dette?



Hej Daniel
Jo. Som udgangspunkt smider jeg lige hele mit theme library med undtagelse af nogle specifikke funktioner til det projekt jeg udvikler lige nu:
Fold kodeboks ind/udPHP kode 


Der mangler nogle kommentarer og andre småting, men som udgangspunkt virker den kode. Koden er bygget op i mod at der i systemet findes et default theme der hedder bootstrap, så den ser du nok et par gange.

Dertil har jeg i min model en metode til at klargøre en side og returnere de klargjorte data til min controller.
Fold kodeboks ind/udPHP kode 

Denne har så en række metodekald som forbereder hver sin del af siden. Dertil kan man overstyre de værdier som kommer fra databasen med "statiske" data som jeg har valgt at kalde det. Dog kunne det også være data fra et modul når man benytter HMVC.
F.eks. denne:
Fold kodeboks ind/udPHP kode 

Her benyttes den metode jeg skrev om i forhold til at hente den korrekte template baseret på en værdi i databasen og ligeledes kan man benytte forskellige templates baseret på en værdi i det objekt jeg henter fra databasen.

For at koden virker i dit projekt skal der nok laves nogle tilpasninger, men det burde virke.




Indlæg senest redigeret d. 06.04.2015 01:03 af Bruger #17072
Hej Kenneth

Hvordan gemmer du dem i din database?
Og hvordan bestemmer du dem på at skulle køre netop det theme?

Min umiddelbare tanke er at lave en hvor hvert site kommer på som en kolonne og ud fra den er der så en ENUM værdi for at se om den er aktiv eller ikke.



Jeg gemmer ikke mine themes direkte i databasen, men har blot en post i min config-tabel som indeholder en string med mappe-navnet på det theme jeg benytter. Herefter virker mine templates ud fra om de findes i den mappe eller ej.

Da mit system er tiltænkt single site opsætninger. Men da mit library henter baseret på en værdi der modtager som parameter, så ville du sagtens kunne udbygge til at den modtager et andet theme baseret på hvilket site man er på. Hvordan du bygger det afhænger af dit projekt, men at bruge enum sammen med et site navn lyder som et godt sted at starte.



t