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

作者:csuper 发表于:2016-03-19

  --------------------------------------------------------------------------------------------------------------------------------------
 之前修改source\function\function_discuzcode.php文件来给Discuz! X2远程图片增加Alt的方法并不是很好,所以,我重新修改了一下,既能给图片增加Alt属性,还能避免每一张图片都有相同的Alt文字(标题),以免被 搜索引擎认为是堆砌关键字,遭到K站。
 具体修改如下:
 随便找个function后面,把这个函数的代码增加上:

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

    function str_replace_once($needle, $replace, $haystack) {

  2.         $pos = strpos($haystack, $needle);

  3.         if ($pos === false) {

  4.                 return $haystack;

  5.         }

  6.         return substr_replace($haystack, $replace, $pos, strlen($needle));

  7. }

复制代码

然后,找到如下代码:

  1. $message = preg_replace(array(

  2.                                 "/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies",

  3.                                 "/\[img=(\d{1,4})[x|\,](\d{1,4})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies"

  4.                         ), $allowimgcode ? array(

  5.                                 "bbcodeurl('\\1', '<img $attrsrc=\"{url}\" onload=\"thumbImg(this)\" alt=\"\" />')",

  6.                                 "parseimg('\\1', '\\2', '\\3', ".intval($lazyload).")"

  7.                         ) : array(

  8.                                 (!defined('IN_MOBILE') ? "bbcodeurl('\\1', '<a href=\"{url}\" target=\"_blank\">{url}</a>')" : "bbcodeurl('\\1', '<a href=\"{url}\" target=\"_blank\">[$viewimg]</a>')"),

  9.                                 (!defined('IN_MOBILE') ? "bbcodeurl('\\3', '<a href=\"{url}\" target=\"_blank\">{url}</a>')" : "bbcodeurl('\\3', '<a href=\"{url}\" target=\"_blank\">[$viewimg]</a>')"),

  10.                         ), $message);

复制代码

在这个代码后面,增加上如下代码:

  1. //Replace alt="" to alt="<forum_thread_short_title>"

  2.                         $imgalt = $_G[forum_thread][short_subject];

  3.                         $message = str_replace_once('alt=""','alt="'.$imgalt.'"',$message);


复制代码

这行做的目的就是把Alt为空的部分,替换成当前帖子的短标题,并且,只处理一次,不会被惩罚。另外,如果想多增加几个Alt信息,继续重复$message = str_replace_once('alt=""','alt="'.$imgalt.'"',$message);这句就可以了,替换成你自己想要的文字


版权声明

本文仅代表作者观点,不代表Csuper立场。
本文系作者授权百度百家发表,未经许可,不得转载。