[php] Hvordan få egendefinert tittel på hver eneste side?

En tråd i 'PHP, SQL og databaser' startet av Mr Vest, 18 Feb 2010.

  1. Mr Vest

    Mr Vest Sjefen over alle sjefer!

    Innlegg:
    2.079
    Jeg er i en litt merkelig situasjon her som jeg ikke helt forstår. Du vet, oppe i <head> så er det jo greit og få inn disse <title>-greiene og slikt for at Google lettere skal forstå hva siden handler om. Jeg har en kode som kan minne om denne:

    Denne koden ligger da f.eks i index.php. Hvorfor vil det ikke fungere når jeg i header.php velger og legge inn $pagetitle oppe i <title> ? Skal det etter rett fungere? Hva kan evt være årsak til at det ikke funker?
     
  2. Daniel Johnsrud

    Daniel Johnsrud Medlem

    Innlegg:
    104
    Er variablen definert før head før den benyttes?
    PHP:
    <head>
     <title><?php echo $Sidetittel;?></title>
    </head>
    <body>
    <?php
     
    if(isset($_GET['foo']) == 'bar') {
      
    $SideTittel  'bar';
      
    $Content 'foobar';
     }
     
    echo 
    $Content;
    ?>
    </body>
    Dette vil ikke fungere da variablen blir definert etter recall. Dette vil også generere Warning.

    Det samme vil det være hvis html delen din ligger i index.php, der du i stedenfor $Content har en require() eller include(), da blir innholdet i header.php filen parset etter title tags, og den vil lese $SideTittel som udefinert.
     
    Mr Vest liker dette.
  3. RipZ Medlem

    Innlegg:
    59
    Hvorfor ikke gi oss koden din?

    Om du inkluderer header.php før koden over, vil ikke variabelen bli satt før etter at HTML-koden med tittel-taggen er skrevet ut.

    Hvis du legger inn koden i følgende rekkefølge, vil det fungere (med mindre du har andre bugs som er umulig å finne uten at du gir oss koden din):

    - Kode for å sette $pagetitle
    - Include av header.php hvor $pagetitle blir skrevet ut

    Merk; PHP behandler alle variabler som globale på tvers av inkluderte filer. Men har du lagt koder i funksjoner eller klasser, er variablene isolert. Hvis du f.eks i header.php har en funksjon som heter printHeader(); og du prøver å skrive ut $pagetitle, vil $pagetitle være tom med mindre du har satt den eksplisitt inne i funksjonen. Man kan nå globale variabler i en funksjon med å bruke "global $variablename;" før variabelen brukes.

    Se forøvrig PHP: Variable scope - Manual
     
    Mr Vest liker dette.
  4. Mr Vest

    Mr Vest Sjefen over alle sjefer!

    Innlegg:
    2.079
    Skjønner skjønner. Det er slik at jeg har en include() i index.php som henter header ja, og dermed kommer det altså ikke noe ja. Jeg får ikke noen warning riktignok, men bare en tom <title>.

    Jeg legger egentlig ikke ut koden fordi det er grusomt mye mer kode enn en skulle tro. Det ville vært WF's største mareritt om jeg skulle lagt ut både header og index her altså. Index ser forsåvidt ut slik jeg har den i første innlegg, bare med ganske mye mer innhold, og med et par include()-greier for å hente en header, sidebars og en footer.

    Jeg merker så absolutt nå at det kanskje har vært litt for mye php her i gården nå, og at spørsmålet i tråden ble litt tullete. Beklager det, og takk for meget gode svar. Ryktepoeng kommer snart. :)
     
  5. Daniel Johnsrud

    Daniel Johnsrud Medlem

    Innlegg:
    104
    Da er det løst :)
    Jeg så lenge du skal ha et "template-script" selv, og ikke bruke andre ressurser som f.eks Smarty,vil jeg anbefale deg å lage 1 fil, f.eks design.php , der du kjører htmlen og php'n som er design relatert over i funksjoner. Slik som ble nevt over her.
    Da kan du enkelt manipulere slik data, uten og måtte skrive koden mange ganger.
     
  6. Sjefskoder

    Sjefskoder Sjefskoder

    Innlegg:
    437
    Her har du en mulig løsning på dette, påsan ;)

    litt php-magi før head-taggen..
    PHP:
    <?php
    define 
    ('TITLE''HER ER SIDETITTELENS TEKST!');// 'HER ER SIDETITTELENS TEKST!' kan og fint byttes ut med en variabel ;) 
    ?>
    Også litt mer php-magi i head-taggen

    <head>
    <title><?php if (defined ('TITLE')) {
    print TITLE;
    } else {
    print 'Itte no tittel satt...';
    }
    ?></title>

    også......

    Voilaaaa! du har en egendefinert tittel ;)

    Håper du skjønte litt av dette og hvordan dette kan gjøres..

    hilsen en trøtt og sliten sjefskoder...
     
    Mr Vest liker dette.
  7. Mr Vest

    Mr Vest Sjefen over alle sjefer!

    Innlegg:
    2.079
    Hehe, ja, jeg er på en måte glad akkurat nå for at jeg omtrent ikke har innhold tilgjengelig for utloggede brukere på nettstedet det dreier seg om. For innloggede brukere er det ikke sånn kjempeprioritet og sette opp den taggen, så det får heller være et prosjekt for fremtiden og rote litt rundt med det.

    Er rimelig sikker på at jeg skjønner hva du mener Sjefskoder. Takker for tipset. Akkurat rett før jeg leste det la jeg heller bare inn de nødvendige greiene i header for og vise de titlene jeg ville ha, så det blir nok ikke å bruke akkurat i kveld nei. Sov godt :)
     

Del denne siden