DedeCMS模板引擎开发,二次开发实战
时间关系,整理之前是先整理在word里面的,博客这里是直接复制的,可能易读性差,遂生成了一份swf的,【点击查看SWF版】
详细的细节,这里不赘述,原因是我也不清楚是怎么回事,不过按照这里的方法能实现你要的功能即达到目的了。
实现的功能:根据会员的ID,返回会员的其他相关信息
开发前的说明:\include\tpllib目录下的文件都是以plus_开头的,每个文件里面只有1个函数,并且也是以plus_开头,那么我们在开发的时候也要遵循这个规律。
实例开发:
1、 在\include\tpllib目录下新建:plus_mjmn.php,放置下面的代码:
<?php if(!defined(‘DEDEINC’)) exit(“Request Error!”);
function plus_mjmn(&$atts,&$refObj,&$fields)
{
global $dsql,$_vars;
//开始自定义代码
$attlist = “mid=”;
FillAtts($atts,$attlist);
FillFields($atts,$fields,$refObj);
extract($atts, EXTR_OVERWRITE);
$dsql -> SetQuery(“select * From dede_member where mid=$mid”);
$row = $dsql -> getone();
$reval = $row[‘uname’];
return $reval;
//自定义代码结束
}
?>
其实,里面很大一部分是直接复制的同目录下其他文件里面的代码。
2、在站点根目录新建:membershow.php,放置下面的代码:
<?php
require_once(dirname(__FILE__).”/include/common.inc.php”);
$action = isset($_GET[‘action’]) ? preg_replace(“#[^a-z]#i”, ”,$_GET[‘action’]) : ”;
if($action == ‘tpl’)
{
require_once(DEDEINC.’/dedetemplate.class.php’);
$tpl = new DedeTemplate(dirname(__file__));
// 载入模板文件
$tpl->LoadTemplate(‘code.tpl.htm’);
// 需要将页面显示出来
$tpl->Display();
// 生成HTML文件
//$tpl->SaveTo(‘code.html’);
exit();
}
?>
3、在站点根目录新建:code.tpl.htm,放置下面的调用代码:
{dede:mjmn mid=’会员的ID’ rstype=’string’/}
上面的方法,在实际开发中遇到了瓶颈,那就是如何将php页面接收的参数mid传递到模板里面。整个过程可以理解为模板直接操作plus_文件。
所以,最终的结论是:这种方法适合在固定条件的基础上使用。即,条件是已知的,无需通过变量来传递。
银杏树
12月 27, 2011 1:45 下午
文章还好,又学习了。谢谢。。