当前位置

MediaWiki源代码中的HTML字符查找和修改

James Qi 在 2014年9月26日 - 18:03 提交
内容摘要:今年6月份以后Google在中国大陆就完全无法访问了,搞得我们以前嵌入过Google地图、Google搜索等API代码的网站也打开困难,用Google DFP投放的AdSense广告也收益下降、匹配变......

  今年6月份以后Google在中国大陆就完全无法访问了,搞得我们以前嵌入过Google地图、Google搜索等API代码的网站也打开困难,用Google DFP投放的AdSense广告也收益下降、匹配变差,前一阵子不得已把放在国内服务器上的中文网站进行了一轮修改,全面用百度相应的产品百度地图、百度搜索、百度联盟、百度广告管家等软件来替换Google的产品。

  Drupal网站中的查找和修改比较容易,而MediaWiki网站就麻烦一些,一些页面和模板都是很多年前设置的,难以记忆,Wiki原代码中的HTML代码也无法通过Wiki搜索直接找到。后来找了一个直接在数据库中查找的办法来解决,步骤如下:

  1. 用phpmyadmin打开MediaWiki网站对应的数据库,找到searchindex这个表
  2. 在searchindex表的si_text字段中搜索需要的关键词SELECT * FROM  `jinglesearchindex` WHERE  `si_text` LIKE  '%googleFillSlot%' LIMIT 0 , 30
  3. 查看搜索结果,包含si_page、si_title、si_text三个字段,第一个字段是页面的ID,后面是经过编码的标题和内容
  4. 用这个网址打开找到的页面http://www.youbianku.com/index.php?curid=46 ,其中46就是si_page;
  5. 编辑该页面,在源代码中查找、替换,然后保存;
  6. 全部si_text的页面都修改后,phpmyadmin中刷新第2步的搜索,查看结果,顺利的话应该就找不到符合条件的记录了。

  偶尔也有搜索结果与实际不符的情况,可能是修改没有实时更新Wiki搜索的数据库造成的。


  2016年5月13日补充:要彻底检查文本(包括历史页面旧版本)中包含的字符,可以这样搜索:

  select oldid from text where old_text like '%BAIDU%';

  再从这里的oldid(例如: 2077106)继续查询:

  select rev_page from jinglerevision where rev_text_id = 2077106;

  这个获得的rev_page(例如:58394)就是上面说的si_page,也就可以http://www.youbianku.com/index.php?curid=58394

  来查看、编辑页面。

评论

-- 发自IP地址: 222.247.246.210 (位置 | 谁是)

初次接触mediawiki现在正在找他的负责进行搜索的代码,但初步发现apiquerysearch.php和specialsearch.php.貌似有搜索的功能,到底是哪段代码负责搜索的呢?期待您的回复。

-- 发自IP地址: 58.48.152.80 (位置 | 谁是)

MediaWiki我用的时间很长了,但绝大多数都是使用其功能,修改代码很少,搜索部分没有改过,所以还不知道具体代码位置,抱歉。建议您在官方网站查找相关资料,我以前都是这样慢慢摸索的。

James Qi / 祁劲松