源码

dedecms的arclist标签下调用自定义字段{dede:arclistpagesize='12'typeid='10'channelid='2'addfields='wuxing,shuzi,ptitle,palt,tlink'}<dd><ahref="http://[field:tlink/]"><imgclass="img"src="[field:litpic/]"alt="[field:palt/]"title="[field:ptitle/]"/></a></dd><ul><li><ahref="http://[field:tlink/]"title="[field:ptitle/]">[field:title/]</a></li><li><imgsrc="/image/sc.jpg"alt=""title=""></li><li>[field:description/]</li><li><spanclass="red">[field:wuxing/]</span><br><li><spanclass="red">[field:shuzi/]</span></li><p><ahref="http://[field:tlink/]"target="_blank"><imgsrc="/image/xq.gif"alt="查看详情"title="查看详情"></a></p></ul>{/dede:arclist}注:要获取附加表内容,必须符合两个条件1、指定channelid属性2、指定要获得的字段addfields='字段1,字段'如:{dede:arclistaddfields='filetype,language,softtype'row='8'channelid='3'}[field:textlink/]-[field:softtype/]<br/>{/dede:arclist}dedecms高级搜索调用缩略图{dede:fieldname='litpic'/}dedecms去后台验证码DATA文件夹里的\safe\inc_safe_config.php$safe_gdopen=’1,2,3,4,5,6′;这句代码“6”删除了,就可以了。dedecms密码重置见附件:radminpass.rardede的php当前时间加/减天当前时间:{dede:phprunphp='yes'}$ntime=time();@me=MyDate('Y-m-d',$ntime);{/dede:php}当前时间减1天:{dede:phprunphp='yes'}$ntime=time();@me=MyDate('Y-m-d',strtotime('-1day'),$ntime);{/dede:php}详情查看php的strtotime()函数。dede自定义表单提交后直接弹出对话框plus/diy.php查找$goto='/';$bkmsg='发布成功,请等待管理员处理...';修改为:echo'<script>alert("发布成功,请等待管理员处理...");history.go(-1);</script>';dede后台自定义表单一页显示50条后台/diy_list.php查找$datalist->pageSize=10;修改为:$datalist->pageSize=50;dede后台自定义表单全选功能后台/templets/diy_list.htm查找<b>内容列表</b>在后添加:<script>functionSelectAll(){varcheckboxs=document.getElementsByName("id[]");for(vari=0;i<checkboxs.length;i++){vare=checkboxs[i];e.checked=!e.checked;}}</script><ahref="#"onclick="SelectAll()">全选/反选</a>dede标题不受字数限制[field:fulltitle/]其中titlelen=’24′控制的是标题[field:title/]的字数为12个汉字,[field:fulltitle/]控制鼠标划过时提示完整标题名称。这样,无论是搜索引擎还是目标访客都相当友好了dede按权重排序{dede:arclistrow='10'titlelen='34'isweight="Y"orderby='weight'typeid='3'idlist=''}我们在使用orderby='weight'时需要在前面加上isweight="Y"来开启权重的使用参考:http://jingyan.baidu.com/article/93f9803f0efb98e0e46f552c.html{dede:list}增加按权重排序标签1、打开\include\目录中的arc.listview.class.php文件,搜索“排序方式”,然后在elseif($orderby=="lastpost"){$ordersql="orderbyarc.lastpost$orderWay";}elseif($orderby=="weight"){$ordersql="orderbyarc.weightasc";}else{$ordersql="orderbyarc.sortrank$orderWay";}这段代码中间添加以上红色代码。4、向下找到if(ereg('hot|click|lastpost',$orderby))或者是if(preg_match('/hot|click|lastpost/',$orderby))修改成if(ereg('hot|click|lastpost|weight',$orderby))或者是if(preg_match('/hot|click|lastpost|weight/',$orderby)),保存文件。这个时候在列表页里就可以使用{dede:listpagesize='5'orderby='weight'}进行排序了。dede导航栏顶级栏目和二级栏目同时调用{dede:channelartlisttypeid='top'}<ahref="{dede:fieldname='typeurl'/}">{dede:fieldname='typename'/}</a>{dede:channeltype='son'noself='yes'}<div><ahref="[field:typelink/]">[field:typename/]</a></div>{/dede:channel}{/dede:channelartlist}自定义模型,在arclist中调用自定义字段只需要在arclist中增加两个属性:1.channelid也就是模型的id,必须2.addfields需要调用的字段名,必须例如:{dede:arclistchannelid=18addfields='stname'}stname:[field:stname/]{/dede:arclist}注意,需要在模型设置中,对应的字段开启“允许在列表底层中调用,默认只在文档模板中调用”的选项dede数字递增,+后面加数字[field:globalname=autoindexrunphp="yes"]@me=@me+1;[/field:global]清空DEDE自定义表单所有数据TRUNCATETABLE`dede_diyform1;直接调用上一篇地址和下一篇地址的代码如下上一篇地址{dede:prenextget='pro'runphp="yes"}preg_match_all('/<a.*?(?:|\\t|\\r|\\n)?href=[\'"]?(.+?)[\'"]?(?:(?:|\\t|\\r|\\n)+.*?)?>(.+?)<\/a.*?>/sim',@me,$strResult,PREG_PATTERN_ORDER);@me=$strResult[1][0];{/dede:prenext}下一篇地址{dede:prenextget='next'runphp="yes"}preg_match_all('/<a.*?(?:|\\t|\\r|\\n)?href=[\'"]?(.+?)[\'"]?(?:(?:|\\t|\\r|\\n)+.*?)?>(.+?)<\/a.*?>/sim',@me,$strResult,PREG_PATTERN_ORDER);@me=$strResult[1][0];{/dede:prenext}dede调用二三级菜单{dede:channelartlisttypeid='11'}<liclass="por_content_c"><ahref="{dede:fieldname='typeurl'/}"title="{dede:fieldname='typename'/}">{dede:fieldname='typename'/}</a></li>{dede:sqlsql='Select*from#@__arctypewherereid=~id~ORDERBYidlimit0,200'}<liclass="por_content_c1"><ahref="[field:typedir/]/">[field:typename/]</a></li>{/dede:sql}{/dede:channelartlist}id为需要调用二三级菜单的一级菜单ID如果单独指定调用一个或者多个栏目的话{dede:channelartlisttypeid='1,2'}在里面指定你需要调用的id即可,如:{dede:channelartlisttypeid='1'}<liclass="por_content_c2"><ahref="{dede:fieldname='typeurl'/}"title="{dede:fieldname='typename'/}">{dede:fieldname='typename'/}</a></li>{/dede:channelartlist}也可以用sql直接调用单独栏目的子栏目

2013-6-20 2616 0
2013-6-7 4978 0
源码

dedecms里面有两个标签还是比较灵活的,一个是{dede:php}{/dede:php}另外一个是{dede:sql}标签,{dede:php}标签注释要用来在模板中写php代码的,{dede:sql}主要是用来调用sql用的,下面就来介绍下这两个标签到底该如何使用。该文章是转自百度空间的一篇文章。{dede:sql}标签的用法sql标签可以称得上是个万能标签了,查询数据库将其输出,这里介绍一些关于这个标签的用法:1.用来输出统计内容,这个是不错的,举个例子,我们来统计下总共发了多少的文章,思路就是输出dede_addonarticle这个文章附加表内容总数就可以了。{dede:sqlsql="SELECTCOUNT(*)ASnumsFROMdede_addonarticle"}[field:name="nums"/]{/dede:sql}2.使用~field~来进行特殊的查询,比如之前论坛上面很多会员需要做一个输出当前发布文章会员的相关内容,之前用sql或者arclist标签是没办法实现的,因为每篇内容是不同的,这里我们来用5.5的sql语句来做个示范。我们首先在文章模板中相应的位置加上下面的标签{dede:sqlsql="SELECT*FROMdede_archivesWHEREwriter=~writer~"}[field:id/],{/dede:sql}这个放到article_article.htm页面,将会检索出当前会员发布的相关文章,这里的~writer~会根据当前内容的环境变量进行替换后再执行查询。这里出现在SQL语句中条件查询的~writer~,也就是$refObj->Fields[$value]这个里面的相关内容模板中使用PHP许多人希望织梦的模板标签能够更加灵活,加入可以运行PHP的功能,这里在DedeCMSV5.5中就加入了一个可以执行php的特殊标签{dede:php}{/dede:php},这个标签可以执行PHP语句了。我这里举几个常用的例子:1.最简单的输出内容:{dede:php}$numA=1;$numB=2;echo$numA+$numB;{/dede:php}在{dede:php}里想要输出信息可以直接使用print,echo之类的打印出来赋值给@me无效这个输出的内容是计算结果:32.结合SQL查询输出单条内容{dede:php}$row=$dsql->GetOne('selectid,typenamefromdede_arctypewhereid=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('selectid,typenamefromdede_arctypewhereid='.$thisid);print_r($row);{/dede:php}这样是来调用当前栏目的标题,这个标签功能类似于{dede:field.typename/}文章写得很不错,写在这里一是方便自己查看,而是分享给和我有同样困惑的人。希望能帮助同学们。转:http://blog.csdn.net/huminghai/article/details/7680088