小编给大家分享一下用laravel生成sitemap的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

创新互联主营阿克陶网站建设的网络公司,主营网站建设方案,手机APP定制开发,阿克陶h5微信小程序搭建,阿克陶网站营销推广欢迎阿克陶等地区企业咨询
用laravel换一个思路,生成.xml动态链接,而不是保存文件到目录
1.配置routes,生成xml访问链接
2.根据项目逻辑生成sitemap
上代码:
配置routes
//sitemap
Route::get('/sitemap/m/{type}.xml', 'SitemapController@siteMap');核心代码
buildSiteMap($type);
Cache::add($cacheKey, $siteMap, 120);
}
return response($siteMap)
->header('Content-type', 'text/xml');
}
/**
* Build the Site Map
*/
protected function buildSiteMap($type)
{
$sitemapInfo = [];
switch ($type) {
case 'video':
$sitemapInfo = $this->getVideoInfo();
break;
case 'article':
$sitemapInfo = $this->getArticleInfo();
break;
case 'bbs':
$sitemapInfo = $this->getBbsInfo();
break;
case 'ask':
$sitemapInfo = $this->getAskInfo();
break;
case 'series':
$sitemapInfo = $this->getSeriesInfo();//车型库
break;
}
$lastmod = $sitemapInfo[0]['pub_time'];
$xml = [];
$xml[] = '';
$xml[] = '';
$xml[] = ' ';
$xml[] = " https://m.xxx.com ";
$xml[] = " $lastmod ";
$xml[] = ' daily ';
$xml[] = ' 0.8 ';
$xml[] = ' ';
foreach ($sitemapInfo as $sitemap) {
$xml[] = ' ';
$xml[] = " {$sitemap['url']} ";
$xml[] = " ";
$xml[] = " {$sitemap['pub_time']} ";
$xml[] = " ";
}
$xml[] = ' ';
return join("\n", $xml);
}
/**
* Return all the posts as $url => $date
*/
protected function getVideoInfo()
{
$videos = Video::where('pub_time', '<=', Carbon::now())
->where('published', 2)
->where('is_del', 0)
->orderBy('id', 'desc')
->pluck('pub_time', 'id')
->all();
$res = $article = [];
foreach ($videos as $id => $pub_time) {
$article['id'] = $id;
$article['pub_time'] = substr($pub_time, 0, 10);
$article['url'] = "https://m.xxx.com/video_" . $id . ".html";
$res[] = $article;
}
return $res;
}
protected function getArticleInfo()
{
$articles = Article::where('pub_time', '<=', Carbon::now())
->where('published', 2)
->where('is_del', 0)
->orderBy('id', 'desc')
->pluck('pub_time', 'id')
->take(5000)
->all();
$res = $article = [];
foreach ($articles as $id => $pub_time) {
$article['id'] = $id;
$article['pub_time'] = substr($pub_time, 0, 10);
$article['url'] = "https://m.xxx.com/news/article_" . $id . ".html";
$res[] = $article;
}
return $res;
}
protected function getBbsInfo()
{
$articles = Thread::where('visible', 1)
->where('is_del', 0)
->orderBy('id', 'desc')
->pluck('dateline', 'id')
->take(10000)
->all();
$res = $article = [];
foreach ($articles as $id => $pub_time) {
$article['id'] = $id;
$article['pub_time'] = substr($pub_time, 0, 10);
$article['url'] = "https://m.xxx.com/bbs/thread_" . $id . ".html";
$res[] = $article;
}
return $res;
}
protected function getAskInfo()
{
$articles = Ask::where('state', 1)
->orderBy('id', 'desc')
->pluck('dateline', 'id')
->take(10000)
->all();
$res = $article = [];
foreach ($articles as $id => $pub_time) {
$article['id'] = $id;
$article['pub_time'] = substr($pub_time, 0, 10);
$article['url'] = "https://m.xxx.com/ask_" . $id . ".html";
$res[] = $article;
}
return $res;
}
//车型库
protected function getSeriesInfo()
{
$articles = SeriesInfoModel::where('status', 1)
->where('is_stop', 0)
->pluck('name', 'id')
->all();
$res = $article = [];
foreach ($articles as $id => $pub_time) {
$article['id'] = $id;
$article['pub_time'] = date('Y-m-d', time());
$article['url'] = "https://m.xxx.com/series/" . $id . "/details";
$res[] = $article;
}
return $res;
}
}看完了这篇文章,相信你对用laravel生成sitemap的方法有了一定的了解,想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!