DedeCMS模板引擎开发,二次开发实战

作者: 坎肩儿 分类: DEDECMS 发布时间: 2011-12-22 22:38

时间关系,整理之前是先整理在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 下午

    文章还好,又学习了。谢谢。。