[PHP] Door layout probleem met de title tag.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben een site aan het ontwerpen met PHP, de layout had ik al klaar.
Toen heb ik een samengestelde layout gemaakt zodat ik bijvoorbeeld het menu maar 1 keer hoef te veranderen om het op alle pagina's door te voeren. De index ziet er als volgt uit.

<?php

// Layout (header) invoegen
include_once('layout/header.php');
// Layout (navigatie) invoegen
include_once('layout/nav.php');
// Layout (linker menu) invoegen
include_once('layout/menu_left.php');

if( isset($_GET['p']) && !empty($_GET['p']) ) { // Controleer of de variabele wel bestaat (om errors te voorkomen)
switch( $_GET['p'] ) // kijk welke pagina wordt aangeroepen
{
case 'begrippen':
$php_page = 'pages/begrippenlijst.php';
break;
case 'crew':
$php_page = 'pages/crew.php';
break;

default:
$php_page = 'pages/home.php';
}
} else {
$php_page = 'pages/home.php';
}

if ( !file_exists('./'. $php_page) ) { // controleer of het bestand wel bestaat
echo 'De pagina kan niet worden gevonden: '. $php_page;
} else {
// Layout (content) invoegen
include_once($php_page); // het bestand invoegen
}

// Layout (footer) invoegen
include_once('layout/menu_right.php');
// Layout (footer) invoegen
include_once('layout/footer.php');

?>

Nu zit het probleem in header.php. Ik wil alle pagina's namelijk een naam geven met de title tag. Nu is die overal hetzelfde omdat ik header.php overal aanroep.

Wie weet er een oplossing om iedere pagina een unieke naam te geven zonder dat ik 2 of meer files moet maken per pagina?

Acties:
  • 0 Henk 'm!

  • JQR
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:26

JQR

Als je nu in header.php afhankelijk van de aangeroepen pagina een titel aanmaakt, dwz met code de titel ophaalt, hoef je maar een header.php file te maken...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Een variabele maken in index.php die je aanroept in header.php? Of een functie aanroepen met een die titel als parameter? Er zijn verschillende manieren, en voor elke manier is wel wat te zeggen. :)

Trouwens, als je hier code plaatst, wil je die dan tussen [code=taal] en [/code]-tags zetten? Dat is wat leesbaarder. Bovendien is het doorgaans niet de bedoeling om je hele code te posten; slechts een relevant stukje code is voldoende. :)

Welkom op GoT trouwens! :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

je kunt van je pagina's hele simpele objecten maken. Dan krijg je iets als
PHP:
1
2
3
4
5
6
7
$page = new Page('nieuws/2005-09-23');
?>
<html>
<head>
  <title><? echo $page->getTitle();?></title>
</head>
<?php include('layout.php');  // en layout.php doet echo $page->getContent();?>

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@ -NMe-

Bedankt voor je hartelijke ontvangst. :)

@ JayVee

Met jou oplossing heb in nog meerdere header.php files nodig toch?

Ik wil in index.php een variabele willen opgeven die ik aanroep in header.php, zoals -NMe- als oplossing gaf.

Kunnen jullie me daar een voorbeeldje van geven? Alvast bedankt

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Heb je het al geprobeert??

Wanneer je een variabele in je index zet en daarna header include dan kun je er in je header gewoon bij.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb in index deze code:

PHP:
1
$title = 'Home'; //De titel van een document 



en in de header

PHP:
1
2
3
4
<title>'; 
echo $title ;
echo 
'</title>


maar dan heb ik op iedere pagina dezelfde titel en dat wil ik dus niet.

Acties:
  • 0 Henk 'm!

Verwijderd

Verander iets in de volgorde. Helemaal bovenaan doe je een switch op je $_GET['p']. Daarbij initializeer je niet alleen de variabele $php_page maar ook $title. Daarna include je header.php en die laat je die $title weer printen

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het probleem opgelost met de tip van Hdez, Het werkt nu. Dit is de code zoals ze geworden is.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if( isset($_GET['p']) && !empty($_GET['p']) ) { // Controleer of de variabele wel bestaat (om errors te voorkomen)
    switch( $_GET['p'] ) // kijk welke pagina wordt aangeroepen
    { 
        case 'begrippenlijst': 
            $php_page = 'pages/begrippenlijst.php';
            $title = 'Begrippenlijst';
            break; 
            
        default:
            $php_page = 'pages/home.php';
    } 
} else {
    $php_page = 'pages/home.php';
}
Pagina: 1