主页 > 网站建设 > 建站知识 > dedecms教程:dede通过关键词调用相关文章内容

dedecms教程:dede通过关键词调用相关文章内容

POST TIME:2020-04-04 18:14

dede本身自带的有一个相关文章的板块“{dede:likeart}”,可以用了之后发现这个板块调用的是全站的文章,而且没有什么关联性,基本美工页面调用的也是一样的文章,百度是很不喜欢这样做的。

今天上网查了下找到了一个东西,亲自试过之后发现还可以,把他分享给大家。原来从dedecms5.5版开始已经替换了该标签,把模板中 likeart 标签修改为 likearticle 就可以了。

代码如下:

参数说明:

col:分多少列显示(默认为单列)

row:返回文档列表总数

titlelen:标题长度 等同于titlelength

infolen:表示内容简介长度 等同于infolength

mytypeid:手工指定要限定的栏目id,用,分开表示多个

innertext:单条记录样式(指标签中间的内容)

likeartcle标签默认是不支持order by属性的(包括V5.7),在网上找到了修改的方法:

编辑likearticle.lib.php文件,首先获得标签传递过来的orderby的属性值,

找到:

在下面添加:

在源代码中找到下面代码:

这是likearticle标签默认的排序方式。赋予标签orderby属性那么这段代码就没意义了,把上面代码替换为:


搞定!!!

    1. {dede:likearticlerow=”col=”titlelen=”infolen=”}
    2. <ahref=’[field:arcurl/]‘>[field:title/]</a>
    3. {/dede:likearticle}
    1. extract($ctag->CAttribute->Items,EXTR_SKIP);
    2. $revalue=”;
    1. $orderby=$ctag->GetAtt(‘orderby’);
    1. if(empty($arcid)||$byabs==0){
    2. $orderquery=”orderbyarc.iddesc“;
    3. }
    4. else{
    5. $orderquery=”orderbyABS(arc.id–“.$arcid.”)“;
    6. }
    1. $orderquery=”;
    2. if($orderby==’hot’||$orderby==’click’)$orderquery=”orderbyarc.click$orderWay”;
    3. elseif($orderby==‘sortrank’||$orderby==’pubdate’)$orderquery=”orderbyarc.sortrank$orderWay”;
    4. elseif($orderby==‘id’)$orderquery=”orderbyarc.id$orderWay”;
    5. elseif($orderby==‘near’)$orderquery=”orderbyABS(arc.id–“.$arcid.”)”;
    6. elseif($orderby==‘lastpost’)$orderquery=”orderbyarc.lastpost$orderWay”;
    7. elseif($orderby==‘scores’)$orderquery=”orderbyarc.scores$orderWay”;
    8. elseif($orderby==‘rand’)$orderquery=”orderbyrand()”;
    9. elseif($orderby==‘weight’)$orderquery=”orderbyarc.weightasc”;//如果没有特定设置排序则按照权重先排序
    10. else$orderquery=”orderbyarc.sortrank$orderWay”;


收缩
  • 微信客服
  • 微信二维码
  • 电话咨询

  • 400-1100-266