织梦自定义标签,还有模板页字段无法输出的注意事项

50 篇文章 0 订阅
2 篇文章 0 订阅

一、登录后台,模板—标签源码管理—[增加一个新标签](注意这里,先创建页面,不要着急写代码,保存的时候如果出现“DedeCMS:CSRF Token Check Failed!”,请打开/dede/config.php,在69行左右,那串错误提示函数的第一行加一个return

二、打开新建的标签页面,如下:

<?php
/*  author: zhang
   time: 2020-5-13 13:50
   qq: 193548305@qq.com
*/
if(!defined('DEDEINC'))
{
    exit("Request Error!");
}

//函数名称lib_后面的这个要和文件名一样
function lib_randlist(&$ctag,&$refObj)
{
    global $dsql,$envs;
    
    //属性处理
    $attlist="row|12,titlelen|24";
    FillAttsDefault($ctag->CAttribute->Items,$attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $revalue = '';
    
    //你需编写的代码,不能用echo之类语法,把最终返回值传给$revalue
    //------------------------------------------------------    
    /**获取标签内的值 <span>[field:title/]</span>*/
    $innertext = $ctag->GetInnerText();
    $ctp = new DedeTagParse(); /** 声明Dede织梦模板类*/
    $ctp->SetNameSpace('field', '[', ']'); /** 设置标记的命名空间,默认为dede*/
    $sql = "SELECT * FROM `#@__arctype` WHERE ishot=1"; /** 编写sql语句,我们主要是改这个*/
    $dsql->Execute('me',$sql); /** 执行一个带返回结果的函数*/
    while($rs = $dsql->GetArray('me')) /*我这里只是单纯的查询,下面的不用改*/
    {
        /**根据属性处理查询变量*/
        $rs['title'] = cn_substr($rs['title'], $titlelen);
        /**获取底层模板,将模板设置到CTags变量中*/
        $ctp->LoadSource($innertext);
        foreach($ctp->CTags as $tagid=>$ctag) {
           if(!empty($rs[strtolower($ctag->GetName())])) {
               $ctp->Assign($tagid,$rs[$ctag->GetName()]);
            }
         }
        /**根据底层模板及查询变量得到处理结果*/
        $revalue .= $ctp->GetResult();
    }
    
    //------------------------------------------------------
    return $revalue;
}
?>
<!-- 字段输出,[]中括号一定不要有空格,不然输不出来 -->
{dede:randlist}
<li><a href="[field:typedir/]">[field:typename/]</a></li>  
{/dede:randlist}  


<!-- 正确 [field:typedir/] -->
<!-- 错误 [field:typedir /] -->  

注:模板页字段输出,不可有空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值