34ml/laravel-seo

This package will help you to manage your website SEO easily.

Maintainers

👁 admin34ML

Package info

github.com/34ML/laravel-seo

Homepage

pkg:composer/34ml/laravel-seo

Statistics

Installs: 5 458

Dependents: 1

Suggesters: 0

Stars: 1

Open Issues: 2

v1.6 2025-11-13 13:22 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 83e6703cbc4e2397acd89912cd56edb302eb4ad4

  • Ahmed Essam <aessam1306.woop@gmail.com>

laravellaravel-seo34ML

This package is auto-updated.

Last update: 2026-06-28 09:01:06 UTC


README

This package will help you to manage your website SEO easily.

Installation

You can install the package via composer:

composer require 34ml/laravel-seo

You can publish and run the migrations with:

php artisan vendor:publish --tag="seo-migrations"
php artisan migrate

You can publish the config file with:

php artisan vendor:publish --tag="seo-config"

This is the contents of the published config file:

return [
/*
 |--------------------------------------------------------------------------
 | SEO status
 |--------------------------------------------------------------------------
 |
 | Set SEO status, if its set to false then all pages will have
 | the 'noindex, nofollow' follow type and also removed the meta tags except the title tag.
 |
 */

 'seo_status' => env('SEO_STATUS', true),

 /*
 |--------------------------------------------------------------------------
 | Sitemap status
 |--------------------------------------------------------------------------
 |
 | Should there be a sitemap available
 |
 */
 'sitemap_status' => env('SITEMAP_STATUS', false),

 /*
 |--------------------------------------------------------------------------
 | SEO title formatter
 |--------------------------------------------------------------------------
 |
 | If you want a specific default format for your SEO titles, then you can
 | specify it here. Example could be ':text - Test site', then all pages would have
 | the ' - Test site' appended to the actual SEO title.
 |
 */
 'title_formatter' => ':text',

 /*
 |--------------------------------------------------------------------------
 | Follow type options
 |--------------------------------------------------------------------------
 |
 | Here is all the possible follow types shown in the admin panel
 | which is an array with key -> value.
 |
 */

 'follow_type_options' => [
 'index, follow' => 'Index and follow',
 'noindex, follow' => 'No index and follow',
 'index, nofollow' => 'Index and no follow',
 'noindex, nofollow' => 'No index and no follow',
 ],

 /*
 |--------------------------------------------------------------------------
 | Default follow type
 |--------------------------------------------------------------------------
 |
 | Set the default follow type.
 |
 */
 'default_follow_type' => env('SEO_DEFAULT_FOLLOW_TYPE', 'index, follow'),

 /*
 * SEO default title
 */
 'default_seo_title' => config('app.name'),

 /*
 * SEO default description
 */
 'default_seo_description' => null,

 /*
 * SEO default keywords
 * ex : keyword1, keyword2, keyword3
 */
 'default_seo_keywords' => null,

 /*
 *
 */
 /*
 |--------------------------------------------------------------------------
 | Sitemap models
 |--------------------------------------------------------------------------
 |
 | Insert all the laravel models which should be in the sitemap
 |
 */

 'sitemap_models' => [],

 /*
 |--------------------------------------------------------------------------
 | Sitemap url
 |--------------------------------------------------------------------------
 |
 | Set the path of the sitemap
 |
 */

 'sitemap_path' => '/sitemap',
 /*
 |--------------------------------------------------------------------------
 | Available Locales
 |--------------------------------------------------------------------------
 |
 | Set the available locales in your project and fallback locale
 |
 */

 'available_locales' => ['en'],
 'fallback_locale' => 'en',
];

Usage

Find the model you want to have the SEO fields on, example could be App\Models\Page, then add the SeoTrait trait:

use _34ML\SEO\Traits\SeoTrait;

class Page extends Model
{
 use SeoTrait;
 ...
}

When you want the eloquent model to be shown in the sitemap then you need to add the SeoSiteMapTrait trait to it:

use _34ML\SEO\Traits\SeoTrait;
use _34ML\SEO\Traits\SeoSiteMapTrait;

class Page extends Model
{
 use SeoTrait, SeoSiteMapTrait;
 ...

 /**
 * Get the Page url by item
 *
 * @return string
 */
 public function getSitemapItemUrl()
 {
 return url($this->slug);
 }

 /**
 * Query all the Page items which should be
 * part of the sitemap (crawlable for google).
 *
 * @return Builder
 */
 public static function getSitemapItems()
 {
 return static::all();
 }
}

Then go to the top of your layout blade as the default is resources/views/welcome.blade.php:

...
<head>
 @include('laravel-seo::seo')
 ...
</head>

Changelog

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

Credits

License

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