牛骨文教育服务平台(让学习变的简单)
博文笔记

php之smarty模板自定义标签

创建时间:2012-11-14 投稿人: 浏览次数:3777

看了dedecms的标签,觉得很方便,但毕竟是别人开发的,有时候想添加一些新的自己的功能还是有局限,所以今天在网上搜了下如何用smarty模板构建自定义标签。

1、首先下载smarty模板,然后定义smarty模板的环境,init.php。数据库连接类mysql.php这里就不写了。

<?php
  require_once("include/config.inc.php");
  require_once("class/mysql.php");
  require_once("smarty/smarty.class.php");
  $db=new mysql(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME,"","gb2312");
  $smarty=new Smarty;
  $smarty->template_dir="templates";
  $smarty->cache_dir="caches";
  $smarty->compile_dir="compiled";
  $smarty->left_delimiter = "<{";
  $smarty->right_delimiter = "}>" 
?>


2、编写标签主要代码lib.arclist.php

<?php

function arclist($args, $content, &$smarty){
         $num=$args["num"];
	$cat_id=$args["cat_id"];
	
	$sql="select article_id,title from article";
	$w="";
	$n="";
	if($cat_id!="")
	{
	  $w=" where cat_id=".$args["cat_id"]." order by article_id desc ";
	}
	if($num!=""){
	  $w=" limit 0,".$args["num"];
	}
	if($cat_id=="" && $num=="")
	{
	 $w=" order by article_id desc limit 0,6";
	}
	$sql=$sql.$w;
        $res=$GLOBALS["db"]->query($sql);
	  while($row=$GLOBALS["db"]->fetch_array($res)){
	      $article_id=$row["article_id"];
		//$arr[]=array("id" => $row["article_id"],"title" => $row["title"]);
		$arr[$article_id]["id"]=$row["article_id"];
		$arr[$article_id]["title"]=$row["title"];
		$arr[$article_id]["url"]=$row["article_id"].".html";
		//$arr[$article_id]["url"]="detail.php?id=".$row["article_id"];

	  }
	  $smarty->assign("list",$arr);
	  return $content;
}


?>

3、标签注册并在文件中引用

<?php
  require_once("init.php");
  require_once("libs/lib.arclist.php");
  $smarty->registerPlugin("block","arclist","arclist"); //注册block,这个就是应用标签的基础
  $smarty->display("news.html");
?>



4、模板文件news.html代码截取

 <{arclist cat_id="21" num="10"}>
       <{foreach from=$list item=v}>
     <li><a href="#"><{$v.title}></a></li>
   <{/foreach}>
<{/arclist}>



 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。