Al mijn bestanden worden bij gebruik in index.php geincludeerd.
Voor de include staat dit:

<?php
//Set pagetitle
$pagetitle = "Taartjes, koekjes weet ik veel";
//There is the header!
theme_header();
?>


In de functie theme_header(); wordt
'<title>'.$pagetitle.'</title>';
naar het scherm geschreven.

Hoe zou ik deze title later nog kunnen veranderen, zonder javascript, want nu gebruik ik:

<?php
echo '<script language="javascript">
document.title = "'.$boardtitle.'";
</script>';
?>
http://php.net/manual/en/language.functions.php

Zoals hier staat misschien?
Note that a function that calls a variable by reference CANNOT be used recursively, it will generate a CGI error (at least on my windows platform).
Thus:

<?php
$foo = 0;
function bar(&$foo){
    $foo++;
    echo $foo."\n";
    if($foo < 10)
        bar($foo);
}
?>

Will NOT work.
Instead, you should just use global variables.

<?php
$foo = 0;
function bar(){
    global $foo;
    $foo++;
    echo $foo."\n";
    if($foo < 10)
        bar($foo);
}
?>

This, of course, assuming that you need to use $foo in other functions or parts of code. Otherwise you can simply pass the variable regulary and there should be no problems.

Of iets dergelijks, zie de website

mvg Kasper
Door eerst alle PHP logica uit te voeren en dan pas de HTML naar de browser te sturen. Dus met andere woorden, door je theme_header() op een andere plaats in je script aan te roepen...
Template engine maken.
Eerst voor je alle logica uit. Dus data uit de db trekken e.d.
Dan pas stop je het in een pagina.
En zou die plaats voor

<?php
ob_flush();
?>

kunnen zijn?
Waarom gebruik je output buffering als ik vragen mag. Ik hoop niet dat je dat doet om 'headers already sent' foutmeldingen te voorkomen?

Als je dat wel doet, ben je niet juist bezig. Die foutmeldingen worden namelijk veroorzaakt doordat de volgorde in je script niet klopt. Je output dan waarschijnlijk al HTML terwijl er nog PHP logica uitgevoerd moet worden waarin een header gewijzigd wordt. Kortom, zorg dat je scripts goed in elkaar zitten: eerst alle PHP logica en dan pas output genereren.
En zou ik in het geval van de header fouten ook van Smarty gebruik kunnen maken?
Thomas de Roo op 30/10/2010 17:44:17

En zou ik in het geval van de header fouten ook van Smarty gebruik kunnen maken?


Dan moet je nog steeds zorgen dat je geen output hebt naar de browser.
De header fouten hebben niets met smarty te maken, maar puur met de fout dat jij output verstuurt voordat je een functie als header() of session_start() aanroept. Het gebruik van smarty lost deze fouten echt niet zomaar op.

Uiteraard is het gebruik van een template engine wel een aanrader om je output te verzorgen. Het geeft je een grotere mate van flexibiliteit.
Oke, maar hoe scheid ik de headers zodat ze voor de output komen, op sommige gevallen kan ik niet anders :'(
Hoezo kan je niet anders? In plaats van de output naar de browser te sturen kun je deze altijd tijdelijk in een variabele opslaan en de inhoud van deze variabele pas aan het eind van het script naar de browser sturen...

Reageren