PDA

View Full Version : dubbio sintattico sull'inclusione di pagine


Antares88
18-03-2007, 19:03
Salve a tutti.

Nel sito che sto realizzando attualmente, ho realizzato la navigazione in questo modo:

C'è una sola pagina index con tutta l'interfaccia e un'area per il contenuto.
C'è uno script php che gestisce quest'area, caricando la pagina appropriata: se viene aperto normalmente index.php viene caricata la home.
Se invece si clicca su un tasto del menu, il link rimanda sempre all'index passando nell'url il nome della pagina da caricare (ad esempio http://indirizzosito/index.php?page=sponsor).

Ora, il mio dubbio è su come realizzare questa pagina da includere: infatti la funzione include prende l'intero listato html della pagina scelta e lo schiaffa nell'html dell'index che viene outputtato e visualizzato dall'utente.

Il risultato è che se si va su una pagina e si apre il sorgente, si vede che all'interno del div "contenuto" c'è di nuovo il doctype, head, body e tutto.

ricapitolando quello che si vede è:

<doctype dell'index>
<html>
<head dell'index>
</head>
<body dell'index>
<div vari>
</div vari>
<div del contenuto>
<doctype della pagina caricata>
<html p.caricata>
<head p.caricata>
<body p. caricata>
<contenuto pagina caricata></contenuto>
</body p.caricata>
</head p.caricata>
</html p.caricata>
</div del contenuto>
</body dell'index>
</html dell'index>

Immagino che questo sia scorretto giusto ? e dunque come fare? nel sorgente delle pagine da far caricare lascio solo il contenuto del body ?

Che effetto ha sui motori di ricerca se io lascio cosi com'è ? ad esempio i meta tag sarebbero sdoppiati,ci sarebbero quelli dell'index e quelli della pagina inclusa...

non so se mi sono spiegato O.o

scostante
19-03-2007, 10:01
Sì, è fondamentalmente sbagliato. Sì, è meglio includere solo ciò che effettivamente cambia.
Credo sia più facile scriverlo che spiegarlo (scritto al volo, grezzo, sicuramente non girerà ma dovrebbe rendere l'idea):

index.php


<?php
// includi il file delle definizioni per la pagina richiesta prima di renderizzarla
if ($_GET['page']){

switch($_GET['page']) {
case "sponsor":
include "path/verso/sponsor.inc";
break;

case "pizza":
include "path/verso/pizza.inc";
break;
}

//renderizza la pagina con le variabili adatte alla pagina richiesta
?>

<HTML>
<HEAD>
<TITLE><?php echo PAGINA_TITLE;?></TITLE>
<META NAME="description" CONTENT="<?php echo PAGINA_META_DESCRIPTION;?>">
</HEAD>
<BODY><?php echo $pagina_body;?></BODY>
</HTML>

<?
} else {
// manca 'page', fai qualcosa a riguardo...
}
?>



sponsor.inc

<?php

define ('PAGINA_TITLE', 'Mortadella Rigà, lo sponso degli sponsi');
define ('PAGINA_META_DESCRIPTION', 'finafinafina');

$pagina_body = <<< EOT

infila qua il body della pagina

EOT;
?>


Chiaramente puoi usare globali o locali a tuo piacimento e definire tutti i meta che vuoi, anche se oggi come oggi non dovrebbero avere più di tanta rilevanza sui motori di ricerca.

Antares88
20-03-2007, 21:11
grazie per il consiglio :)
In effetti mentre aspettavo risposta avevo realizzato una soluzione di quel genere, anche se la tua è un po più raffinata ^^