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