dedeCMS自定义dede标签

摘要:
32**/functionlib_ Hlh(&$ctag Get Tag Information Class*&Items是从前台模板标记数组(size=2)“row”传递的值=>字符串“36”(长度=2)获取参数row='2'titlen='36'*/extract($ctag->Items;[field;*/$innertext=$ctag->

在include/taglib文件夹中新建文件hlh.lib.php,其中hlh也就是你标签的名字,function的名字也必须跟文件名对应,固定格式lib_标签名,如lib_hlh,本例子以调取文章为例

<?php
/**
 * Created by PhpStorm.
 * User: 侯蜀黍
 * Date: 2019/4/24
 * Time: 16:32
 *
 */
function lib_hlh(&$ctag,&$refObj)
{
    global $dsql,$envs;
    /***
     * &$ctag 获取标签信息类
     * &$refObj 数据库信息类
     * $dsql 数据库操作类
     * $envs  栏目助手,记录着栏目的部分信息
     * 前台标签
     * {dede:hlh row='2' titlelen='36'}
      <span>[field:title/]</span>
      {/dede:hlh}
     *
     */
    /**默认属性定义*/
    $attlist="row|12,titlelen|24";
    /**给前台没有给出的属性变量值,前台有标明的不变*/
    FillAttsDefault($ctag->CAttribute->Items,$attlist);
    /**绑定默认参数$ctag->CAttribute->Items 是前台模板标签传来的值array (size=2)
    'row' => string '2' (length=1)
    'titlelen' => string '36' (length=2)
    获取参数 row='2' titlelen='36'*/
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $revalue = ''; /** 定义空字符串用于返回数据*/
    /**获取标签内的值 <span>[field:title/]</span>*/
    $innertext = $ctag->GetInnerText();
    $ctp = new DedeTagParse(); /** 声明Dede织梦模板类*/
    $ctp->SetNameSpace('field', '[', ']'); /** 设置标记的命名空间,默认为dede*/
    $sql = "SELECT * FROM `#@__archives` WHERE 1=1 limit 0, $row"; /** 编写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:hlh row='2' titlelen='36'}
  <span>[field:title/]</span>
 {/dede:hlh}

  效果显示

dedeCMS自定义dede标签第1张

免责声明:文章转载自《dedeCMS自定义dede标签》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇键盘快速启动工具Launchy的简单使用技巧http重定向到https下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IE6中location不跳转问题

前天一我遇到个看似很诡异的问题,就是<a href="javascript:void(0);" onclick="window.location.href=url"></a>在IE6下面没反应,不跳转到onclik事件中的"window.location.href"。 当时我们在网上找了篇文章很快就解决了,但是文章中没有说明具体原因在...

vant上传文件到后端

最近在做手机版页面,采用的vant框架,这个上传控件和以前用iview、element有点不一样,iview、element都是直接提供后端接口文件会自动发送到后端,vant需要自己负责发送文件到后端,对于我这种面向百度编程人员还是有点难度。特意记一下,能帮到其他面向百度编程人员 代码 很简单,基本是使用文件构建FormData参数,如下: html代...

分页(模仿百度)

这次分页时上次分页的升级版,分页格式模仿百度,使用的是原生JS 话不多说,直接看代码吧 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>分页</title> <style> #Data...

微信小程序实现国旗头像,国庆个性化头像。国庆头像

如需自取,完整项目源码:https://gitee.com/vxsoft/online-h 若对你有帮助,烦请star一个 请给我一面国旗@微信官方,先上生成的头像效果图  小程序的制作国庆头像的页面 利用 canvas 绘制头像: 核心代码: wx.canvasToTempFilePath({ x: 0,...

Ubuntu10.04下安装SQLite3(转贴)

Ubuntu linux下安装sqlite3 1.介绍:sqlite3是linux上的小巧的数据库,一个文件就是一个数据库。 2.安装: 要安装sqlite3,可以在终端提示符后运行下列命令: sudo apt-get install sqlite3 检查版本 sqlite3 -version 3.测试 当前目录下建立test.db测试数据库文件 s...

WSL学习:安装ArchLinux和Root/Cling以及注意事项

1.前言   在Windows下使用Linux常见的软件存在许多困难。选择之一是使用VMWare和VirtualBox之类的虚拟机软件,另一种选择是使用类UNIX模拟环境,如Cygwin,GNUWin32和MSYS2。   GNUWin32软件比较少。Cygwin软件还算比较多,但是使用体验糟糕。MSYS2使用体验较好,软件数目中等。而本文将介绍的WSL(...