php之smarty模板自定义标签
看了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}>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: ThinkPHP 3.2自定义函数
- 下一篇: 正则表达式,匹配非某字符或单词
