FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Flitig postare
|
Sitter här och tänker lite hur man smidigast ska ändra title-taggen dynamiskt. Det som ska hända är att den ska gå in i databasen och hämta en inskriven title, och om det inte finns en title så tar den en standard typ "Min Sida".
Som jag har det nu så har jag lagt header-infon högst upp i index.php, sen lite längre ner så lägger jag in alla GET kommandon, saken som jag inte kan få att fungera är ju att title-taggen redan är inläst vid det tillfället den kommer till en av GET-attributen och därför så kan ju inte någon info hämtas därifrån. Visst, man kan ju lägga in headern i varje GET men tycker att det borde finnas något bättre sätt... Typ en this som används i javascript men kanske inte finns någon liknande i PHP? Hoppas att någon kanske förstår vad det är jag menar för det är knappt jag gör själv efter att ha läst inlägget :P Lite svårt att förklara ![]() |
|||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Flitig postare
|
Använd output-buffern. Kör ob_start(), sen inkluderar du din template-fil, dvs den som hamnar i mitten av index.php. Hämta innehållet i den filen med ob_get_contents(), och skriv ut i mitten. Typ:
Kod:
mintemplate.php ------------------- <?php $title = 'Sidans titel'; ?> <div>Lite html</div> ------------------- index.php <?php ob_start(); include( 'mintemplate.php' ); $contents = ob_get_contents(); ?> <html> <head> <title><?php echo $title; ?></title> </head> <body> <?php echo $contents; ?> </body> </html> ------------------- |
|||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Flitig postare
|
Härligt det där verkar smidigt, får försöka lite ikväll med det
![]() Tackar! |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Bara ett inlägg till!
|
(Kortfattat) Ett annat sätt är att t ex låta index.php hantera alla dina requests. När den inkluderar din fil så kör du kanske högst upp template('default', 'sidans titel'); och så kör du en funktion som då visar templaten "default" och som då kanske sätter andra argumentet 'sidans titel' som en constant och sedan läser du in den i templatefilen för att då skriva ut <title>sidans titel</title>.
Min förklaring kan låta lite luddig men jag har byggt upp det på liknande sätt och det fungerar bra. |
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Flitig postare
|
Hmmm förstår inte exakt hur du menar. Du tror inte du skulle kunna visa en liten kodsnutt hur du gör?
|
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Bara ett inlägg till!
|
Ja, jag fixar det imorn på jobbet, klockan är 9:56 och jag är astrött
![]() |
||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Mycket flitig postare
|
Citat:
Visst, man kan göra url:erna snyggare med t ex .htaccess, men boena kanske inte har den möjligheten, då bör han verkligen välja bort det. EDIT: Eftersom du ändå ska hämta title-texten från databasen, varför inte bara göra en ren och skär query som hämtar rätt titel baserat på vilken script-fil som visas (t ex index.php eller produkter.php). Det är lätt att plocka ut script-filen med t ex php (pathinfo och server-variabler mm), sen i din databas har du en kolumn som heter t ex filename och som innehåller t ex index och produkter och då kan du lätt plocka ut rätt title baserat på detta. Sen kör du bara if-satser t ex: if (urlpage = 'index') { $title = 'Välkommen till oss'; } och title-taggen ser ut som följer: <title><?php echo $title; ?></title> |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Medlem
|
Jag brukar använda en funktion som skriver ut sidhuvudet och en som skriver ut sidfoten. Själva titeln på varje sida sätter jag genom en konstant.
Exempel: Kod:
require('include/include.php'); define('PAGE_TITLE', 'Nyheter'); pageHead(); ?> <h1>Nyheter</h1> <p>lala</p> <?php pageFoot(); ?> Kod:
function pageHead() { require('page_head.php'); } function pageFoot() { require('page_foot.php'); } |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Har WN som tidsfördriv
|
Citat:
Glöm inte att kolla get variablerna innan du använder dem!. /b |
||
![]() |
![]() |
Svara |
|
|