Newsgroup: it.comp.www.php
Titolo: Template php

Ho già postato su free.it.programmazione.php ma forse questo NG è più 
corretto
Sono alle prime armi con PHP e sto tentando di costruire un sito in questo 
modo
Ho creato un template in questo modo:
1 - ho creato un file index.php più una serie di file con la seguente 
struttura (CIRCA..)
<html>
<head>
 <title>Questo è il file index.php</title>
 <link rel="stylesheet" type="text/css" href="../sito/css/my.css">
</head>
<?php include ("/path/header.inc"); ?>
<!--- CODICE HTML--->
<?php include ("/path/footer.inc"); ?>
2 - ho creato i file header.inc e footer.inc. Rispettivamente
header.php
----------
<html>
<head>
 <title>Questo è il file header.inc</title>
 <link rel="stylesheet" type="text/css" href="../sito/css/my.css">
</head>
<body>
<!--- CODICE HTML--->
</body>
</html>
footer.php
----------
<header>
 <link rel="stylesheet" type="text/css" href="../sito/css/my.css">
</head>
<body>
<!--- CODICE HTML--->
</body>
</html>
Da un punto di vista grafico il risultato è ineccepibile, sul browser tutto 
compare perfettamente allineato e al suo posto, ma se guardo il codice html 
generato è una fusione non proprio corretta di 3 TAG HEAD (che ospitano i 
fogli di stile), 3 TAG BODY (che ospitano il contenuto)insomma un codice 
superincasinato che davvero non saprei come possano gli spider navigarci 
dentro.
Per dirne un'altra che mi confonde..., se metto un tag TITLE su header.php 
il titolo dovrebbe apparire uguale su tutte le pagine, se però metto anche 
un tag TITLE su index.php, oltre ad apparire annidato (ovviamente) a mezza 
pagina, prevarrà e apparirà sulla barra del titolo del browser al posto di 
quello su header.inc....
insomma tutto ciò per chiedervi se mi consigliate un modo semplice per fare 
in modo che il codice generato appaia corretto tipo
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
 <title>Questo è il titolo</title>
 <link rel="stylesheet" type="text/css" href="../sito/css/my.css">
</head>
<body>
<!--- CODICE HTML--->
</body>
</html>
Grazie per l'aiuto 

 in modo che il codice generato appaia corretto tipo
Non ripetere l'<head> e tutto l'ambaradan dentro header e footer.
Include prende il file e lo piazza nel punto in cui c'era include. Per
forza ti ripete i tag, glielo stai chiedendo tu...
Ah, non usare .inc, ma piuttosto .inc.php, altrimenti nel 99% dei casi
il file e` leggibile in chiaro passandolo al browser.
Bye.

 Bye.
OK, Grazie Alessandro, adesso mi sono schiarito le idee :-) 

 Non ripetere l'<head> e tutto l'ambaradan dentro header e footer.
Potrebbe non essere elegante questa soluzione.... c'e' invece modo di 
prendere solo il contenuto del tag <body>? 

 prendere solo il contenuto del tag <body>? 
Per prendere solo il body devi aprire il file e fare il parsing da solo.
Cercare il body e iniziare a pescare testo, finche` non trovi /body.
Ma a questo punto forse e` meglio una cosa tipo
template.php:
<html>
...
<body>
<?php include($file); ?>
</body>
</html>
pagina.php:
<?php
$file="pagina.html";
include ("template.php");
?>
pagina.html:
Contenuto della pagina
il tutto puo` anche essere generalizzato in index.php:
<?php
$file = $_GET["pagina"]. ".html";
include("template.php");
?>
Che, con gli opportuni controlli di sicurezza sul parametro, si puo`
usare per fare un sito completo tutto fatto di
index.php?pagina=main
index.php?pagina=articolo1
index.php?pagina=chisiamo_doveandiamo_unfiorino
che richiamano le rispettive main.html, articolo1.html, chi....html e le
infilano nel template. Pagina che naturalmente non dovranno avere header
e footer html, ma solo quello che andrebbe nel body.
Bye.

 Contenuto della pagina
Il mio discorso e' solamente per poter utilizzare file HTML costruiti 
secondo standard all'interno del template... puro discorso teorico.