PHP如何原样输出XML样式的Sitemap数据
效果如下图所示:
实现方法:
- header(“Content-Type: text/html; charset=utf-8”);
- //引用discuz配置文件
- require(‘./config/config_global.php’);
- require(‘./source/class/class_core.php’);
- $discuz = & discuz_core::instance();//以下代码为创建及初始化对象
- $discuz->cachelist = $cachelist;
- $discuz->init();//以上是调用discuz公共执行类等核心代码
- global $_G;
- $query =DB::query(“SELECT tid FROM “.DB::table(‘forum_thread’).” where displayorder >= 0 and tid >= 876″);
- //开始输出
- if(empty($query))
- {
- echo “没有新链接”;
- }
- else
- {
- while($row = DB::fetch($query)) {
- echo htmlentities(‘<url>’,ENT_QUOTES,”UTF-8″);
- echo “<br/>”;
- echo htmlentities(‘<loc><![CDATA[https://www.5izixue.com/thread-596-1-1.html]]></loc>’,ENT_QUOTES,”UTF-8″);
- echo “<br/>”;
- echo htmlentities(‘<lastmod>2022-08-16</lastmod>’,ENT_QUOTES,”UTF-8″);
- echo “<br/>”;
- echo htmlentities(‘<changefreq>weekly</changefreq>’,ENT_QUOTES,”UTF-8″);
- echo “<br/>”;
- echo htmlentities(‘</url>’,ENT_QUOTES,”UTF-8″);
- echo “<br/>”;
- }
- }
复制代码
$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页面中。