立即注冊 找回密碼

QQ登錄

只需一步,快速開始

查看: 3502|回復(fù): 0
打印 上一主題 下一主題

[Discuz 通用教程] Discuz開發(fā) discuz x2 關(guān)聯(lián)鏈接原理分理

[復(fù)制鏈接]

111

主題

16

回帖

1819

積分

大學(xué)四年級

Rank: 6Rank: 6

積分
1819
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2018-6-26 19:24:15 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
道勤網(wǎng)-數(shù)據(jù)bmrsportswear.com

親注冊登錄道勤網(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行附近
  1. <!--{if $_G['relatedlinks']}-->
  2. <script
  3. type="text/javascript">
  4. var relatedlink =
  5. [];
  6. <!--{loop $_G['relatedlinks'] $key
  7. $link}-->
  8. relatedlink[$key] = {'sname':'$link[name]',
  9. 'surl':'$link[url]'};
  10. <!--{/loop}-->
  11. relatedlinks('postmessage_$_G[forum_firstpid]');
  12. </script>
  13. <!--{/if}-->
復(fù)制代碼
在模板中輸出一段javascript代碼,并且將$_G['relatedlinks']中的數(shù)據(jù)以js數(shù)組的形式賦給relatedlink[]變量。然后執(zhí)行relatedlinks()函數(shù),該函數(shù)在common_extra.js文件中。
  1. function _relatedlinks(rlinkmsgid) {
  2. if(!$(rlinkmsgid) || $(rlinkmsgid).innerhtml.match(/<script[^\>]*?>/i)) {
  3. return;
  4. }
  5. var alink = new Array(), ignore = new Array();
  6. var i = 0;
  7. var msg = $(rlinkmsgid).innerHTML;
  8. msg = msg.replace(/(<ignore_js_op\>[\s|\S]*?<\/ignore_js_op\>)/ig, function($1) {
  9. ignore[i] = $1;
  10. i++;
  11. return '#ignore_js_op '+(i - 1)+'#';
  12. });
  13. i = 0;
  14. msg = msg.replace(/(<a.*?<\/a\>)/ig, function($1) {
  15. alink[i] = $1;
  16. i++;
  17. return '#alink '+(i - 1)+'#';
  18. });
  19. var relatedid = new Array();
  20. msg = msg.replace(/(^|>)([^<]+)(?=<|$)/ig, function($1, $2, $3) {
  21. for(var j = 0; j > -1; j++) {
  22. if(relatedlink[j] && !relatedid[j]) {
  23. var ra = '<a href="'+relatedlink[j]['surl']+'" target="_blank" class="relatedlink">'+relatedlink[j]['sname']+'</a>';
  24. var $rtmp = $3;
  25. $3 = $3.replace(relatedlink[j]['sname'], ra);
  26. if($3 != $rtmp) {
  27. relatedid[j] = 1;
  28. }
  29. } else {
  30. break;
  31. }
  32. }
  33. return $2 + $3;
  34. });

  35. for(var k in alink) {
  36. msg = msg.replace('#alink '+k+'#', alink[k]);
  37. }

  38. for(var l in ignore) {
  39. msg = msg.replace('#ignore_js_op '+l+'#', ignore[l]);
  40. }
  41. $(rlinkmsgid).innerHTML = msg;
  42. }
復(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ù)!
本內(nèi)容系 道勤團(tuán)隊(duì) bmrsportswear.com 客服與技術(shù)人員研究整理的智慧結(jié)晶,轉(zhuǎn)載勿用于商業(yè)用途,并保留本文鏈接,侵權(quán)必究!
dsu_marcocopyright:copy_link 

【道勤網(wǎng)】- bmrsportswear.com 軟件視頻自學(xué)教程|免費(fèi)教程|自學(xué)電腦|3D教程|平面教程|影視動畫教程|辦公教程|機(jī)械設(shè)計(jì)教程|網(wǎng)站設(shè)計(jì)教程!【道勤網(wǎng)】 - 論壇版權(quán)1、本主題所有言論和圖片純屬會員個(gè)人意見,與本論壇立場無關(guān)
2、本站所有主題由該帖子作者發(fā)表,該帖子作者與【道勤網(wǎng)】- bmrsportswear.com 軟件視頻自學(xué)教程|免費(fèi)教程|自學(xué)電腦|3D教程|平面教程|影視動畫教程|辦公教程|機(jī)械設(shè)計(jì)教程|網(wǎng)站設(shè)計(jì)教程!【道勤網(wǎng)】享有帖子相關(guān)版權(quán)
3、其他單位或個(gè)人使用、轉(zhuǎn)載或引用本文時(shí)必須同時(shí)征得該帖子作者和【道勤網(wǎng)】- bmrsportswear.com 軟件視頻自學(xué)教程|免費(fèi)教程|自學(xué)電腦|3D教程|平面教程|影視動畫教程|辦公教程|機(jī)械設(shè)計(jì)教程|網(wǎng)站設(shè)計(jì)教程!【道勤網(wǎng)】的同意
4、帖子作者須承擔(dān)一切因本文發(fā)表而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
5、本帖部分內(nèi)容轉(zhuǎn)載自其它媒體,但并不代表本站贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé)
6、如本帖侵犯到任何版權(quán)問題,請立即告知本站,本站將及時(shí)予與刪除并致以最深的歉意
7、【道勤網(wǎng)】- bmrsportswear.com 軟件視頻自學(xué)教程|免費(fèi)教程|自學(xué)電腦|3D教程|平面教程|影視動畫教程|辦公教程|機(jī)械設(shè)計(jì)教程|網(wǎng)站設(shè)計(jì)教程!【道勤網(wǎng)】管理員和版主有權(quán)不事先通知發(fā)貼者而刪除本文

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)閉

道勤網(wǎng)- 推薦內(nèi)容!上一條 /2 下一條

!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回復(fù) !jz_fhlb! !jz_lxwm! !jz_gfqqq!

關(guān)于我們|手機(jī)版|小黑屋|地圖|【道勤網(wǎng)】-bmrsportswear.com 軟件視頻自學(xué)教程|免費(fèi)教程|自學(xué)電腦|3D教程|平面教程|影視動畫教程|辦公教程|機(jī)械設(shè)計(jì)教程|網(wǎng)站設(shè)計(jì)教程【道勤網(wǎng)】 ( 皖I(lǐng)CP備15000319號-1 )

GMT+8, 2024-10-23 09:36

Powered by DaoQin! X3.4 © 2016-2063 Dao Qin & 道勤科技

快速回復(fù) 返回頂部 返回列表