Kom ihåg mig?
Home Menu

Menu


Att ändra title via PHP

Ämnesverktyg Visningsalternativ
Oläst 2007-03-07, 09:34 #1
boenas avatar
boena boena är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2005
Inlägg: 416
boena boena är inte uppkopplad
Flitig postare
boenas avatar
 
Reg.datum: Sep 2005
Inlägg: 416
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
boena är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-07, 09:45 #2
DeSotos avatar
DeSoto DeSoto är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2005
Inlägg: 323
DeSoto DeSoto är inte uppkopplad
Flitig postare
DeSotos avatar
 
Reg.datum: Oct 2005
Inlägg: 323
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>
-------------------
DeSoto är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-07, 20:51 #3
boenas avatar
boena boena är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2005
Inlägg: 416
boena boena är inte uppkopplad
Flitig postare
boenas avatar
 
Reg.datum: Sep 2005
Inlägg: 416
Härligt det där verkar smidigt, får försöka lite ikväll med det

Tackar!
boena är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-07, 21:50 #4
eliasson eliasson är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2005
Inlägg: 1 863
eliasson eliasson är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2005
Inlägg: 1 863
(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.
eliasson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-07, 22:17 #5
boenas avatar
boena boena är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2005
Inlägg: 416
boena boena är inte uppkopplad
Flitig postare
boenas avatar
 
Reg.datum: Sep 2005
Inlägg: 416
Hmmm förstår inte exakt hur du menar. Du tror inte du skulle kunna visa en liten kodsnutt hur du gör?
boena är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-07, 23:15 #6
eliasson eliasson är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2005
Inlägg: 1 863
eliasson eliasson är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2005
Inlägg: 1 863
Ja, jag fixar det imorn på jobbet, klockan är 9:56 och jag är astrött
eliasson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-07, 23:54 #7
Seattlegrunges avatar
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2003
Inlägg: 979
Seattlegrunge Seattlegrunge är inte uppkopplad
Mycket flitig postare
Seattlegrunges avatar
 
Reg.datum: Nov 2003
Inlägg: 979
Citat:
Originally posted by eliasson@Mar 7 2007, 21:50
(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 titlesidans titel/title.
Min förklaring kan låta lite luddig men jag har byggt upp det på liknande sätt och det fungerar bra.
Det är ingen speciellt snygg lösning, blir fruktansvärt intetsägande url:er till undersidorna för besökarna. Dessutom inte alls bra seo-mässigt. Jag vet, många bygger sina sajter med att bara ha index-filen som tolkar allt innehåll, men jag förkastar det, inte alls vackert eller optimalt.

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>
Seattlegrunge är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-08, 12:12 #8
fors fors är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 131
fors fors är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 131
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(); ?>
där pageHead() och pageFoot() i princip ser ut som:
Kod:
function pageHead() 
{
  require('page_head.php');
}
function pageFoot() 
{
  require('page_foot.php');
}
fors är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-08, 12:25 #9
Björn Björn är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 224
Björn Björn är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 224
Citat:
Originally posted by boena@Mar 7 2007, 10:34
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
Antar att jag inte riktigt förstår hur du menar.. men för mig låter det som ett icke-problem : ) det är väl bara att sätta variablerna innan du börjar skrivar ut html koden. Typ plocka ut variblerna ut $_get eller databasen först av allt, sen sätta det i sidan med tex <title><?=$title?></title> i head.

Glöm inte att kolla get variablerna innan du använder dem!.

/b
Björn är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 08:00.

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