Jump to content
php.lv forumi

Template skripts


Ilja

Recommended Posts

Sheit,izdariju mazu skriptinu...bet man vinsh ir palidzigs :)

negribu kaut kadu Smarty vai t.c. izmantot...

es esmu slinks-tapec loti maz un vienkarshi :D

bet kaut ko vel uzrakstishu...

PS ka varu-ta rakstu...kadi kommentari?

ceru kaut kadam noderes,varbut citi ari palidzes kaut ko vel uzrakstit xD

 

class Template{

var $template;
var $fp;
var $tags;
var $datas;

function Load($filename="./templates/index.html"){

	$this->fp=fopen($filename,"r");
	if ( !$this->fp ) echo "Cannot open Template:".$filename;
	$this->template=fread($this->fp,filesize($filename));

	}

function AddTag($tag,$data){

	$this->tags[]=$tag;
	$this->datas[]=$data;

	}

function Process(){

	$this->template=str_replace($this->tags,$this->datas,$this->template);

	}

function Render(){

	return $this->template;

	}

}

Link to comment
Share on other sites

php4 jau 2008-08-08 nomira.

Nu ganjauka vēl ilgi figurēs..

 

 

 

Kas attiecās uz templeitiem.. a nu kamdēļ vispār vaig fopen() / str_replace() utt??? PHP pats jau par sevi ir template..

 

index.php

<?
$data = getSomeData();

include('template.php');
?>

 

un template.php:

<div><?=$data?></div>

 

 

 

 

Jo visjautrāk paliek, tad kad templates un to veidotāji sāk mēģināt redefinēt kaut kādus ciklus / loopus u.c. php funkcionalitāti :)

Link to comment
Share on other sites

Lūk vienkārša funkcija templeta satura returnošanai:

 

 function load($XYZ__file,$XYZ__data){
  extract($XYZ__data);   
  ob_start(); 
  require $XYZ__file; 
  $XYZ__output = ob_get_contents(); 
  ob_end_clean(); 
  return $XYZ__output;	 
}

 

Izmantojam:

echo load('templeits.tpl',array('a'=>5,'b'=>'cool','c'=>array(1,7,2,8)));

 

templeits.tpl:

<div>
 <div><?php echo $a; ?></div>
 <div><?php echo $b; ?></div>
<?php foreach ($c as $v){?>
 <div><?php echo $v; ?></div>
<?php } ?>
</div>

 

returnošanas fīča ir vajdzīga piemēram tāpēc,ja gribam vairākus templeitus salādēt vienā:

echo load('viss.tpl',array('menu'=>load('menu.tpl',$meudata),
					 'content'=>load('content.tpl',$contentdata),
					 'header'=>load('header.tpl',$headerdata)));

Edited by codez
Link to comment
Share on other sites

×
×
  • Create New...