Discuz系列的门户系统文章中图片的Alt属性,一直都是个比较头疼的问题,目前即使最新版本X3,也仅仅只是处理了论坛图片附件的Alt属性,而针对文章编辑器上传的图片,根本就没有地方设置Alt,这简直是对SEO的一种侮辱!
没有办法,我们只好自己想个“凑活的”办法:
1、下载simple_html_dom.php,官网地址:2、将simple_html_dom.php上传到source/module/portal/下
3、修改source/module/portal/portal_view.php文件:
将以下代码:
- $article['related'] = array();
- if(($relateds = C::t('portal_article_related')->fetch_all_by_aid($aid))) {
- foreach(C::t('portal_article_title')->fetch_all(array_keys($relateds)) as $raid => $value) {
- $article['related'][$raid] = $value['title'];
- }
- }
复制代码
修改为:
- //处理文章内容中的图片Alt问题
- //为了避免图片的Alt属性重复,特给图片Alt增加一个编号;
- //BEGIN
- require_once 'simple_html_dom.php';
- $htmltemp = str_get_html($content['content']);
- $img_index = 1;
- foreach($htmltemp->find('img') as $eimg)
- {
- if (!$eimg->alt) {
- $eimg->alt = $article['title'].'('.$img_index.')';
- $img_index = $img_index + 1;
- }
- }
- $replaced_text = $htmltemp->root->outertext();
- $content['content'] = $replaced_text;
- //END
- $article['related'] = array();
- if(($relateds = C::t('portal_article_related')->fetch_all_by_aid($aid))) {
- foreach(C::t('portal_article_title')->fetch_all(array_keys($relateds)) as $raid => $value) {
- $article['related'][$raid] = $value['title'];
- }
- }
复制代码
保存文件,上传到对应目录即可。
注意,此方法只能是设置当前文章标题内容,无法自定义,真正解决问题的办法,还是需要Discuz官方修改文章的编辑器,让编辑在发布文章的时候,自己设置图片Alt属性。
|