Sivuni johon includetaan toinen testi.php filu näyttää tältä:
** alkuperäinen sivu ** <html> <head> <title>Testisivu</title> </head> <body> <?php include("testi.php"); ?> </body> </html>
Kun testi.php liitetään sivuun, testi.php tiedostossa olevan koodin pitäisi
lisätä tuon alkuperäisen sivun esim. <head>..</head> tagien väliin esimerkiksi meta tagit. Eli ts. sisällytettävä testi.php "muokkaa" alkuperäisen tiedoston koodia.
Kuinka tälläinen olisi mahdollista toteuttaa?
Käytä puskuroitua tulostusta.
Kutakuinkin näin ulkomuistista:
<?php $otsikko = "Oletusotsikko sivustolle"; $customHeaders = ""; ob_start(); include("testi.php"); // haluttu sisältötiedosto $output = ob_get_clean(); // asetetaan tulostus muuttujaan ja tyhjennetään tuloste ?> <html> <head> <title><?php echo $otsikko; // asetettu testi.php -tiedostossa uudelleen ?></title> <?php echo $customHeaders; // asetettu testi.php -tiedostossa uudelleen, sisältää esim. tyylitiedostot, javascriptit yms. ?> </head> <body> <?php echo $output; ?> </body> </html>
Mutta entäs jos ei tiedetä yhtään miltä alkuperäinen tiedosto näyttää?
Vaikka ei tiedetä, pitäisi jotenkin saada muutettua alkuperäisen tiedoston
esim. <head>..</head> tagien sisältöä.
Onko tälläinen edes mahdollista?
Ääh, ei tehdä asioita vaikeiksi. Tee templaattitiedosto, eli pyöräytä ajatuksesi ympäri:
templaatti.php:
<?php
function luo_header() {
global $title, $meta;
?><!DOCTYPE JNE JNE JNE>
<html>
<head>
<title><?php echo htmlspecialchars($title); ?></title>
<?php echo $meta; ?>
</head>
<body>
<?php
}
function luo_footer() {
?>
</body>
</html>
<?php
}
?>
testi.php:
<?php
require_once('templaatti.php');
$title = 'Testisivu';
$meta = '';
luo_header();
?>
KIRJOITA SISÄLTÖ TÄHÄN.
<?php
luo_footer();
?>Aihe on jo aika vanha, joten et voi enää vastata siihen.