親注冊登錄道勤網(wǎng)-可以查看更多帖子內(nèi)容哦。ò蕡D片、文字詳情等)請您及時(shí)注冊登錄-bmrsportswear.com
您需要 登錄 才可以下載或查看,沒有賬號?立即注冊
x
discuz x2 關(guān)聯(lián)鏈接,即在指定的范圍(文章,主題,群組,日志)內(nèi)容中出現(xiàn)的指定文字自動加上給定鏈接。下面我簡單解析一下關(guān)聯(lián)鏈接的實(shí)現(xiàn)原理,希望對一些不能正常顯示關(guān)聯(lián)鏈接的用戶提供一些參考。下面以論壇主題為例說明,其他各處與之原理相同。
涉及地方:后臺--運(yùn)營--關(guān)聯(lián)鏈接--添加關(guān)聯(lián)鏈接。
當(dāng)我們打開主題內(nèi)容頁面,程序執(zhí)行到furom_viewthread.php中的986行附近
- <!--{if $_G['relatedlinks']}-->
- <script
- type="text/javascript">
- var relatedlink =
- [];
- <!--{loop $_G['relatedlinks'] $key
- $link}-->
- relatedlink[$key] = {'sname':'$link[name]',
- 'surl':'$link[url]'};
- <!--{/loop}-->
- relatedlinks('postmessage_$_G[forum_firstpid]');
- </script>
- <!--{/if}-->
復(fù)制代碼 在模板中輸出一段javascript代碼,并且將$_G['relatedlinks']中的數(shù)據(jù)以js數(shù)組的形式賦給relatedlink[]變量。然后執(zhí)行relatedlinks()函數(shù),該函數(shù)在common_extra.js文件中。
- function _relatedlinks(rlinkmsgid) {
- if(!$(rlinkmsgid) || $(rlinkmsgid).innerhtml.match(/<script[^\>]*?>/i)) {
- return;
- }
- var alink = new Array(), ignore = new Array();
- var i = 0;
- var msg = $(rlinkmsgid).innerHTML;
- msg = msg.replace(/(<ignore_js_op\>[\s|\S]*?<\/ignore_js_op\>)/ig, function($1) {
- ignore[i] = $1;
- i++;
- return '#ignore_js_op '+(i - 1)+'#';
- });
- i = 0;
- msg = msg.replace(/(<a.*?<\/a\>)/ig, function($1) {
- alink[i] = $1;
- i++;
- return '#alink '+(i - 1)+'#';
- });
- var relatedid = new Array();
- msg = msg.replace(/(^|>)([^<]+)(?=<|$)/ig, function($1, $2, $3) {
- for(var j = 0; j > -1; j++) {
- if(relatedlink[j] && !relatedid[j]) {
- var ra = '<a href="'+relatedlink[j]['surl']+'" target="_blank" class="relatedlink">'+relatedlink[j]['sname']+'</a>';
- var $rtmp = $3;
- $3 = $3.replace(relatedlink[j]['sname'], ra);
- if($3 != $rtmp) {
- relatedid[j] = 1;
- }
- } else {
- break;
- }
- }
- return $2 + $3;
- });
- for(var k in alink) {
- msg = msg.replace('#alink '+k+'#', alink[k]);
- }
- for(var l in ignore) {
- msg = msg.replace('#ignore_js_op '+l+'#', ignore[l]);
- }
- $(rlinkmsgid).innerHTML = msg;
- }
復(fù)制代碼 該函數(shù)接受替換內(nèi)容所在的父元素的id,在這個(gè)例子中,父元素應(yīng)該是<td id="postmessage_帖子id" class="t_f"></td>替換文本使用到了js的replace方法,將設(shè)定的關(guān)聯(lián)子句替換成帶有關(guān)聯(lián)鏈接的內(nèi)容。
可能導(dǎo)致的關(guān)聯(lián)鏈接不顯示的原因分析:
1、程序、模板或者js文件被修改,導(dǎo)致$_G['relatedlinks']沒有讀取到,可以通過模板輸出數(shù)據(jù)調(diào)試的方式檢查,如果有問題可以將原程序模板等相關(guān)文件覆蓋還原。
2、20110627之前有一個(gè)關(guān)聯(lián)鏈接的bug,會導(dǎo)致關(guān)聯(lián)鏈接無法顯示,建議打上最新的補(bǔ)丁
道勤主機(jī)提供365天*24小時(shí)全年全天無休、實(shí)時(shí)在線、零等待的售后技術(shù)支持。竭力為您免費(fèi)處理您在使用道勤主機(jī)過程中所遇到的一切問題!
如果您是道勤主機(jī)用戶,那么您可以通過QQ【792472177】、售后QQ【59133755】、旺旺【詮釋意念】、微信:q792472177免費(fèi)電話、后臺提交工單這些方式聯(lián)系道勤主機(jī)客服!
如果您不是我們的客戶也沒問題,點(diǎn)擊頁面最右邊的企業(yè)QQ在線咨詢圖標(biāo)聯(lián)系我們并購買后,我們?yōu)槟赓M(fèi)進(jìn)行無縫搬家服務(wù),讓您享受網(wǎng)站零訪問延遲的遷移到道勤主機(jī)的服務(wù)! |