bkwld / sitemap-from-routes
直接从您的路由定义中生成站点地图
1.0.0
2017-09-08 16:49 UTC
Requires
- php: >=5.3.0
- illuminate/database: ^5.0
- illuminate/routing: ^5.0
- illuminate/support: ^5.0
- roumen/sitemap: ^2.6
This package is auto-updated.
Last update: 2024-09-21 20:23:09 UTC
README
使用roumen/sitemap直接从您的Laravel routes/web.php生成站点地图。
Sitemap::add(Route::get('news', 'News@index')); Sitemap::add('news/{article}', 'News@show'));
这是因为,在安装过程中,您将路由门面更改为由本包中的一个类指向,该类添加了流畅的sitemap
到Laravel Route
实例。该sitemap
方法检查路由的URI,并解包找到的任何模型绑定,获取这些模型的全部公共实例,并将它们添加到站点地图中。
安装
- 运行
require add bkwld/sitemap-from-routes
- 安装roumen/sitemap资源:
php artisan vendor:publish --provider="Roumen\Sitemap\SitemapServiceProvider"
- 在您的路由文件中添加一个用于站点地图的路由:
Route::get('sitemap', '\Bkwld\SitemapFromRoutes\Controller@index')
。
Laravel < 5.5
- 将以下内容添加到
config.app
提供者:Bkwld\SitemapFromRoutes\ServiceProvider::class
- 将以下内容添加到
config.app
别名:'Sitemap' => Bkwld\SitemapFromRoutes\Facades::class
用法
从您想要添加到站点地图的任何路由中调用sitemap()
。例如
Sitemap::add('news', 'News@index')); Sitemap::add('news/{article}', 'News@show')->name('article'));
动态路由参数必须与它们应解析的模型名称相同。因此,在上面的示例中,您必须有一个App\Article
模型。
默认情况下,通过将模型的ID替换到URI中,将模型的全部实例添加到站点地图中。因此,上述示例路由将生成news/1
、news/2
等。
自定义查询
要自定义应添加到站点地图中的模型实例,请在您的模型上指定一个forSitemap
范围。例如,您会这样做,仅将公开记录添加到站点地图中。
namespace App;
class Article {
public function scopeForSitemap($query)
{
$query->where('public', 1);
}
}
自定义URL
要自定义添加到模型实例的站点地图中的URL,请在您的模型上指定一个sitemapUrl
访问器。如果您在URL中使用别名,您将这样做。
namespace App;
class Article {
public function getSitemapUrlAttribute()
{
return route('article', $this->slug);
}
}