Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[修改] 百度官方sitemap插件(百度结构化数据提交baidusumbit)图片附件链接问题修正

[复制链接]
reada 发表于 2015-3-26 10:19:28 | 显示全部楼层 |阅读模式
如果DiscuzX附件启用其他域名(即非站点域名),可能导致在百度搜索中图片附件不可见(即搜索结果左侧在加载过程出现空白框一闪而过);

可以打开附件目录 source/plugin/baidusubmit/function/function_baidu.php 文件

找到

  1. $attachurl = str_replace(array('/./', '//'), '/', $attachurl);
复制代码


替换成

  1. $attachurl = str_replace('/./', '/', $attachurl);
复制代码


去掉替换 '//', 避免附件启用其他域名时,出现错误。


找到

  1. $_obj->setUrl($_G['siteurl'] . $attachurl);
复制代码


替换成

  1. if (substr($attachurl, 0, 7) != 'http://' && substr($attachurl, 0, 8) != 'https://') {
  2.   $attachurl = $_G['siteurl'].$attachurl;
  3. }
  4. $_obj->setUrl($attachurl);
复制代码


判断没有其他域名,则加上站点域名。

另外,插件也遵循站点设置可能采用程序调用附件,可以把判断条件移动到真实地址相关代码中,另外在程序调用条件加上站点域名。

当然,你有其他更好的方法也可以忽略上面的内容,或者根据站点情况自行修改代码。
 楼主| reada 发表于 2015-3-28 10:36:07 | 显示全部楼层
上次聊完这个问题,后台有新版本,检查后虽然调整过代码进行修复,发现问题依旧。

  1. $attachurl = str_replace(array('/./', '//'), '/', $attachurl);
复制代码

上面代码依旧破坏 http:// , 可以尝试在其后简单添加

  1. $attachurl = str_replace('http:/', 'http://', $attachurl);
复制代码


以配合后面的代码,虽然效率及上下文逻辑不太令人满意,总算可以解决这个问题。

如果需要修改得更好,请自行参照方法内上下文代码调整。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 20:02 , Processed in 0.025702 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表