Witam chciałem uprościć sobie życie robiąc pod pewną kategorię na swojej stronie styl.tpl a następnie wpisy umieszczac w plikach txt - niestety mam z tym pewien problem i nie wiem jak sobie poradzić.
Założyłem plik szablon.tpl i umieściłem w nim przykładowe dane:
...
{TYTUL}
...
{TYTUL}
{TRESC}
[/code] następnie założyłem plik index.php a w nim :
[code]<?php include ‘class.php’ ; $plik = file( ‘recki/’ . $_GET[‘art’] . ‘.txt’); $tytul = $plik[0]; for($i=1; $i $tresc .= $plik[$i]; $obj_tpl = new template ; $obj_tpl->read( ‘szablon.tpl’ ) ; $obj_tpl->assign( array(‘TYTUL’=> $tytul, ‘TRESC’=>$tresc ) ) ; echo $obj_tpl->get(); ?>
Do folderu recki wrzuciłem przykładowy plik txt a w nim :
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
No plik class.php to już gotowiec :
<?php
class template
{
private $file ;
private $vars ;
private $loop_vars ;
private $clauses ;
function read( $file_name )
{
if ( ! file_exists($file_name) )
{
exit( 'file does not exist!' ) ;
}
$this->file = file_get_contents( $file_name ) ;
return true ;
}
function assign( $vars, $clauses = null )
{
if ( ! $this->file )
{
exit( 'file does not exist!' ) ;
}
if ( ! is_array($vars) )
{
exit( 'given parameter must be an array' ) ;
}
foreach ( $vars as $k => $v )
{
if ( is_array($v) )
{
$loop_vars[$k] = $v ;
unset( $vars[$k] ) ;
}
}
if ( $loop_vars )
{
$this->loop_vars = $loop_vars ;
}
$this->vars = $vars ;
if ( is_array($clauses) )
{
$this->clauses = $clauses ;
}
return true ;
}
function get()
{
$file = $this->file ;
//causes start
if ( is_array($this->clauses) )
{
$clauses = $this->clauses ;
foreach ( $clauses as $k => $v )
{
preg_match_all( '/\[IF ' . $k . '=' . $v . ' START\]([\s[:print:]]*)\[IF ' . $k . '=' . $v . ' END\]/', $file, $out ) ;
$file = str_replace( $out[0][0], trim($out[1][0]), $file ) ;
}
//clear clauses
$file = preg_replace( '/\[IF [a-zA-Z0-9]{1,40}=[a-zA-Z0-9]{1,40} START\]([\s[:print:]]*)\[IF [a-zA-Z0-9]{1,40}=[a-zA-Z0-9]{1,40} END\]/', '', $file ) ;
//clear comments
$file = preg_replace( '/\/\/[[:print:]]*/', '', $file ) ;
}
//causes end
//loops start
if ( $this->loop_vars )
{
$loop_vars = $this->loop_vars ;
foreach ( $loop_vars as $k => $v )
{
preg_match_all( '/\[LOOP ' . $k . ' START\]([\s[:print:]]*)\[LOOP ' . $k . ' END\]/', $file, $out ) ;
foreach ( $loop_vars[$k] as $loop_record )
{
$current_loop = $out[1][0] ;
foreach ( $loop_record as $lr_k => $lr_v )
{
$current_loop = str_replace( '{' . $lr_k . '}', $lr_v, $current_loop ) ;
}
$loop_return .= $current_loop ;
}
$file = str_replace( $out[0][0], trim($loop_return), $file ) ;
}
}
//clear loops
$file = preg_replace( '/\[LOOP [a-zA-Z0-9]{1,40} START\]([\s[:print:]]*)\[[LOOP [a-zA-Z0-9]{1,40} END\]/', '', $file ) ;
foreach ( $this->vars as $k => $v )
{
$file = str_replace( '{' . $k . '}', $v, $file ) ;
}
return $file ;
}
}
?>
Dlaczego to nie działa tylko sypie jakieś błędy ??