fuelviews/laravel-sitemap

Laravel sitemap package

v0.0.11 2024-11-10 01:12 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Laravel sitemap is a robust and easy-to-use solution designed to automatically generate sitemaps for your Laravel application.

Installation

You can require the package and it's dependencies via composer:

composer require fuelviews/laravel-sitemap

You can manually publish the config file with:

php artisan vendor:publish --provider="Fuelviews\Sitemap\SitemapServiceProvider" --tag="sitemap-config"

This is the contents of the published config file:

return [
    /**
     * Specifies the default filesystem disk that should be used.
     * The 'public_path' disk is typically used for files that need to be publicly accessible to users.
     * This setting can influence where files, such as generated sitemaps, are stored by default.
     */
    'disk' => 'public',

    /**
     * Determines whether the index page should be excluded from the sitemap.
     * Setting this to `true` will exclude the index page, `false` will include it.
     */
    'exclude_subcategory_sitemap_links' => true,

    /**
     * Controls whether redirect URLs should be excluded from the sitemap.
     * When set to `true`, all redirects are excluded to ensure the sitemap only contains direct links.
     */
    'exclude_redirects' => true,

    /**
     * An array of route names to be excluded from the sitemap.
     * Useful for excluding specific pages that should not be discoverable via search engines.
     */
    'exclude_route_names' => [
    ],

    /**
     * Specifies paths that should be excluded from the sitemap.
     * Any routes starting with these paths will not be included in the sitemap, enhancing control over the sitemap contents.
     */
    'exclude_paths' => [
    ],

    /**
     * An array of full URLs to be excluded from the sitemap.
     * This allows for fine-grained exclusion of specific pages, such as sitemap files or any other URLs not suitable for search engine indexing.
     */
    'exclude_urls' => [
        '/sitemap.xml',
        '/pages_sitemap.xml',
        '/posts_sitemap.xml',
    ],

    /**
     * Specifies the model class to be used for fetching posts to be included in the sitemap.
     * This setting allows for customization of the source of content, enabling the sitemap to reflect the structure and content of your website accurately.
     * The specified model should implement any necessary logic to retrieve only the posts that should be visible to search engines.
     */
    'post_model' => [
        //App\Models\Post::class,
    ],
];

Usage

You can also add your models directly by implementing the Spatie\Sitemap\Contracts\Sitemapable interface. You also need to define your post_model in the fv-sitemap.php config file.

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use App\Contracts\Sitemapable;
use Spatie\Sitemap\Tags\Url;

class Post extends Model implements Sitemapable {
    /**
     * Convert the Post model instance into a sitemap URL entry.
     *
     * @return \Spatie\Sitemap\Tags\Url
     */
    public function toSitemapUrl() {
        $url = Url::create(url("{$this->id}"))
            ->setLastModificationDate($this->updated_at)
            ->setChangeFrequency('daily')
            ->setPriority(0.8);

        return $url;
    }
}

You can generate the sitemap with:

php artisan sitemap:generate

You can link to the sitemap with:

route('sitemap', ['filename' => 'sitemap.xml'])

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

If you've found a bug regarding security please mail support@fuelviews.com instead of using the issue tracker.

Credits

Support us

Fuelviews is a web development agency based in Portland, Maine. You'll find an overview of all our projects on our website.

License

The MIT License (MIT). Please see License File for more information.