het is een klasse waarin ik bij de functie assign enigzins debug-code heb toegevoegd om er snel achter te komen dat een bepaald block niet bestaat.
ook miste ik de functie om de waarde van een globale variabele op te vragen.
in principe kan je deze code gewoon onder de 2e klasse van templatepower plakken.
het enige dat je in je code moet aanpassen is het volgende:
$oLayOut = new TeplatePower('./includes/templates/template.tpl');
wordt:
$oLayOut = new EditedTeplatePower('./includes/templates/template.tpl');
verder spreekt de functie getGlobalValue voor zich.
geeft de waarde van de globale variabele aangemaakt met assignGlobal terug indien die bestaat, anders false.
het gebruik van newBlock is niet veranderd, alleen geeft die nu een error bij een niet bestaand block.
<?php
class EditedTeplatePower extends TemplatePower
{
/**
* constructor
*
* @param string $tpl_file
* @return
*
* @access public
*/
public function __contruct($tpl_file)
{
$this->TemplatePower($tpl_file);
}
/**
* newBlock
*
* @param string $blockname
* @return
*
* @acces public
*/
public function newBlock( $blockname )
{
if(!isset( $this->parent[$blockname],
$this->parent[$blockname],
$this->content[ $this->parent[$blockname] .'_'. $this->index[$this->parent[$blockname]] ]
)
)
{
trigger_error('TP: het block"'.$blockname.'" is niet gedefinieerd in het templatebestand/subblock');
}
else
{
$parent = &$this->content[ $this->parent[$blockname] .'_'. $this->index[$this->parent[$blockname]] ];
$lastitem = sizeof( $parent );
$lastitem > 1 ? $lastitem-- : $lastitem = 0;
$ind_blockname = $blockname .'_'. $this->index[ $blockname ];
if ( !isset( $parent[ $lastitem ]["_B:$blockname"] ))
{
//ok, there is no block found in the parentblock with the name of {$blockname}
//so, increase the index counter and create a new {$blockname} block
$this->index[ $blockname ] += 1;
$ind_blockname = $blockname .'_'. $this->index[ $blockname ];
if (!isset( $this->content[ $ind_blockname ] ) )
{
$this->content[ $ind_blockname ] = Array();
}
//tell the parent where his (possible) children are located
$parent[ $lastitem ]["_B:$blockname"] = $ind_blockname;
}
//now, make a copy of the block defenition
$blocksize = sizeof( $this->content[ $ind_blockname ] );
$this->content[ $ind_blockname ][ $blocksize ] = Array( $blockname );
//link the current block to the block we just created
$this->currentBlock = &$this->content[ $ind_blockname ][ $blocksize ];
}
}
public function getGlobalValue( $varname )
{
return isset($this->globals[ $varname ])? $this->globals[ $varname ] : false;
}
}
?>