帝国论坛帝国网站管理系统交流区模板/标签/插件共享交流[原创]技术分析及教程_万能标签与自定义标签谁更万能_用户自定义标签教程 【本版专题贴子】  
 1/5     1 2 3 4 5 ›› ›|
主题:[原创]技术分析及教程_万能标签与自定义标签谁更万能_用户自定义标签教程 [加入收藏夹]   

bg6aer
用户头衔:书生

精华贴   :1
发贴数   :40
经验值   :185
注册时间:2007-11-06
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[原创]技术分析及教程_万能标签与自定义标签谁更万能_用户自定义标签教程
一直没有用过帝国 帝国最好的地方莫过于万能标签和自定义标签

我今天在帝国转了一天 其实 万能标签 就是 自定义标签

语出惊人吧 怎么解释呢

在使用 [ecmsinfo][/ecmsinfo]标签时实际上使用的是sys_GetEcmsInfo这个函数


//带模板的标签
function sys_GetEcmsInfo($classid,$line,$strlen,$have_class=0,$enews=0,$tempid,$doing=0){
        global $empire;
        $sql=sys_ReturnBqQuery($classid,$line,$enews,$doing);
        if(!$sql)
        {return "";}
        //取得模板
        $tr=sys_ReturnBqTemp($tempid);
        if(empty($tr['tempid']))
        {return "";}
        $listtemp=$tr[temptext];
        $subnews=$tr[subnews];
        $listvar=$tr[listvar];
        $rownum=$tr[rownum];
        $formatdate=$tr[showdate];
        //替换变量
        $listtemp=ReplaceEcmsinfoClassname($listtemp,$enews,$classid);
        if(empty($rownum))
        {$rownum=1;}
        //字段
        $ret_r=ReturnAddF($r,$tr[modid],$userid,$username,2,2,0);
        //列表
        $list_exp="[!--empirenews.listtemp--]";
        $list_r=explode($list_exp,$listtemp);
        $listtext=$list_r[1];
        $no=1;
        $changerow=1;
        while($r=$empire->fetch($sql))
        {
                $r[oldtitle]=$r[title];
                $r[title]=sub($r[title],0,$strlen,false);
                //替换列表变量
                $repvar=ReplaceListVars($no,$listvar,$subnews,0,$formatdate,$url,$have_class,$r,$ret_r);
                $listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);
                $changerow+=1;
                //超过行数
                if($changerow>$rownum)
                {
                        $changerow=1;
                        $string.=$listtext;
                        $listtext=$list_r[1];
                }
                $no++;
    }
        //多余数据
    if($changerow<=$rownum&&$listtext<>$list_r[1])
        {
                $string.=$listtext;
    }
    $string=$list_r[0].$string.$list_r[2];
        echo $string;
}




对于不会使用使用php编程的人来说,帝国是通过这个函数给出了一个通过php和mysql来制作网页的框架,
其中的$classid='sql语句'时实际上相当于在用户自定义标签文件userfun.php中自定义一个标签函数时,函数内的sql语句

定义万能标签的 $var 和 列表模板 相当于userfun.php中 从执行数据库查询后的 变量和 echo输出的html代码

如果你不懂php和mysql你最好使用[ecmsinfo][ecmsinfo/]这个万能标签

如果你懂php,其实为了应用更方便最好是自己在userfun.php文件中自己去自定义一系列的自定义标签,这样做的好处是可以利用帝国提供的平台,又可以不受帝国的限制,可以调用任何数据库内的任何数据表的任何字段,同时对于多数据表操作也非常有用。



下面我来写个教程

1对于在userfun.php中自定义用户标签

当然是这种结构


<?php
/**
* 自定义标签案例
* @author:wangyachun
* @copyright:http://www.njphp.cn
*/

//---------------------------用户自定义标签文件
function user_lable1($param1,$param2,$param3,$param4) {
//这里放置函数的代码
}

function user_lable2($param1,$param2,$param3,$param4) {
//这里放置函数的代码
}


function user_lable3($param1,$param2,$param3,$param4) {
//这里放置函数的代码
}

function user_lable4($param1,$param2,$param3,$param4) {
//这里放置函数的代码
}
?>



上面的function user_lable1到function user_lable4甚至是无穷多实际上就是自定义了无限多个 用户自定义标签

自定义标签在帝国的模板内的用法就是

[user_lable1]$param1,$param2,$param3,$param4[/user_lable]

其中$param1,$param2,$param3,$param4是自定义标签函数的参数,函数中自定义几个参数,标签中就有几个参数

就和在php编程中使用一个函数的方式差不多
在php中定义 函数


<?
/**
* 函数使用案例
* @author:wangyachun
* @copyright:http://www.njphp.cn
*/

function user_lable3($param1,$param2,$param3,$param4) {
//这里放置函数的代码

?>



使用这个函数的方式就是


<?php
/**
* 函数使用案例
* @author:wangyachun
* @copyright:http://www.njphp.cn
*/
user_lable3($param1,$param2,$param3,$param4);
?>




//---------------------------------------------------------------------------------//

觉得文章还可以的可以访问我的 PHP俱乐部 网站一起交流一下

wangyc  写于 2008-07-03

[该贴被修改 5 次,最后修改时间 2008-07-04 10:29:38 ]


One World,OnePHP PHP俱乐部
QQ:59810752 帝国用户自定义标签定制,帮你调用任何你想要的信息
专业PHP程序定制服务 ECMS Discuz PHPWind ShopEX PHPCMS DEDE UCenter UCHome
2008-07-03 21:56:00 已设置保密 顶部 回复 引用 报告 编辑 删除

bg6aer
用户头衔:书生

精华贴   :1
发贴数   :40
经验值   :185
注册时间:2007-11-06
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

自己先占位

以上我分析后大家应该可以看出

其实还是自己去写 function user_lable(){} 函数

自定义用户标签更加万能


在这里我还是举个实际的例子告诉大家怎么用

第一步 当然是在e/class/userfun.php中编写自己的标签函数


比如

<?php
//---------------------------Discuz论坛友情链接调用

/**
* Discuz论坛友情链接调用For帝国CMS
* @author           Wangyachun
* @copyright  http://www.njphp.cn
* @example    [dzlink]需要显示Discuz友情链接的数量[dzlink]
* @param            int $dl_num
* @version    1.0
*/
function user_dzlink($dl_num){
        global $empire;
        $sql=$empire->query("select * from cdb_forumlinks order by name asc limit $dl_num");
        while($r=$empire->fetch($sql)){
                echo <<<EOT
                <ul>
                <li><a href="$r[url]" target="_blank">$r[name]</a></li>
                </ul>
EOT;
        }
}
?>


这是我写的一个调用discuz论坛的友情连接的函数


第二步 进入系统后台 模板管理-管理标签

新建一个标签 填写标签信息




第三步 当然是在模板中应用标签了

比如我定义的这个标签 用法为
[dzlink]链接数[/dzlink]



函数中输出的html采用了  <li></li>的方式

我只是做出了模型 样式如果不满意可以自己去定义一下
用用效果:



自定义标签打包下载
http://www.njphp.cn/bbs/attachment.php?aid=669&k=84217f58b1c9ebdce058dac617875678&t=1215107449

导入bq:

[该贴被修改 6 次,最后修改时间 2008-07-04 15:35:49 ]


One World,OnePHP PHP俱乐部
QQ:59810752 帝国用户自定义标签定制,帮你调用任何你想要的信息
专业PHP程序定制服务 ECMS Discuz PHPWind ShopEX PHPCMS DEDE UCenter UCHome
2008-07-03 21:57:52 已设置保密 顶部 回复 引用 报告 编辑 删除

bg6aer
用户头衔:书生

精华贴   :1
发贴数   :40
经验值   :185
注册时间:2007-11-06
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

几个注意的地方

1 自定义函数要以 user_  开始

2 做好自定义函数后 最好在后台标签管理 里面做个使用说明



One World,OnePHP PHP俱乐部
QQ:59810752 帝国用户自定义标签定制,帮你调用任何你想要的信息
专业PHP程序定制服务 ECMS Discuz PHPWind ShopEX PHPCMS DEDE UCenter UCHome
2008-07-03 22:08:09 已设置保密 顶部 回复 引用 报告 编辑 删除

bg6aer
用户头衔:书生

精华贴   :1
发贴数   :40
经验值   :185
注册时间:2007-11-06
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

有时间再进一步研究一下

[该贴被修改 1 次,最后修改时间 2008-07-04 02:32:06 ]


One World,OnePHP PHP俱乐部
QQ:59810752 帝国用户自定义标签定制,帮你调用任何你想要的信息
专业PHP程序定制服务 ECMS Discuz PHPWind ShopEX PHPCMS DEDE UCenter UCHome
2008-07-04 02:14:04 已设置保密 顶部 回复 引用 报告 编辑 删除

沒氣雪碧
用户头衔:进士

精华贴   :1
发贴数   :1203
经验值   :3265
注册时间:2006-04-05
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

呵呵呵。。。帅气



仿任意网站模版制作:
200元/套起
免费帝国模版站 http://www.ecmsjz.cn/
后期免费提供相关技术支持。
SEO排名服务,价格优惠。没意向勿扰.案例很多.
QQ 8363204 (请注明: 模版制作)
收徒弟200/位.
2008-07-04 08:54:05 已设置保密 顶部 回复 引用 报告 编辑 删除

禾火木风
用户头衔:嘉宾

精华贴   :11
发贴数   :5478
经验值   :14181
注册时间:2006-03-02
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 6 楼]

写的好,希望楼主能够继续为讲解



梦想设计 成就你的设计梦想
2008-07-04 09:09:15 已设置保密 顶部 回复 引用 报告 编辑 删除

bg6aer
用户头衔:书生

精华贴   :1
发贴数   :40
经验值   :185
注册时间:2007-11-06
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 7 楼]

最近有时间的话再写一点教程

[该贴被修改 1 次,最后修改时间 2008-07-04 10:14:05 ]


One World,OnePHP PHP俱乐部
QQ:59810752 帝国用户自定义标签定制,帮你调用任何你想要的信息
专业PHP程序定制服务 ECMS Discuz PHPWind ShopEX PHPCMS DEDE UCenter UCHome
2008-07-04 09:11:29 已设置保密 顶部 回复 引用 报告 编辑 删除

jinbat
用户头衔:进士

精华贴   :5
发贴数   :1119
经验值   :4224
注册时间:2006-01-03
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 8 楼]

直接写php代码当然更万能,我一般用Sql+万能标签,灵活。




2008-07-04 09:22:17 已设置保密 顶部 回复 引用 报告 编辑 删除

ikagy
用户头衔:举人

精华贴   :0
发贴数   :309
经验值   :925
注册时间:2007-06-13
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 9 楼]

高手




2008-07-04 09:24:43 已设置保密 顶部 回复 引用 报告 编辑 删除

yingnt
用户头衔:嘉宾

精华贴   :6
发贴数   :6831
经验值   :19382
注册时间:2006-01-01
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 10 楼]





模板定制,开发,v7.2 qq,微博,百度登陆出售等 www.ecmsjz.cn QQ 415204
可长期合作!
dedecms转帝国7.2

帝国群:48024477

2008-07-04 09:32:25 已设置保密 顶部 回复 引用 报告 编辑 删除
 1/5     1 2 3 4 5 ›› ›|

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1