亚洲一区2区三区|2020国产无码|日本视频9999|欧美三区四区四区区|超碰小说人人爽亚洲|国产精品3P电影|亚洲综合无码色区|久久tlri深 射|在线免费有码视频|久艹精品中文在线
玩改車
標(biāo)題:
解決Discuz關(guān)聯(lián)鏈接無法嵌套的問題
[打印本頁]
作者:
書生
時(shí)間:
2013-11-9 10:53
標(biāo)題:
解決Discuz關(guān)聯(lián)鏈接無法嵌套的問題
Discuz的關(guān)聯(lián)鏈接一直有個(gè)頭疼的問題:
關(guān)聯(lián)鏈接沒法嵌套,顯示異常。
例如下面的關(guān)鍵詞:
較短詞語:汽車改裝
http://wangaiche.com
較長(zhǎng)詞語:汽車改裝店
http://www.beclighting.com.cn/dian
就無法顯示成功,只能顯示較短的一個(gè),并且會(huì)出現(xiàn)亂碼。
為了解決這個(gè)問題,我們把代碼調(diào)整了一下,主要涉及2個(gè)文件:
1、source/function/cache/cache_relatedlink.php
2、source/class/helper/helper_seo.php
代碼修改:
1、cache_relatedlink.php
將原來的代碼注釋,修改成未注釋的代碼,目的是將關(guān)聯(lián)詞語按照長(zhǎng)度排序,讓長(zhǎng)詞在前面(顯示邏輯)
//$query = C::t('common_relatedlink')->range(0, 0, 'length(name)');
$query = DB::fetch_all('SELECT * FROM '.DB::table('common_relatedlink').' order by length(name) DESC');
復(fù)制代碼
2、helper_seo.php
解釋:
原來的代碼在處理嵌套的時(shí)候,只替換了一次,會(huì)導(dǎo)致后面詞語替換的時(shí)候,將已經(jīng)替換好的代碼清除掉。
我們中間用了一個(gè)臨時(shí)的不會(huì)沖突的代碼做過渡,這樣替換以后,就不會(huì)影響了。
找到函數(shù):
public static function parse_related_link($content, $extent) {
復(fù)制代碼
整個(gè)替換為以下代碼:
public static function parse_related_link($content, $extent) {
global $_G;
loadcache('relatedlink');
$allextent = array('article' => 0, 'forum' => 1, 'group' => 2, 'blog' => 3);
if($_G['cache']['relatedlink'] && isset($allextent[$extent])) {
$searcharray = $replacearray = array();
$fixedcode_array = $search_fixedcode_array = array();
$index = 0;
foreach($_G['cache']['relatedlink'] as $link) {
$link['extent'] = sprintf('%04b', $link['extent']);
if($link['extent'][$allextent[$extent]] && $link['name'] && $link['url']) {
$searcharray[$link[name]] = '/('.preg_quote($link['name']).')/i';
$fixed_code = 'AAABBBCCC['.$index.']'.'XXXYYYZZZ';
$fixedcode_array[$link[name]] = $fixed_code;
$search_fixedcode_array[$link[name]] = '/('.preg_quote($fixed_code).')/i';
$replacearray[$link[name]] = "<a href="$link[url]" target="_blank" class="relatedlink" title="$link[name]">$link[name]</a>";
$index += 1;
}
}
if($searcharray && $replacearray) {
$_G['trunsform_tmp'] = array();
$content = preg_replace("/(<script\s+.*?>.*?<\/script>)|(<a\s+.*?>.*?<\/a>)|(<img\s+.*?[\/]?>)|(\[attach\](\d+)\[\/attach\])/ies", "helper_seo::base64_transform('encode', '<relatedlink>', '\\1\\2\\3\\4', '</relatedlink>')", $content);
$content = preg_replace($searcharray, $fixedcode_array, $content, 1);
$content = preg_replace($search_fixedcode_array, $replacearray, $content, 1);
$content = preg_replace("/<relatedlink>(.*?)<\/relatedlink>/ies", "helper_seo::base64_transform('decode', '', '\\1', '')", $content);
}
}
return $content;
}
復(fù)制代碼
管理后臺(tái),更新緩存,添加2個(gè)嵌套的詞語進(jìn)行測(cè)試,看看效果。
歡迎光臨 玩改車 (http://www.beclighting.com.cn/)
Powered by Discuz! X3.5