首页 > CMS建站 > 织梦DEDE > 正文

DedeCMS实现调用文章地址为站外地址时加上nofollow

2020-07-03 13:10:44
字体:
来源:转载
供稿:网友
这篇文章主要为大家详细介绍了DedeCMS实现调用文章地址为站外地址时加上nofollow,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。

在DedeCMS中,文章模型经常会用到跳转[j]这个属性,但前台显示的的链接是动态的URL地址,搜索引擎一样会沿着爬取,但跳转了。这个链接实际指向是哪里呢?361源码网做了个实验,这个链接返回的HTTP状态码是302,属于临时跳转。这个跳转链接其实非常不友好,对于站内来讲,一个页面有多个URL指向实际网址;如果是站外链接,就容易分散权重。

       一般调用文章方法如下,也不用修改源文件。

{dede:arclist addfields='redirecturl' channelid='1'} <a href="[field:redirecturl/]" target="_blank">[field:title/]</a>{/dede:arclist}

       这里的链接修改为站内、站外的就直接调用跳转[j]引用的URL,另外站外的就加nofollow。

       需要用到的就是万能的[field:array]标签,能用在任何一个DedeCMS默认的标签内,特别适合多个条件判断。

{dede:arclist addfields='redirecturl' channelid='1'}[field:array runphp='yes']if(@me['redirecturl'] !=''){ @me = '<a href="' . @me['redirecturl'] . '" target="_blank" rel="nofllow">' . @me['title'] . '</a>';}else{ @me = '<a href="' . @me['arcurl'] . '" target="blank">' . @me['title'] . '</a>';};[/field:array]{/dede:arclist}

       DedeCMS的{dede:list}标签不能直接调用redirecturl字段,需要修改一下源程序

       打开/include/arc.listview.class.php,找到(复制请删除分隔符)

//如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)        if(preg_match('/hot|click|lastpost/', $orderby))        {            $query = "SELECT arc.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,           tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath           $addField           FROM `#分隔符@__archives` arc           LEFT JOIN `#分隔符@__arctype` tp ON arc.typeid=tp.id           $addJoin           WHERE {$this->addSql} $ordersql LIMIT $limitstart,$row";        }

       在这段代码前,增加

$addField .= ','.$addtable.'.redirecturl';

       调用方法

{dede:list row='1' addfields='redirecturl' orderby='pubdate'}<a href="[field:redirecturl/]" target="_blank">[field:title/]</a>{/dede:list}

       同样也可以增加该字段的判断,并调用跳转的地址,就不重复了。

另外:

dedecms 调取跳转地址,直接调用跳转网址的问题

 

{dede:arclist flag='f,j' row='2' typeid='7' order='asc' channelid='1' addfields='redirecturl'}        <div class="swiper-slide blue-slide"><a href="[field:redirecturl/]" target="_blank"><img src="[field:picname/]"></a></div>{/dede:arclist}

 

在dedecms中使用跳转属性时,正常情况下用arclist标签调用出来的文章地址为plus/view.php?aid=1这种形式的,如何直接调用到真正的跳转网址呢?

网上搜了一下,发现大多人都是修改PHP程序文件实现的,本人觉得这个办法不是很好,因为很多人都不会php编程,而且网站迁移等很容易造成文件丢失等问题。

下面本人提供一个最简单方法,思路是:由于跳转网址的字段redirecturl是存放在附加表dede_addonarticle中的,所以只需要调用附加表中的该字段即可。

但根据织梦官方的说法,在模板中用arclist调用附加表字段只需指定channelid属性和要获得的字段即可。

示例代码如下:

{dede:arclist typeid='1' row='1' flag='j' addfields='redirecturl' channelid='1' orderby='pubdate'}

<a href="[field:redirecturl/]" target="_blank">[field:title/]</a>

{/dede:arclist}

addfields这个属性是什么?有哪些值,起什么作用呢?

答:添加附加字段查询。

具体使用方法:

自定义字段也就是添加了一个附加的表,要获取附加表的内容,必须符合两个条件:

1、指定channelid属性;

2、指定要获得的字段addfields='字段1,字段2'

示例代码如下:

{dede:arclist row='8' channelid='内容模型ID号' addfields='附加字段1,附加字段2,附加字段3'}

[field:textlink/]

[field:附加字段1/] [field:附加字段2/]

{/dede:arclist}


以上就是DedeCMS实现调用文章地址为站外地址时加上nofollow的全部内容,希望对大家的学习和解决疑问有所帮助,也希望大家多多支持错新网。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表