网站运营过程中,将网站的资源以Sitemap的形式提交给搜索引擎是非常必要的。本文分享通过php代码获取Discuz系统中未加入Sitemap的链接,然后在HTML原样输出XML样式的Sitemap结构数据。

效果如下图所示:

实现方法:

  1. header(“Content-Type: text/html; charset=utf-8”);
  2.         //引用discuz配置文件
  3.         require(‘./config/config_global.php’);
  4.         require(‘./source/class/class_core.php’);
  5.         $discuz = & discuz_core::instance();//以下代码为创建及初始化对象
  6.         $discuz->cachelist = $cachelist;
  7.         $discuz->init();//以上是调用discuz公共执行类等核心代码
  8.         global $_G;
  9.         $query =DB::query(“SELECT tid FROM “.DB::table(‘forum_thread’).” where displayorder >= 0 and tid >= 876″);
  10.         //开始输出
  11.         if(empty($query))
  12.         {
  13.                 echo “没有新链接”;
  14.         }
  15.         else
  16.         {      
  17.                 while($row = DB::fetch($query)) {
  18.                    echo htmlentities(‘<url>’,ENT_QUOTES,”UTF-8″);
  19.                    echo “<br/>”;
  20.                    echo htmlentities(‘<loc><![CDATA[https://www.5izixue.com/thread-596-1-1.html]]></loc>’,ENT_QUOTES,”UTF-8″);
  21.                    echo “<br/>”;
  22.                    echo htmlentities(‘<lastmod>2022-08-16</lastmod>’,ENT_QUOTES,”UTF-8″);
  23.                    echo “<br/>”;
  24.                    echo htmlentities(‘<changefreq>weekly</changefreq>’,ENT_QUOTES,”UTF-8″);
  25.                    echo “<br/>”;
  26.                    echo htmlentities(‘</url>’,ENT_QUOTES,”UTF-8″);
  27.                    echo “<br/>”;
  28.                 }
  29.         }

复制代码

$query =DB::query(“SELECT tid FROM “.DB::table(‘forum_thread’).” where displayorder >= 0 and tid >= 876″);

displayorder >=0,代表帖子时审核通过的,不是删除了的垃圾帖子。

tid >=876是需要生成Sitemap的起始帖子,根据自身需求修改。

echo htmlentities(‘<loc><![CDATA[https://www.5izixue.com/thread-596-1-1.html]]></loc>’,ENT_QUOTES,”UTF-8″);

htmlentities是一个PHP中字符串与HTML之间的相互转换的函数,可以将包含URL链接的字符串内容原样输出到html页面中。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部