最新消息:新席地网:网页制作,360度全景摄影,微信营销推广,详情见:新席地网xxidi.com,电话:13913571631

dede5.7 调用文章按权重排序的正确使用方法 (arclist \list标签)

dedecms admin 2647浏览 0评论

DEDECMS(织梦)5.6系统支持文档权重weight排序,可以在模板中使用:

  {dede:arclist row=’10’ titlelen=’50’ orderby=’weight’} •[field:textlink/]<br/> {/dede:arclist}

其中的orderby=’weight’就实现了文档按照权重排序了。这是arclist标签,可以用在任何位置来调用文档列表,然而,在栏目列表页,如果你要使用list标签(实现文档列表分页),也想用权重(weight)排序,

  {dede:list pagesize=’10’ titlelen=’50’ orderby=’weight’} •[field:textlink/]<br/> {/dede:list}

你会发现,你的列表并没有按照权重(weight)排序,无论你怎么修改,它的顺序就还是老样子!经过多次测试,发现原来dedecms织梦对权重 weight排序的支持仅arclist标签,并不支持list标签,因此,就开始了对dedecms织梦系统的改造,让它支持list标签权重 weight排序,改造的文件主要是include目录下的arc.list.class.php文件,打开文件,查找“else if($orderby==”lastpost”) {”语句,大概在738行,在此行前面按下回车健,插入如下语句:

  else if($orderby==”weight”) {$ordersql = ” order by arc.weight $orderWay”; }

成为这样:

  //排序方式

 

  $ordersql = ”;

 

  if($orderby==”senddate” || $orderby==”id”) {

 

   $ordersql=” order by arc.id $orderWay”;

 

  }

 

  else if($orderby==”hot” || $orderby==”click”) {

 

   $ordersql = ” order by arc.click $orderWay”;

 

  }

 

  else if($orderby==”lastpost”) {

 

   $ordersql = ”  order by arc.lastpost $orderWay”;

 

  }

 

  else if($orderby==”weight”) {

 

   $ordersql = ”  order by arc.weight $orderWay”;

 

  }

 

  else {

 

   $ordersql=” order by arc.sortrank $orderWay”;

 

  }

继续查找,约778行处:

  if(preg(‘hot|click|lastpost’,$orderby))

语句,修改为:

         if(preg_match(‘/hot|click|weight|lastpost/’, $orderby))

修改完成后,保存,如果目标里面已经使用了weight排序,生成一下,就可以看到,文档列表已经安装weight排序
后记:进行了上面的修改,可以实现按照权重weight排序,但是,如果不在模板中写明orderway=”asc”,无法实现权重越小越靠前,

解决方案1:

  {dede:list pagesize=’10’ orderby=’weight’ orderway=’asc’} •[field:textlink/]<br/> {/dede:list}

要实现越重越大越靠前,只需要将上述代码中的“orderway=’asc’”去掉就可以了。
究其深层原因,是arc.list.class.php文件中,576行:

 $imgwidth=120,$imgheight=90,$listtype=”all”,$orderby=”default”,$innertext=””,$tablewidth=”100″,$ismake=1,$orderWay=’desc’)

默认排序方式是降序排列,而非升序,考虑其它常用排序,如puddate等,此处不要修改的好。

调用:

  {dede:list pagesize=’15’ isweight=’y’ orderby=’weight’ orderway=’asc’}
  <LI><SPAN style=”FLOAT: right”>[[field:pubdate function=”GetDateTimeMK(@me)”/]]</SPAN><A

  href=”[field:arcurl/]”>[field:title/]</A>

  </LI>

  {/dede:list}

来自:http://www.ubooo.com/Web/Cms/37509.html

另参考:http://hi.baidu.com/webany/item/5d161e952453d69883d29582



分享到: 更多

转载请注明:梦寻天涯的博客 » dede5.7 调用文章按权重排序的正确使用方法 (arclist \list标签)

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址