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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[修改] 绝对有用的百度sitemap,绝对符合百度论坛开放协议

[复制链接]
daving555 发表于 2012-1-18 15:35:47 | 显示全部楼层 |阅读模式
部分论坛可能设定了域名 ,生成的页面地址不合适 ,可以设定网址


  1. <?php
  2. /***
  3. * Discuz! X Baidu BBS Sitemap Generator
  4. *
  5. * @category   Include/Cron
  6. * @package    Discuz! X
  7. * @copyright  Copyright (c) 2008-2011 HiceonStudio
  8. * @version    $Id: cron_baiduspider.php 20111 2011-11-31 02:05:09 $
  9. * @contact    解海 : QQ:50083000 | MSN:xiehai@hiceon.com $
  10. */

  11. if(!defined('IN_DISCUZ')) {
  12. exit('Access Denied');
  13. }
  14. /***
  15. * This cron module will be generated in line with standard format of Baidu Forum Open Protocol.
  16. * Protocal URL : http://www.baidu.com/search/pageop.htm
  17. * Format is as follows:
  18. *
  19. * <?xml version="1.0" encoding="GB2312"?>
  20. * <document xmlns:bbs="http://www.baidu.com/search/bbs_sitemap.xsd">
  21. * <webSite>ForumURL(bbs.domain.com)</webSite>
  22. * <webMaster>webmaster@domain.com</webMaster>
  23. * <updatePeri>12(in hours)</updatePeri>
  24. * <updatetime>2011-11-11 19:00:00</updatetime>
  25. * <version>Discuz! X2</version>
  26. * <item>
  27. *  <link>http://bbs.domain.com/thread-100-1-1.html</link>
  28. *  <title>Thread subject</title>
  29. *  <pubDate>2011-11-11 16:00:00</pubDate>
  30. *  <bbs:lastDate>2011-11-11 16:00:00</bbs:lastDate>
  31. *  <bbs:reply>Reply number</bbs:reply>
  32. *  <bbs:hit>Hit number</bbs:hit>
  33. *  <bbs:mainLen>The length of the main post:In bytes</bbs:mainLen>
  34. *  <bbs:boardid>Belongs to the name of the forum</bbs:boardid>
  35. *  <bbs:pick>1(is digest or not,value can be 0 or 1)</bbs:pick>
  36. * </item>
  37. * <item>
  38. * ... ...
  39. * </item>
  40. * </document>
  41. */
  42. $file    = 'sitemap_baidu.xml';
  43. $updateperi  = 12;
  44. $version  = 'DISCUZ!X2';
  45. $outputnum  = '1000';
  46. /***********************************************************************************************
  47. * Controllers
  48. **********************************************************************************************/
  49. //Reset rewrite rules
  50. function Ctl_isrewrite($rewrite,$row,$param = ''){
  51. global $_G,$discuz;
  52. $rewriterule = $_G['setting']['rewriterule'];
  53. $status = $_G['setting']['rewritestatus'];
  54. if(in_array($rewrite,$status)){
  55.   $mod=$rewriterule[$rewrite];
  56.   $mod=preg_replace("/{page}/","1",$mod);
  57.   $mod=preg_replace("/{prevpage}/","1",$mod);
  58.   $mod=str_replace("{fid}","".$param."",$mod);
  59.   $mod=str_replace("{tid}","".$row."",$mod);
  60.   }
  61.   elseif($rewrite =="forum_viewthread"){$mod="forum.php?mod=viewthread&tid=".$row."";}
  62.   return $mod;
  63. }
  64. //Positioning forum application domain
  65. function Ctl_domain(){
  66. global $_G,$discuz;
  67. $appdomain = $_G['setting']['domain']['app'];
  68. if (!empty($appdomain['forum']) && empty($appdomain['default'])) {
  69.   $domain = 'http://'.$appdomain['forum'].'/';
  70. }elseif(empty($appdomain['forum']) && !empty($appdomain['default'])){
  71.   $domain = 'http://'.$appdomain['default'].'/';
  72. }else{
  73.   $domain = 'http://bbs.0933.me/';
  74. }
  75. return $domain;
  76. }
  77. // Get unencrypted forum
  78. function Ctl_unencrypted(){
  79. $u = array();
  80. $query = DBfactory('forum');
  81. while ($v = DB::fetch($query)) {
  82.   $u[$v['fid']] = $v['fid'];
  83. }
  84. return $u;
  85. }
  86. /***********************************************************************************************
  87. * Models
  88. **********************************************************************************************/
  89. function DBfactory($mod,$param = ''){
  90. switch ($mod) {
  91.      case 'forum':
  92.          return DB::query("SELECT a.fid FROM ".DB::table("forum_forum")." AS a , ".DB::table("forum_forumfield")." AS b WHERE a.fid = b.fid AND a.`status` = 1 AND b.viewperm = '' AND a.fup <> 0 ORDER BY displayorder");
  93.          break;
  94.      case 'forum_name':
  95.          return DB::result_first("SELECT name FROM ".DB::table("forum_forum")." WHERE fid=".$param."");
  96.          break;
  97.      case 'thread':
  98.          return DB::query("SELECT tid,fid,subject,dateline,lastpost,views,replies,digest FROM ".DB::table('forum_thread')." WHERE readperm = 0 ORDER BY lastpost DESC LIMIT ".$param);
  99.          break;
  100.      case 'thread_message':
  101.          return DB::result_first("SELECT message FROM ".DB::table('forum_post')." WHERE tid=".$param." AND first=1");
  102.          break;
  103. }
  104. }
  105. /***********************************************************************************************
  106. * Class
  107. **********************************************************************************************/
  108. class baiduspider
  109. {
  110. var $xml;
  111. var $file;
  112. var $size;
  113. var $updateperi;
  114. var $version;
  115. function baiduspider($file,$updateperi,$version)
  116. {
  117.   $this->file=$file;
  118.   $this->size=1024*10240;
  119.   $this->updateperi=$updateperi;
  120.   $this->version=$version;
  121. }

  122. function additem($link,$title,$pubdate,$lastdate,$reply,$hit,$mainlen,$boardid,$pick){
  123.   $str="<item><link>".str_replace('&','&amp;',$link)."</link><title>".trim($title)."</title><pubDate>".date('Y-m-d H:i:s',$pubdate)."</pubDate><bbs:lastDate>".date('Y-m-d H:i:s',$lastdate)."</bbs:lastDate><bbs:reply>".$reply."</bbs:reply><bbs:hit>".$hit."</bbs:hit><bbs:mainLen>".$mainlen."</bbs:mainLen><bbs:boardid>".$boardid."</bbs:boardid><bbs:pick>".$pick."</bbs:pick></item>";
  124.   $this->xml.=$str;
  125. }
  126. function write(){
  127.   global $_G;
  128.   @file_put_contents($this->file,'<?xml version="1.0" encoding="GB2312"?><document xmlns:bbs="'.(!empty($_G['setting']['domain']['app']['forum'">http://www.baidu.com/search/bbs_sitemap.xsd"><webSite>'.(!empty($_G['setting']['domain']['app']['forum']) ? $_G['setting']['domain']['app']['forum'] : $_G['setting']['domain']['app']['default']).'</webSite><webMaster>'.$_G['setting']['adminemail'].'</webMaster><updatePeri>'.$this->updateperi.'</updatePeri><updatetime>'.date("Y-m-d H:i:s").'</updatetime><version>'.$this->version.'</version>'.$this->xml.'</document>');
  129. }
  130. }
  131. /***********************************************************************************************
  132. * Run and output
  133. **********************************************************************************************/

  134. $spider[]=new baiduspider($file,$updateperi,$version);
  135. $query = DBfactory('thread',$outputnum);
  136. while ($row = DB::fetch($query)) {
  137. if (in_array($row['fid'],Ctl_unencrypted())) {
  138.   $row['url']=Ctl_isrewrite("forum_viewthread",$row['tid'],empty($_G['setting']['forumkeys'][$row['fid']]) ? $row['fid'] : $_G['setting']['forumkeys'][$row['fid']]);
  139.   foreach($spider as $key=>$item){
  140.    $spider[$key]->additem(Ctl_domain().$row['url'],str_replace(array('&', '"', '<', '>',"'"), array('&amp;', '&quot;', '&lt;', '&gt;' ,'&apos;'), $row['subject']),$row['dateline'],$row['lastpost'],$row['replies'],$row['views'],strlen(DBfactory('thread_message',$row['tid'])),DBfactory('forum_name',$row['fid']),$row['digest']);
  141.   }
  142. }
  143. }
  144. foreach($spider as $item){
  145. $item->write();
  146. }
  147. ?>
复制代码

  $domain = 'http://bbs.0933.me/';    将这个中的网址改成你自己想要的

将代码保存成php文件 ,放在 /source/include/cron/  ,然后在工具添加计划任务就可以的

别人的作品,我重新发布一下* Discuz! X Baidu BBS Sitemap Generator
*
* @category   Include/Cron
* @package    Discuz! X
* @copyright  Copyright (c) 2008-2011 HiceonStudio
* @version    $Id: cron_baiduspider.php 20111 2011-11-31 02:05:09 $
* @contact    解海 : QQ:50083000 | MSN:xiehai@hiceon.com $

hongpao 发表于 2012-1-18 17:06:09 | 显示全部楼层
共同发展!学习才会进步,谢了
回复

使用道具 举报

bb567 发表于 2012-1-18 17:30:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

hongpao 发表于 2012-1-18 18:04:08 | 显示全部楼层
谢谢楼主,收藏一下
回复

使用道具 举报

yoyofox 发表于 2012-1-18 18:23:26 | 显示全部楼层
收藏了,谢谢分享.
回复

使用道具 举报

book39 发表于 2012-1-18 18:34:14 | 显示全部楼层
做站好难,累了
回复

使用道具 举报

萧过无痕 发表于 2012-1-18 18:37:35 | 显示全部楼层
嗯,了解一下了
回复

使用道具 举报

yage68 发表于 2012-1-18 20:33:27 | 显示全部楼层
{:soso_e100:}
回复

使用道具 举报

萧过无痕 发表于 2012-1-18 20:35:18 | 显示全部楼层
看帖子的要发表下看法
回复

使用道具 举报

温润美好 发表于 2012-1-18 20:55:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 22:50 , Processed in 0.024509 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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