Here we will see how to generate dynamic sitemap in laravel. As we know sitemap is very important part of seo, sitemap is list of pages of a website within a single domain.
Here we will create dynamic XML sitemap in laravel.sitemap is a blueprint of your website that can help to search engines find, crawl and index all of your website's content So let's see how to create dynamic xml sitemap in laravel and how to add sitemap in laravel,
Here, we are using sitemap package for generate dynamic sitemap in laravel.run below command in your terminal to install package in laravel.
composer require watson/sitemap
To publish the configuration file for the sitemap package, run below Artisan command.
php artisan config:publish watson/sitemap
php artisan vendor:publish --provider="Watson\Sitemap\SitemapServiceProvider"
Here, you need to add tags for each item in your sitemap using Sitemap::addTag($location, $lastModified, $changeFrequency, $priority)
. And we can return the sitemap with Sitemap::renderSitemap()
. $lastModified
variable will be parsed and convered to the right format for the sitemap.
If you want to get raw XML then simply call Sitemap::xml()
Example :
namespace App\Http\Controllers;
use Post;
use Sitemap;
class SitemapsController extends Controller
{
public function posts()
{
$posts = Post::all();
foreach ($posts as $post) {
Sitemap::addTag(route('posts.show', $post), $post->updated_at, 'daily', '0.6');
}
return Sitemap::render();
}
}
Image Sitemap :
namespace App\Http\Controllers;
use Page;
use Sitemap;
class SitemapsController extends Controller
{
public function pages()
{
$pages = Page::all();
foreach ($pages as $page) {
$tag = Sitemap::addTag(route('pages.show', $page), $page->updated_at, 'daily', '0.8');
foreach ($page->images as $image) {
$tag->addImage($image->url, $image->caption);
}
}
return Sitemap::render();
}
}