在DedeCMS中,文章模型經(jīng)常會(huì)用到跳轉(zhuǎn)[j]這個(gè)屬性,但前臺(tái)顯示的的鏈接是動(dòng)態(tài)的URL地址,搜索引擎一樣會(huì)沿著爬取,但跳轉(zhuǎn)了。這個(gè)鏈接實(shí)際指向是哪里呢?秀站網(wǎng)秀站網(wǎng)做了個(gè)實(shí)驗(yàn),這個(gè)鏈接返回的HTTP狀態(tài)碼是302,屬于臨時(shí)跳轉(zhuǎn)。這個(gè)跳轉(zhuǎn)鏈接其實(shí)非常不友好,對(duì)于站內(nèi)來講,一個(gè)頁面有多個(gè)URL指向?qū)嶋H網(wǎng)址;如果是站外鏈接,就容易分散權(quán)重。
一般調(diào)用文章方法如下,也不用修改源文件。
{dede:arclist addfields='redirecturl' channelid='1'} <a href="[field:redirecturl/]" target="_blank">[field:title/]</a> {/dede:arclist}
這里的鏈接修改為站內(nèi)、站外的就直接調(diào)用跳轉(zhuǎn)[j]引用的URL,另外站外的就加nofollow。
需要用到的就是萬能的[field:array]標(biāo)簽,能用在任何一個(gè)DedeCMS默認(rèn)的標(biāo)簽內(nèi),特別適合多個(gè)條件判斷。
{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}標(biāo)簽不能直接調(diào)用redirecturl字段,需要修改一下源程序
打開/include/arc.listview.class.php,找到(復(fù)制請(qǐng)刪除分隔符)
//如果不用默認(rèn)的sortrank或id排序,使用聯(lián)合查詢(數(shù)據(jù)量大時(shí)非常緩慢) 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';
調(diào)用方法
{dede:list row='1' addfields='redirecturl' orderby='pubdate'} <a href="[field:redirecturl/]" target="_blank">[field:title/]</a> {/dede:list}
同樣也可以增加該字段的判斷,并調(diào)用跳轉(zhuǎn)的地址,就不重復(fù)了。