掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
大家都知道在SEO中加入nofollow可以避免我們本頁(yè)的權(quán)重傳遞出去,而更多的保留在站內(nèi)的內(nèi)鏈之中,因此很多時(shí)候我們?cè)诰W(wǎng)頁(yè)一些非重要超鏈接上面加上rel=”nofollow”來(lái)處理,比如聯(lián)系QQ、微博關(guān)注等等,而有時(shí)候就做得更極端一些,干脆所有的外鏈都加上這個(gè)標(biāo)簽。而我們最近接到一個(gè)具體化的需求,就是在Discuz友情鏈接部分加入這個(gè)標(biāo)簽。
如果你是一個(gè)純粹的SEOer或者一個(gè)寫(xiě)靜態(tài)頁(yè)面的設(shè)計(jì)師,那么你肯定會(huì)認(rèn)為這很簡(jiǎn)單,直接在a標(biāo)簽中加上rel=”nofollow”就可以,但實(shí)際上大家可以看下Discuz的模版中的代碼。
<div id="category_lk" class="bm_c ptm"> <!--{if $_G['cache']['forumlinks'][0]}--> <ul class="m mbn cl">$_G['cache']['forumlinks'][0]</ul> <!--{/if}--> <!--{if $_G['cache']['forumlinks'][1]}--> <div class="mbn cl"> $_G['cache']['forumlinks'][1] </div> <!--{/if}--> <!--{if $_G['cache']['forumlinks'][2]}--> <ul class="x mbm cl"> $_G['cache']['forumlinks'][2] </ul> <!--{/if}--> </div>
DZ使用了PHP的模版引擎,因此能夠在模版文件中直接寫(xiě)上一些PHP變量,而上面就是DZ模版中關(guān)于友情鏈接的核心代碼,大家會(huì)發(fā)現(xiàn)這里不是我們想象的那樣,也就不是那種直接把a(bǔ)標(biāo)簽寫(xiě)在模版中,而是讀取一個(gè)$_G的某個(gè)關(guān)鍵字變量。因此很顯然不能直接在模版里修改HTML的結(jié)構(gòu)來(lái)修改。
作為一個(gè)官方認(rèn)證的開(kāi)發(fā)者,我不推薦大家這么做,因?yàn)檫@樣做其實(shí)破壞了DZ的原始結(jié)構(gòu),而且一旦升級(jí)文件又會(huì)被覆蓋,在標(biāo)準(zhǔn)的二次開(kāi)發(fā)過(guò)程中我們應(yīng)該只限修改的template文件夾(修改模版)及source\plugin文件夾(增加插件)。當(dāng)然如果你不在乎這樣就采用這種方式把,因?yàn)檫@個(gè)友情鏈接相關(guān)的文件位于source/function/cache/cache_forumlinks.php。這屬于二次開(kāi)發(fā)不適宜修改的地方,而且更新程序版本的時(shí)候也會(huì)覆蓋掉。
當(dāng)然說(shuō)到了這個(gè)文件位置了,要修改就簡(jiǎn)單了;其實(shí)這個(gè)文件中就一個(gè)build_cache_forumlinks()方法,就是進(jìn)行友情鏈接內(nèi)容緩存的。修改就修改這個(gè)方法中所有的a標(biāo)簽,在a標(biāo)簽中加入rel=”nofollow”就可以。如這里修改最后一個(gè)a標(biāo)簽。
<li><a href="'.$flink['url'].'" target="_blank" title="'.strip_tags($flink['name']).'" rel="nofollow" >'.$flink['name'].'</a></li>
上面那種方式我也說(shuō)了不是一種推薦的方式,而這里說(shuō)的JS方式就是我所推薦的,因?yàn)樗恍枰淖兾覀兊哪0嫖募?,甚至只是插入一段JS即可解決問(wèn)題。在上面開(kāi)始提到的模版文件中一開(kāi)始div標(biāo)簽就用一個(gè)id選擇器category_lk,那么我們就可以來(lái)以此做文章。通過(guò)DOM來(lái)改變(實(shí)際上是增加)我們需要增加的代碼,下面是我寫(xiě)的幾行簡(jiǎn)單的原生JS代碼,測(cè)試沒(méi)問(wèn)題。
<script> //獲取所有友情鏈接的a標(biāo)簽列表對(duì)象 var tagA=document.getElementById("category_lk").getElementsByTagName("a"); //通過(guò)for..in循環(huán)遍歷所以元素 for(var i in tagA){ tagA[i].rel="nofollow";//通過(guò)改變對(duì)象的rel屬性添加nofollow } </script>
不管是哪種方式,我們都可以通過(guò)查看當(dāng)前論壇友情鏈接處的源代碼,我們會(huì)發(fā)現(xiàn)所有a標(biāo)簽中都加了一個(gè)nofollow。實(shí)際上大家可以進(jìn)一步控制,比如控制一部分加上,而另外的一部分不加上nofollow。
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流