PHP code example of gyvex-com / laravel-macro-sitemap

1. Go to this page and download the library: Download gyvex-com/laravel-macro-sitemap library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

gyvex-com / laravel-macro-sitemap example snippets


use GyvexCom\LaravelMacroSitemap\Support\Enums\ChangeFrequency;

Route::get('/contact', ContactController::class)
    ->name('contact')
    ->sitemap()
    ->changefreq(ChangeFrequency::WEEKLY)
    ->priority('0.8');

Route::get('/about', AboutController::class)
    ->name('about')
    ->sitemap();

use GyvexCom\LaravelMacroSitemap\Support\Enums\ChangeFrequency;

Route::get('/blog', BlogController::class)
    ->name('blog.index')
    ->sitemap()
    ->changefreq(ChangeFrequency::WEEKLY);

Route::get('/contact', ContactController::class)
    ->name('contact')
    ->sitemap()
    ->priority('0.8');

Route::get('/about', AboutController::class)
    ->name('about')
    ->sitemap()
    ->lastmod('2024-05-01');

// routes/web.php
Route::get('/blog/{slug}', BlogController::class)
    ->name('blog.show')
    ->sitemapUsing(\App\Sitemap\Templates\PostTemplate::class);

namespace App\Sitemap\Templates;

use App\Models\Post;
use Illuminate\Routing\Route;
use GyvexCom\LaravelMacroSitemap\Sitemap\Item\Url;
use GyvexCom\LaravelMacroSitemap\Sitemap\Template;

class PostTemplate extends Template
{
    public function generate(Route $route): iterable
    {
        yield from $this->urlsFromModel(Post::class, $route, function (Post $post, Route $route) {
            return Url::make(route($route->getName(), ['slug' => $post->slug]))
                ->lastmod($post->updated_at)
                ->priority(0.6);
        });
    }
}

use GyvexCom\LaravelMacroSitemap\Sitemap\SitemapIndex;

$sitemapIndex = SitemapIndex::make('https://example.com/sitemap-pages.xml')
    ->add('https://example.com/sitemap-posts.xml');

$sitemapIndex->add('https://example.com/sitemap-products.xml', now());

Storage::disk('public')->put('sitemap.xml', $sitemapIndex->toXml());

Route::get('/blog', fn () => 'Blog')
    ->sitemapIndex('blog');

Route::get('/pages', fn () => 'Pages')
    ->sitemapIndex('pages');

// php artisan sitemap:generate

use GyvexCom\LaravelMacroSitemap\Facades\Sitemap;

Sitemap::fromRoutes()
    ->getSitemap()
    ->save('sitemap.xml', 'public');

use GyvexCom\LaravelMacroSitemap\Sitemap\Item\Url;
use GyvexCom\LaravelMacroSitemap\Sitemap\Item\Image;

$url = Url::make('https://example.com')
    ->addImage(Image::make('https://example.com/image1.jpg')->title('Hero 1'))
    ->addImage(Image::make('https://example.com/image2.jpg')->title('Hero 2'));

Route::get('/about', AboutController::class)
    ->name('about')
    ->image('https://example.com/hero.jpg');
bash
php artisan sitemap:install
php artisan vendor:publish --tag=sitemap-config
bash
php artisan sitemap:generate