Pbootcms怎么控制sitemap链接数量?修改apps/home/controller/SitemapController.php文件,增加计数器:
计数器代码如下:
$count = 0; // 计数器 foreach ($sorts as $value) { // ... 循环代码 $count++; if ($count >= 100) { // 控制输出数量为100 break; } }
如果不清楚的具体放置位置,可以直接复制以下代码替换:SitemapController.php文件
<?php /** * @copyright (C)2016-2099 Hnaoyun Inc. * @author XingMeng * @email hnxsh@foxmail.com * @date 2018年7月15日 * 生成sitemap文件 */ namespace app\home\controller; use core\basic\Controller; use app\home\model\SitemapModel; use core\basic\Url; class SitemapController extends Controller { protected $model; public function __construct() { $this->model = new SitemapModel(); } public function index() { header("Content-type:text/xml;charset=utf-8"); $str = '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; //$str .= '<urlset>' . "\n"; $str .= '<urlset xmlns= "http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n" ; $str .= $this->makeNode('', date('Y-m-d'), '1.00', 'always'); // 根目录 $sorts = $this->model->getSorts(); $Parser = new ParserController(); $count = 0; // 计数器 foreach ($sorts as $value) { if ($value->outlink) { continue; } elseif ($value->type == 1) { $link = $Parser->parserLink(1, $value->urlname, 'about', $value->scode, $value->filename); $str .= $this->makeNode($link, date('Y-m-d'), '0.80', 'daily'); } else { $link = $Parser->parserLink(2, $value->urlname, 'list', $value->scode, $value->filename); $str .= $this->makeNode($link, date('Y-m-d'), '0.80', 'daily'); $contents = $this->model->getSortContent($value->scode); foreach ($contents as $value2) { if ($value2->outlink) { // 外链 continue; } else { $link = $Parser->parserLink(2, $value2->urlname, 'content', $value2->scode, $value2->sortfilename, $value2->id, $value2->filename); } $str .= $this->makeNode($link, date('Y-m-d', strtotime($value2->date)), '0.60', 'daily'); $count++; if ($count >= 1000) { // 控制输出数量为1000 break 2; } } } } echo $str . "\n</urlset>"; } // 生成结点信息 private function makeNode($link, $date, $priority = 0.60, $changefreq = 'always') { $node = ' <url> <loc>' . get_http_url() . $link . '</loc> <priority>' . $priority . '</priority> <lastmod>' . $date . '</lastmod> <changefreq>' . $changefreq . '</changefreq> </url>'; return $node; } // 文本格式 public function linkTxt() { header("Content-type:text/plain;charset=utf-8"); $sorts = $this->model->getSorts(); $Parser = new ParserController(); $str = get_http_url() . "\n"; $count = 0; // 计数器 foreach ($sorts as $value) { if ($value->outlink) { continue; } elseif ($value->type == 1) { $link = $Parser->parserLink(1, $value->urlname, 'about', $value->scode, $value->filename); $str .= get_http_url() . $link . "\n"; } else { $link = $Parser->parserLink(2, $value->urlname, 'list', $value->scode, $value->filename); $str .= get_http_url() . $link . "\n"; $contents = $this->model->getSortContent($value->scode); foreach ($contents as $value2) { if ($value2->outlink) { // 外链 continue; } else { $link = $Parser->parserLink(2, $value2->urlname, 'content', $value2->scode, $value2->sortfilename, $value2->id, $value2->filename); } $str .= get_http_url() . $link . "\n"; $count++; if ($count >= 1000) { // 控制输出数量为1000 break 2; } } } } echo $str; } }
替换上述代码后,生成的sitemap.xml及sitemap.txt链接数量就会控制在1000个!可以去试试一下效果,如果链接过少的话,将1000更改为你目前的链接数量试试,比如100,10个,这样就会发现sitemap的数量变化!