Discuz!论坛远程链接图片增加Alt属性的方法(最新修改)

玩改车 书生 2011-10-30
新方法(2013年7月18日修改):
1、下载simple_html_dom.php,官网地址:http://simplehtmldom.sourceforge.net/
2、将simple_html_dom.php上传到source/module/portal/下
3、修改source/function/function_discuzcode.php文件:
找到如下代码:[code]$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);[/code]在这个代码后面,增加上如下代码:
//处理文章内容中的图片Alt问题;玩改车(wangaiche.com)技术团队,20130718;
//为了避免图片的Alt属性重复,特给图片Alt增加一个编号;
//需要判断一下帖子标题和图片本身是否已经有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远程图片增加Alt的方法并不是很好,所以,我重新修改了一下,既能给图片增加Alt属性,还能避免每一张图片都有相同的Alt文字(标题),以免被搜索引擎认为是堆砌关键字,遭到K站。
具体修改如下:
随便找个function后面,把这个函数的代码增加上:[code]function str_replace_once($needle, $replace, $haystack) {
        $pos = strpos($haystack, $needle);
        if ($pos === false) {
                return $haystack;
        }
        return substr_replace($haystack, $replace, $pos, strlen($needle));
}[/code]然后,找到如下代码:[code]$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);[/code]在这个代码后面,增加上如下代码:[code]//Replace alt="" to alt="<forum_thread_short_title>"
                        $imgalt = $_G[forum_thread][short_subject];
                        $message = str_replace_once('alt=""','alt="'.$imgalt.'"',$message);
[/code]这行做的目的就是把Alt为空的部分,替换成当前帖子的短标题,并且,只处理一次,不会被惩罚。另外,如果想多增加几个Alt信息,继续重复$message = str_replace_once('alt=""','alt="'.$imgalt.'"',$message);这句就可以了,替换成你自己想要的文字。
如果感觉麻烦,就直接下载我修改好的文件即可,下载地址:http://wangaiche.com/downloads/function_discuzcode_new.zip
本文系玩改车(http://wangaiche.com)原创,转载请注明来源,谢谢!

相关专题

相关推荐

Discuz X2首页keywords和description显示问题

Discuz! X2禁止前台文章列表页缩略图显示修改方法

提升Discuz门户文章收录最有效的办法

Discuz X2.5 keywords和description只能看到“首页”的解决办法

解决Discuz上传图片(附件)"Upload Error: 500"错误!

Discuz X2.5点击“发帖”出现XML代码的解决办法

Discuz X2.5完美支持WinCache的方法分享

Discuz远程附件图片裁切无法更新的问题修复

Discuz门户文章中图片设置Alt属性

解决Discuz关联链接无法嵌套的问题