dedecms中的{dede:php}标签使用方法

dedecms中的{dede:php}标签使用方法

操作方法

  • 01

    {dede:sql}标签的用法 sql标签可以称得上是个万能标签了,查询数据库将其输出,这里介绍一些关于这个标签的用法: 1.用来输出统计内容,这个是不错的,举个例子,我们来统计下总共发了多少的文章,思路就是输出dede_addonarticle这个文章附加表内容总数就可以了。 {dede:sql sql="SELECT COUNT(*) AS nums FROM dede_addonarticle"} [field:name = "nums"/] {/dede:sql}

  • 02

    2.使用~field~来进行特殊的查询,比如之前论坛上面很多会员需要做一个输出当前发布文章会员的相关内容,之前用sql或者arclist标签是没办法实现的,因为每篇内容是不同的,这里我们来用5.5的sql语句来做个示范。  我们首先在文章模板中相应的位置加上下面的标签  {dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"}  [field:id/], DEDE模板   {/dede:sql}  这个放到article_article.htm页面,将会检索出当前会员发布的相关文章,这里的~ writer~会根据当前内容的环境变量进行替换后再执行查询。  这里出现在SQL语句中条件查询的~ writer~,也就是$refObj->Fields[$value]这个里面的相关内容  模板中使用PHP  许多人希望织梦的模板标签能够更加灵活,加入可以运行PHP的功能,这里在DedeCMS V5.5中就加入了一个可以执行php的特殊标签{dede:php}{/dede:php},这个标签可以执行PHP语句了。  我这里举几个常用的例子:  1.最简单的输出内容:  {dede:php}  $numA = 1;  $numB = 2;  echo $numA + $numB; {/dede:php} 在 {dede:php}里想要输出信息 可以直接使用print , echo 之类的打印出来   赋值给@me 无效 这个输出的内容是计算结果:  3

  • 03

    2.结合SQL查询输出单条内容  {dede:php}  $row = $dsql->GetOne('select id,typename from dede_arctype where id=2');  print_r($row);  {/dede:php}  这个输出的内容是  Array  (  [id] => 2  [typename] => 问答  )  3.获取当前页面的变量  比如我们这里进入系统后台的[模板]-[全局标记测试],我们在代码中填入下面的内容:  {dede:php}  print_r($refObj->Fields); {/dede:php} 织梦模板团 在PHP中想要获取dede某个字段值 可以使用 $refObj->Fields 对象来获取 列入获取 title => $refObj->Fields['title'] 如果环境变量保持默认,即“不使用环境ID”,我们会看到以下的结果:  Array  (  [typeid] => 0  [phpurl] => /plus  [indexurl] => /  [templeturl] => /templets  [memberurl] => /member  [specurl] => /special  [indexname] => 主页  [templetdef] => /templets/default  )  那我们再换个环境变量测试看看,这里以我本地的栏目为测试了:  Array  (  [id] => 3  [reid] => 0  [topid] => 0  [sortrank] => 1  [typename] => 产品  [typedir] => {cmspath}/product  … …  [indexname] => 主页  [templetdef] => /templets/default  [position] => 主页 > 产品 >  [title] => 产品  ) 这样一来就检索出当前页面的局部变量了,接下来我们可以来结合前面的SQL语句来实现根据不同环境ID调用内容不同栏目内容。  例如:  {dede:php}  $thisid = $refObj->Fields['id'];  $row = $dsql->GetOne('select id,typename from dede_arctype where id='.$thisid);  print_r($row);  {/dede:php}  这样是来调用当前栏目的标题,这个标签功能类似于{dede:field.typename/}接下来我们通过执行查询对sql及输出变量进行处理:$dsql->Execute('me',$sql);while($rs = $dsql->GetArray('me')){//根据属性处理查询变量$rs['title'] = cn_substr($rs['title'], $titlelen);//获取底层模板$ctp->LoadSource($innertext);foreach($ctp->CTags as $tagid=>$ctag) {if(!empty($rs[strtolower($ctag->GetName())])) {$ctp->Assign($tagid,$rs[$ctag->GetName()]); DEDE模板 }}//根据底层模板及查询变量得到处理结果$revalue .= $ctp->GetResult();}这样我们 就将查询出来的结果同底层模板中出现的相关变量进行替换,然后生成输出字符串,将所有的字符串信息存储到$revalue中。 最后返回这个值 return $revalue;整个文件内容如下:if(!defined('DEDEINC')){exit("Request Error!");}function lib_writerarc(&$ctag,&$refObj){global $dsql,$envs;//属性处理$attlist="row|12,titlelen|24";FillAttsDefault($ctag->CAttribute->Items,$attlist);extract($ctag->CAttribute->Items, EXTR_SKIP);$revalue = '';$innertext = $ctag->GetInnerText();$ctp = new DedeTagParse();$ctp->SetNameSpace('field', '[', ']');$sql = "SELECT * FROM dede_archives WHERE writer='{$refObj->Fields['writer']}' limit 0, $row";$dsql->Execute('me',$sql);while($rs = $dsql->GetArray('me')){//根据属性处理查询变量$rs['title'] = cn_substr($rs['title'], $titlelen);//获取底层模板$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;}?>接下来我们来测试我们这个标签,我们修改 article_article.htm模板,在里面加入以下的标签代码:{dede:writerarc row='10' titlelen='6'}[field:title/] {/dede:writerarc}

(0)

相关推荐

  • 如何在微信中给好友设置标签?

    如今我们都会使用微信这个社交软件,好友也是越来越多,如果我们想要给好友添加标签以便区分应该如何操作呢?今天,小编就教大家在微信中给好友设置标签.具体如下:1. 首先,在手机中打开微信,然后登陆自己的账 ...

  • 怎么添加手机版支付宝中银行卡的备注标签

    手机版支付宝软件被很多人使用,用来支付,理财等,有的用户在使用该软件时,为了可以更好地找到银行卡,因此想要添加银行卡的备注标签,但是却不知道如何添加,那么小编就来为大家介绍一下吧.具体如下:1. 第一 ...

  • WPS演示中的工具让标签和容器同比缩放的方法

    WPS演示中的工具让标签和容器同比缩放的方法 操作步骤 另存为图片法:右击原图"缩小放的组合图片",在右键菜单中选择"另存为图片",保存为PNG格式图片,然后删 ...

  • 微商必备软件天天向商图片标记中的标签使用方法

    今天教大家用天天向商软件来使用标签的方法,天天向商是一个专门为微商美化图片制作海报的应用软件,贴水印,打标签,海量海报,长图模板应有尽有,是现时下最热门的微商工具,自己动手,天天向商哦! 操作方法 0 ...

  • 织梦cms中实现远程发布附件的方法

    DEDECMS中要实现远程发布附件图片要怎么处理呢 本dede教程就是教你如何使用DEDECMS的实现附件的远程发布 很不错的哦 具体操作可以过以下几步来进行: 步骤/方法 01 设置远程的ftp服务 ...

  • 在PowerPoint中插入视频的两种方法

    为追求更完美效果,在Powerpoint中通过shockwave Flash Object控件插入SWF格式动画已是家常便饭。但很多情况下,演示文档还需要视频做辅助,下面我们介绍在PowerPoint ...

  • 手机QQ附近兴趣标签添加方法

    手机QQ附近兴趣标签添加方法.在附近中查找兴趣标签,找到身边兴趣相投的人.如果你想让TA找到,要怎么添加兴趣标签呢?接下来小编就教大家手机QQ附近兴趣标签添加方法. 1)打开手机QQ进入应用单击下方[ ...

  • excel中文字排序功能的使用方法

    excel中文字排序功能的使用方法.排序功能是excel中一项很基本的功能,但是我们一般只用到英文字母或者是数字排序,实际上汉字也是可以排序的. 方法/步骤 首先我们打开一张工作样表作为例子. 在开始 ...

  • 在Excel中创建与使用标签套打模板方法

    在Excel中创建与使用标签套打模板方法 1.在日常资料.设备的标识分类管理中,经常用到标签,常见的是空白不干胶标签纸. 2.当标签数量较多时,填写费时费力,容易刮花墨迹.因此,利用打印机批量打印标签 ...