oblomsoe Skrevet 6. juli 2005 Del Skrevet 6. juli 2005 (endret) Jeg er ikke så god med php enda.. Men har lyst til å prøve å lage et script hvor man velger feks fra ett admin panel hvilket template man vil bruke. Har tenkt å ha en som lister alle temaplatene som ligger i databasen (har tenkt å bruke mysql) også en sumbit knapp som ligger det valget til i databasen.. Men så er det to ting som jeg ikke er helt sikker på: Hvordan får jeg til å legge til info som feks Teamplate1 (det som står i den lista) og linken til teamplate1, feks template/template1/template1.php. og hvordan jeg skal få lagt til valget for dette i mysql? Er sikkert lett det jeg spør om, men når det kommer til php så er jeg noob! Håper noen kan hjelpe meg. Takk! Endret 6. juli 2005 av oblomsoe Lenke til kommentar
Cucum(r) Skrevet 6. juli 2005 Del Skrevet 6. juli 2005 Dette høres ut som eit greitt prosjekt. Har gjort noko lignande sjølv. For å legge til informasjon i ei database, gjer du noko som dette: INSERT INTO templates (id, name, content) VALUES ('NULL', 'template 01', 'Innholdet i templaten') Viss du vil oppdate ein av templatene, gjer du noko slikt: UPDATE templates SET name='$name' ,content='$content' WHERE id='$id' I tabellen templates ville eg også hatt ei kolonne som heiter current. Denne kolonna ville då henvist til kva for ei rad som er aktiv. I toppen av den sida kor du då skal finne ut kva template som er i bruk, kan du kjøre ei spørring som denne: SELECT * FROM templates WHERE current = '1' ORDER BY id DESC LIMIT 1 Eg tek berre med LIMIT 1 for å være sikker på at den berre får med seg ei av radene, i tilfelle nokon har overstyrt current-kolonna på ei av radene. Lenke til kommentar
oblomsoe Skrevet 7. juli 2005 Forfatter Del Skrevet 7. juli 2005 Takk for svar! Men jeg er ikke helt sikker på om jeg skjønner dette.. Slik som jeg har det nå så er det sånn: Mellom <body> og </body> så har jeg dette: {main} Og i index.php så har jeg dette for å legge desginet runt det som jeg har: <?php include ('config.php'); if (!$filename) { $filename=''.$default_theme.''.$template.''; } if(!$fd = @fopen($filename, "r")) { session_start(); $filename="$default_theme";; setCookie ("filename","", time()+30240000); } $theme .= '<form METHOD="POST" style="word-spacing: 0; margin: 0"> <select name="list" onChange="showpage(this.form);" class="input"> <option value="x">--------------</option><br> <input type="submit" name="submit" value="Endre" />\n'; $result = mysql_query("SELECT * FROM $cms_template") or die ("Can't execute query."); while(($row = mysql_fetch_object($result))) { $theme .= '<option value="'.$row->filename.'">'.$row->name.'</option> <br> <input type="submit" name="submit" value="Endre" />\n'; } $theme .= '</select> </form>'; $site_main ="ting her"; $template = fread ($fd, filesize ($filename)); fclose ($fd); $template = stripslashes($template); $template = eregi_replace("{theme}", "$theme", $template); echo "$template"; ?> Den koden dær er en del av noe jeg fant på en tutorial, men som du ser dær så blir de bytten med engang du velger noe i en liste, men problemet er at det ikke blir lastet opp til databasen men blir bare lagt i cookies.. Og jeg fikk det ikke til å funke når jeg fjernet lista osv fra den dær og til en annen fil.... Lenke til kommentar
oblomsoe Skrevet 7. juli 2005 Forfatter Del Skrevet 7. juli 2005 Noen som kan gi meg noen tips til hvordan jeg kan få til dette? *bump* Lenke til kommentar
oblomsoe Skrevet 10. juli 2005 Forfatter Del Skrevet 10. juli 2005 Hm.. Ingen som kan hjelpe meg? Lenke til kommentar
audunr Skrevet 14. juli 2005 Del Skrevet 14. juli 2005 HTMLen din er altså slik: <html>{main}</html> Så henter du ut det valgte innholdet fra en tabell, og erstatter {main} med det du har hentet ut? Gjør som Henrik Lied skriver, altså at én av radene i tabellen er satt som aktiv. Litt på siden: Dette opplegget minner ikke så mye om et template-system, fordi du kontrollerer innholdet, og ikke utseendet på innholdet. Et template-system kan fungere på denne måten: Template 1: <html> <head> <title>{title}</title> inkludering av css-fil her, husker ikke HTML-koden... </head> <body> <div class="left">{left}</div> <div class="middle">{middle}</div> <div class="right">{right}</div> </body> </html> Template 2: Samme som over, men med annen CSS-fil, og kanskje noen andre forandringer. Når systemet laster inn den valgte malen (templaten), så erstatter den {title}, {left}, og så videre med det innholdet du vil ha. MVH Audun Lenke til kommentar
Cucum(r) Skrevet 14. juli 2005 Del Skrevet 14. juli 2005 (endret) Templatesystemet som du bruker kan også bli litt tungvint i lengda. For eksempel, kva viss du har elementer som kun skal dukke opp viss elementa eksisterer? I mitt blir det noko slikt: #if !#<p>This entry was published !#date#!</p>#! /if# Altså: Teksten `This entry was published` dukkar kun opp viss den aktuelle rada har ein gyldig dato. http://misinterpreted.org/archives/2005/06/05/tw3-changes Endret 14. juli 2005 av Henrik Lied Lenke til kommentar
Hazno Skrevet 15. juli 2005 Del Skrevet 15. juli 2005 (endret) Om det kun skal være admin som kan velge for hele siden, kan du gjøre slik: Sette inn template i databasen: INSERT INTO templates (name,active) VALUES ('Template1') id settes automatisk om du har auto_increment som jeg antar du har Hente ut fra database og liste opp: <form action="action.php" method="post"> <select name="template"> <option value="0">Default</option> <?php $get_templates = mysql_query("SELECT id,name FROM templates ORDER BY name"); if (mysql_num_rows($get_templates) > 0) { while ($temp = mysql_fetch_assoc($get_templates)) { echo '<option value="'.$temp['id'].'">'.$temp['name'].'</option>'; } } ?> </select> <input type="submit" value="Velg" name="template_select"> </form> i action.php: sleng dette inn i en if (isset($_POST['template_select'])) { mysql_query(...); } UPDATE templates SET active = if(id=$_POST['template'],1,0) i index.php: <html> <head> <?php $get_active = mysql_query("SELECT name FROM templates WHERE active=1"); if (mysql_num_rows($get_active) > 0) { echo '<link href="templates/'.mysql_result($get_active,0).'.css" type="text/css" media="screen" rel="stylesheet">'; } else { echo '<link href="templates/default.css" type="text/css" media="screen" rel="stylesheet">'; } ?> <body> ... </body> </html> Dette var veldig grovt, og jeg har ikke testet koden, men den burde funke som en fin "guide" Greia her er at den sjekker etter en css-fil med navnet til den "aktive" template'n i mappen /template/. Må sørge for at navn på template og navn på fila er like. Hvis det ikke er noen som er satt, velger den default.css Endret 15. juli 2005 av HaZnO Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå