设为首页收藏本站关注微信<<< 抵制 IE6 人人有责 >>>
搜索
热搜: 活动 交友 discuz
查看: 2846|回复: 4
打印 上一主题 下一主题

[dedecms] [field:global]各种循环手段

[复制链接]
跳转到指定楼层
楼主
发表于 2014-2-17 22:50:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[field:global.autoindex/]从2开始和从0开始
在织梦的{dede:arclist/}的标签中,有一个非常有用的,[field:global.autoindex/],这个标签是一个自增长标签,他的值是默认是从1开始,跟着你的列表自动自增,在我们给网站加入一些效果时候会非常有用。
这里再介绍一下,如果想让他从0开始自增的方法
  1. [field:autoindex runphp='yes']@me=$GLOBALS['autoindex']-1;[/field:autoindex]
复制代码

这里的-1是重点,如果想从2开始自增就是+1以此类推



列表隔5行加一行线:
  1. {dede:list pagesize='50'}
  2. <LI><a href="[field:arcurl /]" title="[field:title function='htmlspecialchars(@me)'/]"
  3. target=_blank>[field:title function="cn_substr(@me,48)"/]</a>[field:pubdate runphp='yes']
  4. $a="<font color=red>".strftime('%m-%d',@me)."</font>";
  5. $b=strftime('%m-%d',@me);
  6. $ntime = time();
  7. $day3 = 3600 * 24;
  8. if(($ntime - @me) < $day3) @me = $a;
  9. else @me =$b;
  10. [/field:pubdate]<br>
  11. [field:global name=autoindex runphp="yes"]
  12. if(@me%5==0)@me="<hr />";
  13. else @me="";
  14. [/field:global]
  15. {/dede:list}
  16. <DIV class="line2 m1 m3"></DIV></LI>
复制代码
循环时的条件判断。例如当循环到第四条时增加一个<li class='x_li'></li>,其他的时候则没有。
标签:
  1. {dede:arclist row=16 }
  2. <li class="tb_li[field:global.autoindex/]"><a href="[field:arcurl/]"><img src="[field:litpic/]" /></a>
  3. </li>
  4. [field:global name=autoindex runphp='yes'] (@me!=4)? @me="":@me="<li class='x_li'></li>";
  5. [/field:global]
  6. {/dede:arclist}
复制代码
隔行换色
  1. {dede:arclist orderby=pubdate titlelen='26' row='10'}
  2. [field:global runphp='yes' name=autoindex]
  3. $a="<div id='a'>";
  4. $b="<div id='b'>";
  5. if ((@me%2)==0) @me=$a;
  6. else @me=$b;
  7. [/field:global]
  8. <ul>
  9. <li>[field:title/]</li>
  10. </ul>
  11. </div>
  12. {/dede:arclist}
复制代码

每三行一次有序循环(原创,必须可以用)
游客,如果您要查看本帖隐藏内容请回复

{dede:list模版标签下使用[field:global name=autoindex/]

用dede:loop标签调用论坛贴子时,用 [field:global name=autoindex/]递增,如<li class=1>,<li class=2>,,,等。

要修改一个文件。
搜索页面循环用的是{dede:list} 有的时候我们需要在显示第几条~ 这个时候大家可能会想到 [field:global name=autoindex/]递增~ 只是这个标签不被支持

我们要修改一下/include/arc.searchview.class.php文件~

找到include下的arc.searchview.class文件

  //搜索
  1.    $query = "Select arc.*,act.typedir,act.typename,act.isdefault,act.defaultname,act.namerule,
  2.    act.namerule2,act.ispart,act.moresite,act.siteurl,act.sitepath
  3.    from `#@__archives` arc left join `#@__arctype` act on arc.typeid=act.id
  4.    where {$this->AddSql} $ordersql limit $limitstart,$row";
  5.    $this->dsql->SetQuery($query);
  6.    $this->dsql->Execute("al");
  7.    $artlist = "";
  8.    if($col>1)
  9.    {
  10.     $artlist = "<table width='$tablewidth' border='0' cellspacing='0' cellpadding='0'>\r\n";
  11.    }
  12.    $this->dtp2->LoadSource($innertext);
复制代码




  在后面加上
  
  1. $GLOBALS['autoindex'] = 0;
复制代码



然后找到

  1. $row['templeturl'] = $GLOBALS['cfg_templeturl'];
复制代码




在其后加上

  1. $GLOBALS['autoindex']++;
复制代码




保存一下就可以在{dede:list}里面使用[field:global name=autoindex/]了~


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享淘帖
回复

使用道具 举报

沙发
 楼主| 发表于 2014-2-17 22:50:56 | 只看该作者


最新 文章列表 “隔行换色” 的方法
  1. {dede:arclist orderby=pubdate titlelen='26' row='10'}
  2. [field:global runphp='yes' name=autoindex]
  3. $a="<div id='a'>";
  4. $b="<div id='b'>";
  5. if ((@me%2)==0) @me=$a;
  6. else @me=$b;
  7. [/field:global]
  8. <ul>
  9. <li>[field:title/]</li>
  10. </ul>
  11. </div>
  12. {/dede:arclist}
复制代码



24小时内更新的文章时间显示为红色:
  1. [field:pubdate runphp='yes']
  2. $a="<font color=red>".strftime('%m-%d',@me)."</font>";
  3. $b=strftime('%m-%d',@me);
  4. $ntime = time();
  5. $day3 = 3600 * 24;
  6. if(($ntime - @me) < $day3) @me = $a;
  7. else @me =$b;
  8. [/field:pubdate]
复制代码



COPY页面内容,自动在后面加上网站信息,利于SEO
  1. <script type="text/javascript">
  2. document.body.oncopy = function () { setTimeout( function () { var text = clipboardData.getData("text"); if (text) { text = text + "\r\n本篇文章来源于 www.地址.COM 原文链接:"+location.href; clipboardData.setData("text", text); } }, 100 ) }
  3. </script>
复制代码
实现“文章标题-2级栏目-1级栏目-网站名”形式

  1. {dede:field name='title'/}-{dede:field name='position' runphp='yes'}
  2. $tc="-"; //分隔符
  3. $tw=$GLOBALS['cfg_list_symbol']; //调用位置分隔符
  4. @me=html2text(@me); //去除html标签
  5. $tf=split($tw,@me); //分解成数组
  6. for($ta=(count($tf)-2);$ta>=1;$ta--){ //循环赋值给$tk
  7. $tk.=trim($tf[$ta]).$tc;
  8. }
  9. $tk=substr($tk,0,-1);
  10. @me=$tk; //赋值给@me
  11. {/dede:field}-{dede:global name='cfg_webname'/}
复制代码

发布的文章显示红色日期或加上new字或new小图片
给近三天(或当天)发布的文章显示红色日期或加上new字或new小图片等。
都是围绕pubdate做文章,写扩展的。
第2、3要注意的问题是:如:"<img src='new.gif' />中不能用双引号,否则不行。
如果要给当天的加,把 3600 * 24 * 3 改为 3600 * 24  即可。
1、==========红色的日期========

  1. [field:pubdate runphp='yes']
  2. $a="<font color=red>".strftime('%m-%d',@me)."</font>";
  3. $b=strftime('%m-%d',@me);
  4. $ntime = time();
  5. $day3 = 3600 * 24 * 3;
  6. if(($ntime - @me) < $day3) @me = $a;
  7. else @me =$b;
  8. [/field:pubdate]
复制代码




2、==========红色的(new)========

  1. [field:pubdate runphp='yes']
  2. $aa=strftime('%m-%d',@me);
  3. $ntime = time();
  4. $tagtime = @me;
  5. $day3 = 3600 * 24 * 3;
  6. if($tagtime > $ntime-$day3) @me = "<font color='red'>(new)</font>";
  7. else @me = $aa;
  8. [/field:pubdate]
复制代码




3、==========加new.gif小图片========

  1. [field:pubdate runphp='yes']
  2. $aa=strftime('%m-%d',@me);
  3. $ntime = time();
  4. $tagtime = @me;
  5. $day3 = 3600 * 24 * 3;
  6. if($tagtime > $ntime-$day3) @me = "<img src='new.gif' />".$aa;
  7. else @me = $aa;
  8. [/field:pubdate]
复制代码
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2014-2-17 22:51:00 | 只看该作者
{dede:datalist}标签中autoindex无效解决办法
方法一:
{dede:datalist limit='0,10'}
<TR>
   <TD class=sp><B><?php echo++$i;?></B></TD>
   <TD class=sl><A
     href="/plus/search.php?keyword={dede:field.keyword/}"
     target=_blank>{dede:field.keyword/}</A></TD>
<TDclass=sp>{dede:field.count/}</TD></TR>  {/dede:datalist}
注意红色字体部分自动生成序号
方法二:打开include\datalistcp.class.php
functionGetArcList($atts,$refObj='',$fields=array())
    {
           $rsArray = array();
       $t1 = Exectime();
       if(!$this->isQuery) $this->dsql->Execute('dlist',$this->sourceSql);
       $i = 0;

       while($arr=$this->dsql->GetArray('dlist'))
       {
           $i++;
                     $arr['itemid']=$i;
           $rsArray[$i]  =  $arr;
           if($i >= $this->pageSize)
           {
               break;
           }
       }

       $this->dsql->FreeResult('dlist');
       $this->queryTime = (Exectime() - $t1);
       return $rsArray;
}
增加红色字体部分
然后模板中代码注意红色部分
{dede:datalistlimit='0,10'}
  <TR>
    <TD class=sp><B>{dede:field.itemid/}</B></TD>
    <TD class=sl><A
     href="/plus/search.php?keyword={dede:field.keyword/}"
     target=_blank>{dede:field.keyword/}</A></TD>
    <TD class=sp>{dede:field.count/}</TD></TR>  {/dede:datalist}
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2014-2-17 22:51:19 | 只看该作者
织梦标签 [field:global.autoindex/]的使用  
  1. 在织梦的{dede:arclist/}的标签中,有一个非常有用的,[field:global.autoindex/],这个标签是一个自增长标签,他的值是从1开始,跟着你的列表自动自增,在我们给网站加入一些效果时候会非常有用。

  2. 这里再介绍一下,如果想让他从0开始自增的方法
  3. [field:autoindex runphp='yes']@me=$GLOBALS['autoindex']-1;[/field:autoindex],这里的-1是重点,如果想从2开始自增就是+1以此类推

  4. 这个标签默认在sql标签中是不可以使用的,如果希望在sql语句的标签中加入,可以这样做。比如我们想修在{dede:sql/}标签中使用

  5. 首先找到 /includ/taglib文件夹下的sql.lib.php文件

  6. 打开后我们找到第34行,也就是代码 $ctp->LoadSource($Innertext); 处,
  7.    
  8. 在下面加上以下一段代码:$GLOBALS['autoindex'] = 0; 这段代码就是定义一个全局变量,并赋值为0,

  9. 接下来我们只需要将下面代码进行下修改:

  10. while($row = $dsql->GetArray($thisrs))
  11. {
  12. $sqlCt++;
  13. foreach($ctp->CTags as $tagid=>$ctag){
  14. if(!empty($row[$ctag->GetName()])){ $ctp->Assign($tagid,$row[$ctag->GetName()]); }
  15. }
  16. $GLOBALS['autoindex']++;  //每循环一次加上一个1然后解析出来
  17. $revalue .= $ctp->GetResult();
  18. }

  19. 这样一来,这个[field:global.autoindex/]标签就可以在那个{dede:sql/}中使用了,我们举个例子:

  20. {dede:sql sql='select * from [url=mailto:#@__archives]#@__archives'[/url]}
  21. [field:global.autoindex/]-[field:title/]</br>
  22. {/dede:sql}


  23. itemindex在channelarclist中的使用类似于autoindex

  24. arclist            标签下使用 [field:global.autoindex/] 默认从1开始
  25. channel         标签下使用 [field:global.autoindex/] 默认从0开始
  26. channelartlist 标签下使用 {dede:global.itemindex/}  默认从1开始

  27. arclist  从0开始 [field:global name=autoindex runphp="yes"]@me=@me-1;[/field:global]

  28. channel  从1开始 [field:global name=autoindex runphp="yes"]@me=@me+1;[/field:global][field:typename/]

  29. channelartlist  从0开始 {dede:global name=itemindex runphp='yes'}@me=@me-1;{/dede:global}



  30. 案例:
  31. 1.如果要实现排行榜,前三名的样式不一样
  32. [field:global runphp='yes' name=autoindex]      
  33. $a="<SPAN class='ico1'>";  $b="</SPAN>";     $c="<SPAN class='ico2'>"; if (@me > 3) @me = $c.@me.$b; else @me = $a.@me.$b;
  34. [/field:global]

  35. 如果样式  都是不同的 还可以这样定义
  36. [field:global runphp='yes' name=autoindex]      $a="<SPAN class='icon@me'>";  $b="</SPAN>";     $c="<SPAN class='ico2'>"; if (@me > 3) @me = $c.@me.$b; else @me = $a.@me.$b; [/field:global]
复制代码



回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2014-2-17 22:53:15 | 只看该作者
常用的一些 :

关键描述调用标签: <meta name="keywords" content="{dede:field name='keywords'/}">
<meta name="description" content="{dede:field name='description' function='html2text(@me)'/}">
模板路径调用标签: {dede:field name='templeturl'/}
网站标题调用标签: {dede:global name='cfg_webname'/}
栏目导航调用标签: <a href="/">首页</a></li>
{dede:channel type='top' row='8' currentstyle="<li class='thisclass'><a href='~typelink~'>~typename~</a> </li>"}
<li><a href='[field:typelink/]' target="_blank">[field:typename/]</a> </li>
{/dede:channel}
指定调用栏目标签: {dede:onetype typeid='ID'}[field:typename /]{/dede:onetype}
频道栏目调用标签: {dede:channel type='self'}<li><a href='[field:typelink/]'>[field:typename/]</a></li>{/dede:channel}
友情链接调用标签: {dede:flink row='24' linktype=2/}
网站版权调用标签: {dede:global name='cfg_powerby'/}
网站备案调用标签: {dede:global name='cfg_beian'/}
当前栏目名称标签: {dede:field name='typename'/}
当前位置调用标签: {dede:field name='position'/}
列表文章调用标签: {dede:list pagesize='8'}{/dede:list}
栏目链接调用标签: [field:typelink function='str_replace("a ","a class=ulink ",@me)'/]
作者链接调用标签: [field:writer /]
列表点击调用标签: [field:click/]
列表评论调用标签: [field:postnum/]
查阅全文调用标签: <a href="[field:arcurl/]">查阅全文...</a>
列表时间调用标签: [field:pubdate function="GetDateTimeMK(@me)"/]
列表分页调用标签: {dede:pagelist listsize='4' listitem='index pre pageno next end '/}
文章标题调用标签: {dede:field name="title"/}
文章来源调用标签: {dede:field name='source'/}
文章作者调用标签: {dede:field name='writer' /}
文章时间调用标签: {dede:field name='pubdate' function='GetDateMk(@me)'/}
文章Tag调用标签: {dede:tag type='current'/}
文章点击调用标签: <script src="{dede:field name='phpurl'/}/count.php?aid={dede:field name='ID'/}&mid={dede:field name='memberid'/}&view=yes" language="javascript"></script>
文章内容调用标签: {dede:field name='body'/}
文章分页调用标签: {dede:pagebreak/}
[<a href="{dede:field name='phpurl'/}/stow.php?arcID={dede:field name=ID/}">收藏</a>]
[<a href="{dede:field name='phpurl'/}/recommend.php?arcID={dede:field name=ID/}">推荐</a>]
[<a href="{dede:field name='phpurl'/}/feedback.php?arcID={dede:field name=ID/}">评论</a>]
[<a href="#">打印</a>]
[<a href="#">关闭</a>]
文章顶客次数标签: {dede:field name='digg'/} <a href="javascript:Digg('digg',{dede:field name='id'/});">顶一下</a>
上一篇下一篇标签: {dede:prenext get='pre'/}{dede:prenext get='next'/}
头条推荐调用标签: {dede:arclist row=1 titlelen=24 orderby=pubdate att=2} <dt> [field:textlink/]
<span>[field:description/]……</span> </dt> {/dede:arclist}
最新文章调用标签: {dede:arclist row=8 titlelen=24 orderby=pubdate}<li>[field:textlink/]</li> {/dede:arclist}
热关键字调用标签: {dede:hotwords num='5' subday='30'/}
最新图文调用标签: {dede:arclist row=4 titlelen=20 orderby=pubdate type='image.' imgwidth='152' imgheight='98'}
<dd><a href="[field:arcurl/]"><img src="[field:picname/]" alt="[field:title/]" ></a><span><a title="[field:title function='htmlspecialchars(@me)'/] " href="[field:arcurl /]">[field:title /]</a></span> </dd>{/dede:arclist}
推荐文档调用标签: {dede:arclist type='commend' titlelen='40' row='10'} <li><a title="[field:title function='htmlspecialchars(@me)'/] " href="[field:arcurl /]">[field:title /]</a></li> {/dede:arclist}
随机推荐调用标签: {dede:arclist type='commend' titlelen='26' orderby='rand' row='10'} <li><a title="[field:title function='htmlspecialchars(@me)'/] " href="[field:arcurl /]">[field:title /]</a></li> {/dede:arclist}
热点文档调用标签: {dede:arclist orderby='click' titlelen='40' row='10'} <li><a title="[field:title function='htmlspecialchars(@me)'/] " href="[field:arcurl /]">[field:title /]</a></li> {/dede:arclist}
相关文档调用标签: {dede:likeart titlelen='24' row='10'} <li><a title="[field:title function='htmlspecialchars(@me)'/] " href="[field:arcurl /]">[field:title /]</a></li> {/dede:likeart}
调用图片链接标记: <a href="[field:arcurl/]"><img src="[field:picname/]" alt="[field:title/]" ></a>
<a href='[field:arcurl /]'>[field:image/]</a>
调用文字链接标记: <a href="[field:aucurl/]" title="[field:title/]">[field:title/]</a>
<a title="[field:title function='htmlspecialchars(@me)'/] " href="[field:arcurl /]">[field:title /]</a>
控制字数描述标记: [field:description function="cn_substr(@me,100)"/]...
调用文章tags标记: {dede:tag type='current'/}
文章关键字与描述: {dede:field name='keywords'/}
{dede:field name='description' function='html2text(@me)'/}
栏目介绍:{dede:field name='description' function='html2text(@me)'/}
调用外部htm文件:{dede:include file='head.htm' ismake='yes'/}
搜索文章调用标签:{dede:global name='keyword'/}"的搜索结果 - {dede:global name='cfg_webname'/} 搜索" {dede:global name='keyword'/}</span>" 的结果
递增序列号: [field:global name=autoindex/]

按时间点击文章排行榜调用标签:
按总: {dede:arclist row='24' titlelen=24 orderby=click}
按月: {dede:arclist row='24' titlelen=8 orderby=click subday=30}
按周: {dede:arclist row='24' titlelen=8 orderby=click subday=7}
在首页调用某栏目的子栏目
{dede:channel type=’sun’ typeid=’栏目ID’}
<a href=”[field:typelink/]“>[field:typename/]</a>
{/dede:channel}
或者
{dede:global name=’maplist’/}
搜索表单调用标签:

  1. <form action="{dede:global name='cfg_phpurl'/}/search.php" name="formsearch">
  2. <input type="hidden" name="kwtype" value="1" />
  3. <input name="keyword" id="keyword" type="text" class="searchtxt" />
  4. <select name="searchtype" id="searchtype">
  5. <option value="titlekeyword" selected>智能模糊搜索</option>
  6. <option value="title">仅搜索标题</option>
  7. </select>
  8. <input type="image" src="{dede:field name='templeturl'/}/images/topsearch_submit.gif" />
  9. </form>
复制代码


调用缩略图: <img src='{dede:field name="litpic"/}'>


时间效果

  1. [field:pubdate runphp="yes"]
  2. if((time()-@me)<(60*60*24)){@me=' <font color="#ff6600">'.strftime("%H:%M",@me).'</FONT>';}
  3. else {@me=strftime("%m-%d",@me);}
  4. [/field:pubdate]
复制代码

DEDE seo小技巧 加个百度搜索本篇文章
【<a href="javascript:" onclick='window.open("http://www.baidu.com/s?q1={dede:field name="title" /}&q2=&q3=&q4=&rn=10&lm=0&ct=1&ft=&q5=&q6=你的网址")' target="_top" title="在百度搜索“{dede:field name="title" /}”相关内容"><font color=red>在百度搜索更多繁体字</font></a>】
把网址改一下,不加http
【<a href="javascript:" onclick='window.open("http://www.baidu.com/baidu?word={dede:field name="title" /}")' target="_top" title="在百度搜索“{dede:field name="title" /}”相关内容
调用tag:

  1. {dede:field name='keywords' runphp='yes' }
  2. if(!empty(@me)){
  3. $kws = explode(' ',@me);
  4. @me = "";
  5. foreach($kws as $k){
  6. @me .= "<a href='/tag.php?/$k/'>$k</a> ";
  7. }
  8. @me= str_replace('+', ' ',trim(@me));
  9. }
  10. {/dede:field}
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|手机版|Archiver|源于生活(个人生活娱乐工作的笔记)css3,html5,学习笔记    

GMT+8, 2024-5-7 07:43 , Processed in 0.109200 second(s), 26 queries .

Powered by Mr.Kevin-ying

© 2004-2015

快速回复 返回顶部 返回列表