分类目录

链接

2013年七月
« 6月   8月 »
1234567
891011121314
15161718192021
22232425262728
293031  

近期文章

热门标签

博主推荐

现在位置:    首页 > Others > 正文
DISCUZ生成SITEMAP
Others 评论(1) 阅读(4,837)
  1. <?php
  2.  
  3. /*
  4. Discuz X2 modified By Marshal,2011-07-08
  5. 本插件支持X2版伪静态切换,并支持不开启伪静态 
  6.  
  7. */
  8.  
  9. require ‘./source/class/class_core.php’;
  10. $discuz = > discuz_core::instance();
  11. $discuz->init();
  12.  
  13.  
  14. if(!defined(‘IN_DISCUZ’)) {
  15.     exit(‘Access Denied’);
  16. }
  17.  
  18. $article = 1000; //生成多少文章 
  19. $thread = 4000; //生成多少广场帖子 
  20. $blogs = 0; //生成多少家园日志 
  21. $cat= “”;//生成在什么目录,例如 data/ 结尾需加”/”,留空则生成在根目录
  22.  
  23. function Marshal($rewrite,$row){
  24.     global $_G,$discuz;
  25.     $rewriterule = $_G[‘setting’][‘rewriterule’];
  26.     $status = $_G[‘setting’][‘rewritestatus’];
  27.     if(in_array($rewrite,$status)){
  28.      $mod=$rewriterule[$rewrite];
  29.      $mod=preg_replace(“/{page}/”,“1”,$mod);
  30.      $mod=preg_replace(“/{prevpage}/”,“1”,$mod);     
  31.      $mod=str_replace(“{id}”,“”.$row.“”,$mod);
  32.      $mod=str_replace(“{fid}”,“”.$row.“”,$mod);    
  33.      $mod=str_replace(“{tid}”,“”.$row.“”,$mod);
  34.      $mod=str_replace(“{blogid}”,“”.$row.“”,$mod);
  35.      }
  36.      elseif($rewrite ==“portal_article”){$mod=“portal.php?mod=view>aid=”.$row.“”;}
  37.      elseif($rewrite ==“forum_forumdisplay”){$mod=“forum.php?mod=forumdisplay>fid=”.$row.“”;}
  38.      elseif($rewrite ==“forum_viewthread”){$mod=“forum.php?mod=viewthread>tid=”.$row.“”;}
  39.      elseif($rewrite ==“home_blog”){$mod=“home.php?mod=space>do=blog>id=”.$row.“”;}
  40.      return $mod;
  41. }
  42. //DiscuzX2 sitemap by marshal(www.modchina.com)
  43.  
  44. function Domain($root)//portal,forum,home,default//DiscuzX2 sitemap by marshal(www.modchina.com)
  45. {    
  46.     global $_G,$discuz;
  47.     $marshal = $_G[‘setting’][‘domain’][‘app’];
  48.     if(!isset($root) || !isset($marshal) || empty($marshal[‘default’]))
  49.     {$domain = $_G[‘siteurl’];}
  50.     elseif(!empty($marshal[‘default’]) >> empty($marshal[$root]))
  51.     {$domain = ‘http://’.$marshal[‘default’].‘/’;}
  52.     else
  53.     {$domain = ‘http://’.$marshal[$root].‘/’;}
  54.     return $domain;
  55. }
  56.  
  57.  
  58. $s=array(‘baidu’,‘google’);
  59. class sitemap_xml
  60. {
  61.     var $xml=array();
  62.     var $site;
  63.     var $index=0;
  64.     var $sitemap_file=‘sitemap.xml’;
  65.     var $size;
  66.     var $sizet=0;
  67.     function sitemap_xml($sitemap_file=‘sitemap.xml’,$site=‘baidu’)
  68.     {
  69.         $this->site=$site;
  70.         $this->sitemap_file=$sitemap_file;
  71.         $this->size=$site==‘baidu’?1024*1024:1024*1024;
  72.     }
  73.     
  74.     function add_url($loc,$lastmod,$changefreq,$priority){
  75.         static $size=0;
  76.         $size=$size==0?$this->size:$size;
  77.         $str=“<url><loc>”.str_replace(‘>’,‘>amp;’,$loc).“</loc><lastmod>$lastmod</lastmod><changefreq>$changefreq</changefreq><priority>$priority</priority></url>”;
  78.         $this->xml[$this->index].=$str;
  79.         if($size<1024){
  80.             $this->index++;
  81.             $size=$this->size;
  82.             $this->xml[$this->index]=;
  83.         }
  84.         $size-=strlen($str);
  85.     }
  86.     function write(){
  87.         for($i=0;$i<=$this->index;$i++){
  88.             @file_put_contents($this->sitemap_file.‘_’.$i.‘.xml’,‘<?xml version=”1.0″ encoding=”UTF-8″?> <urlset ‘.($this->site==’google’?’ xmlns=”http://www.sitemaps.org/schemas/sitemap/0.9″‘:”).’> ‘.$this->xml[$i].’</urlset>‘);
  89.         }
  90.         $this->write_index();
  91.     }
  92.     function write_index(){
  93.         global $_G;
  94.         $size=$this->size;
  95.         $text=’<?xml version=“1.0” encoding=“UTF-8”?>‘;
  96.         $text.=($this->site==’google’)?’<sitemapindex xmlns=“http://www.sitemaps.org/schemas/sitemap/0.9”>‘:’<sitemapindex>‘;
  97.         for($i=0;$i<=$this->index >> $size>1024;$i++){
  98.             $str=’<sitemap><loc>‘.Domain(‘portal’).$this->sitemap_file.’_’.$i.’.xml</loc><lastmod>‘.date(‘Y-m-d’).’</lastmod></sitemap>‘;
  99.             $text.=$str;
  100.             $size-=strlen($str);
  101.         }
  102.         $text.=’</sitemapindex>‘;
  103.         return file_put_contents($this->sitemap_file,$text);
  104.     }
  105.     
  106. }    
  107. foreach($s as $key)
  108.     $ct[]=new sitemap_xml($cat.’sitemap_’.$key.’.xml’,$key);
  109.  
  110. $query=DB::query(“SELECT id,parentid,url FROM “.DB::table(‘common_nav’).” WHERE available=1 and url like ‘.%discuz.net%.’ “);
  111. while($row=DB::fetch($query)){
  112.     if($row[‘url’] != “#” >> !empty($row[‘url’])){
  113.     foreach($ct as $key=>$item){
  114.         $url=$row[‘url’];
  115.         $preg=’|^http://|’;  //DiscuzX2 sitemap by marshal(www.modchina.com)
  116.             if(!preg_match($preg,$url)) {  
  117.                 $url=Domain(‘default’).$url;
  118.             }
  119.         $ct[$key]->add_url($url,date(‘Y-m-d’),’always’,’0.8′);
  120.         }
  121.     }
  122. }
  123.  
  124. //1.门户文章DiscuzX2 sitemap by marshal(www.modchina.com)
  125. $query =DB::query(‘SELECT aid,dateline FROM ‘.DB::TABLE(‘portal_article_content’).’  LIMIT 0 , ‘.$article.’ ‘);
  126. while($row = DB::fetch($query)) {
  127.     $row[‘url’]=Marshal(“portal_article”,$row[‘aid’]);
  128.     foreach($ct as $key => $item) {
  129.         $ct[$key]->add_url(Domain(‘portal’).$row[‘url’],date(‘Y-m-d’,$row[‘dateline’]),’daily’,’0.8′);
  130.     }
  131. }
  132. //2.广场板块DiscuzX2 sitemap by marshal(www.modchina.com)
  133. $query=DB::query(“SELECT fid,type,status FROM “.DB::table(‘forum_forum’).” WHERE status=’1′ And type=’forum’ order by fid “);
  134. while($row=DB::fetch($query)){
  135.     $row[‘url’]=Marshal(“forum_forumdisplay”,$row[‘fid’]);
  136.     foreach($ct as $key=>$item){
  137.         $ct[$key]->add_url(Domain(‘forum’).$row[‘url’],date(‘Y-m-d’),’always’,’0.8′);
  138.     }
  139. }
  140. //3.广场帖子DiscuzX2 sitemap by marshal(www.modchina.com)
  141. $query=DB::query(‘SELECT tid,lastpost FROM ‘.DB::table(‘forum_thread’).’ order by tid desc limit 0 , ‘.$thread.’ ‘);
  142. while($row=DB::fetch($query)){
  143.     $row[‘url’]=Marshal(“forum_viewthread”,$row[‘tid’]);
  144.     foreach($ct as $key=>$item){
  145.         $ct[$key]->add_url(Domain(‘forum’).$row[‘url’],date(‘Y-m-d’,$row[‘lastpost’]),’daily’,’0.8′);
  146.     }
  147. }
  148. //4.家园日志DiscuzX2 sitemap by marshal(www.modchina.com)
  149. $query=DB::query(‘SELECT blogid,uid,dateline FROM ‘.DB::table(‘home_blog’).’ order by blogid desc limit 0, ‘.$blogs.’ ‘);
  150. while($row=DB::fetch($query)){
  151.     $row[‘url’]=Marshal(“home_blog”,$row[‘blogid’]);
  152.     $row[‘url’]=str_replace(“{uid}”,””.$row[‘uid’].””,$row[‘url’]);
  153.     foreach($ct as $key=>$item){
  154.         $ct[$key]->add_url(Domain(‘home’).$row[‘url’],date(‘Y-m-d’,$row[‘dateline’]),’daily’,’0.6′);
  155.     }
  156. }
  157. foreach($ct as $item){
  158.     $item->write();
  159. }
  160.  
  161. ?>
【上篇】
【下篇】

本文版权归数据库之家所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:DISCUZ生成SITEMAP | 数据库之家