新方法(2013年7月18日修改):
1、下載simple_html_dom.php,官網(wǎng)地址:http://simplehtmldom.sourceforge.net/
2、將simple_html_dom.php上傳到source/module/portal/下
3、修改source/function/function_discuzcode.php文件:
找到如下代碼:- $message = preg_replace(array(
- "/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies",
- "/\[img=(\d{1,4})[x|\,](\d{1,4})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies"
- ), $allowimgcode ? array(
- "bbcodeurl('\\1', '<img $attrsrc="{url}" onload="thumbImg(this)" alt="" />')",
- "parseimg('\\1', '\\2', '\\3', ".intval($lazyload).")"
- ) : array(
- (!defined('IN_MOBILE') ? "bbcodeurl('\\1', '<a href="{url}" target="_blank">{url}</a>')" : "bbcodeurl('\\1', '<a href="{url}" target="_blank">[$viewimg]</a>')"),
- (!defined('IN_MOBILE') ? "bbcodeurl('\\3', '<a href="{url}" target="_blank">{url}</a>')" : "bbcodeurl('\\3', '<a href="{url}" target="_blank">[$viewimg]</a>')"),
- ), $message);
復(fù)制代碼 在這個(gè)代碼后面,增加上如下代碼:
//處理文章內(nèi)容中的圖片Alt問題;玩改車(wangaiche.com)技術(shù)團(tuán)隊(duì),20130718;
//為了避免圖片的Alt屬性重復(fù),特給圖片Alt增加一個(gè)編號;
//需要判斷一下帖子標(biāo)題和圖片本身是否已經(jīng)有Alt屬性;
//BEGIN
$imgalt = $_G[forum_thread][short_subject];
if ($imgalt) {
require_once '/source/module/portal/simple_html_dom.php';
$htmltemp = str_get_html($message);
$img_index = 1;
foreach($htmltemp->find('img') as $eimg)
{
if (!$eimg->alt) {
$eimg->alt = $imgalt.'('.$img_index.')';
$img_index = $img_index + 1;
}
}
$replaced_text = $htmltemp->root->outertext();
$message = $replaced_text;
}
//END
舊方法(2013年7月18日前):
--------------------------------------------------------------------------------------------------------------------------------------
之前修改source\function\function_discuzcode.php文件來給Discuz! X2遠(yuǎn)程圖片增加Alt的方法并不是很好,所以,我重新修改了一下,既能給圖片增加Alt屬性,還能避免每一張圖片都有相同的Alt文字(標(biāo)題),以免被搜索引擎認(rèn)為是堆砌關(guān)鍵字,遭到K站。
具體修改如下:
隨便找個(gè)function后面,把這個(gè)函數(shù)的代碼增加上:- function str_replace_once($needle, $replace, $haystack) {
- $pos = strpos($haystack, $needle);
- if ($pos === false) {
- return $haystack;
- }
- return substr_replace($haystack, $replace, $pos, strlen($needle));
- }
復(fù)制代碼 然后,找到如下代碼:- $message = preg_replace(array(
- "/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies",
- "/\[img=(\d{1,4})[x|\,](\d{1,4})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies"
- ), $allowimgcode ? array(
- "bbcodeurl('\\1', '<img $attrsrc="{url}" onload="thumbImg(this)" alt="" />')",
- "parseimg('\\1', '\\2', '\\3', ".intval($lazyload).")"
- ) : array(
- (!defined('IN_MOBILE') ? "bbcodeurl('\\1', '<a href="{url}" target="_blank">{url}</a>')" : "bbcodeurl('\\1', '<a href="{url}" target="_blank">[$viewimg]</a>')"),
- (!defined('IN_MOBILE') ? "bbcodeurl('\\3', '<a href="{url}" target="_blank">{url}</a>')" : "bbcodeurl('\\3', '<a href="{url}" target="_blank">[$viewimg]</a>')"),
- ), $message);
復(fù)制代碼 在這個(gè)代碼后面,增加上如下代碼:- //Replace alt="" to alt="<forum_thread_short_title>"
- $imgalt = $_G[forum_thread][short_subject];
- $message = str_replace_once('alt=""','alt="'.$imgalt.'"',$message);
復(fù)制代碼 這行做的目的就是把Alt為空的部分,替換成當(dāng)前帖子的短標(biāo)題,并且,只處理一次,不會(huì)被懲罰。另外,如果想多增加幾個(gè)Alt信息,繼續(xù)重復(fù)$message = str_replace_once('alt=""','alt="'.$imgalt.'"',$message);這句就可以了,替換成你自己想要的文字。
如果感覺麻煩,就直接下載我修改好的文件即可,下載地址:http://wangaiche.com/downloads/function_discuzcode_new.zip
本文系玩改車(http://wangaiche.com)原創(chuàng),轉(zhuǎn)載請注明來源,謝謝!
|