All Projects → dwightwatson → Sitemap

dwightwatson / Sitemap

Licence: mit
Google sitemap builder for Laravel

Projects that are alternatives of or similar to Sitemap

Laravel Sitemap
Laravelium Sitemap generator for Laravel.
Stars: ✭ 1,231 (+406.58%)
Mutual labels:  sitemap, laravel
Laravel Sitemap
Create and generate sitemaps with ease
Stars: ✭ 1,325 (+445.27%)
Mutual labels:  sitemap, laravel
Laravel Seo Tools
Laravel Seo package for Content writer/admin/web master who do not know programming but want to edit/update SEO tags from dashboard
Stars: ✭ 99 (-59.26%)
Mutual labels:  sitemap, laravel
Laravel Gentelella
A Laravel 5.4 application with Gentelella bootstrap admin tempalte
Stars: ✭ 232 (-4.53%)
Mutual labels:  laravel
Laravelcs
Laravel PHP_CodeSniffer
Stars: ✭ 232 (-4.53%)
Mutual labels:  laravel
Laracrud
Laravel Code Generator based on MySQL Database
Stars: ✭ 238 (-2.06%)
Mutual labels:  laravel
Laravel Zero
A PHP framework for console artisans
Stars: ✭ 2,821 (+1060.91%)
Mutual labels:  laravel
Laravel Docs
Laravel 中文文档
Stars: ✭ 231 (-4.94%)
Mutual labels:  laravel
Laravel Multilingual Routes
A package to handle multilingual routes in your Laravel application.
Stars: ✭ 241 (-0.82%)
Mutual labels:  laravel
Laravel View Components
A better way to connect data with view rendering in Laravel
Stars: ✭ 238 (-2.06%)
Mutual labels:  laravel
Gistlog
GistLog - simple, easy blogging based on GitHub gists
Stars: ✭ 237 (-2.47%)
Mutual labels:  laravel
Forum
Ama Laravel? Torne se um Jedi e Ajude outros Padawans
Stars: ✭ 233 (-4.12%)
Mutual labels:  laravel
Laravel Resource Links
Add links to Laravel API resources
Stars: ✭ 240 (-1.23%)
Mutual labels:  laravel
Lang.js
🎭 Laravel Translator class in JavaScript!
Stars: ✭ 232 (-4.53%)
Mutual labels:  laravel
Rutorika Sortable
Adds sortable behavior to Laravel Eloquent models
Stars: ✭ 241 (-0.82%)
Mutual labels:  laravel
Laravel Cronless Schedule
Run the Laravel scheduler without relying on cron
Stars: ✭ 231 (-4.94%)
Mutual labels:  laravel
Laravel Log Viewer
🐪 Laravel log viewer
Stars: ✭ 2,726 (+1021.81%)
Mutual labels:  laravel
Laravel Twbs4
Laravel 5 frontend preset for Twitter Bootstrap 4
Stars: ✭ 237 (-2.47%)
Mutual labels:  laravel
Laravel Adminlte
Easy AdminLTE integration with Laravel
Stars: ✭ 2,990 (+1130.45%)
Mutual labels:  laravel
Laravel Database Encryption
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
Stars: ✭ 238 (-2.06%)
Mutual labels:  laravel

Sitemap for Laravel

Build Status Total Downloads Latest Stable Version Latest Unstable Version License

Sitemap is a package built specifically for Laravel that will help you generate XML sitemaps for Google. Based on laravel-sitemap this package operates in a slightly different way to better fit the needs of our project. A facade is used to access the sitemap class and we have added the ability to produce sitemap indexes as well as sitemaps. Furthermore, it's tested.

Read more about sitemaps and how to use them efficiently on Google Webmaster Tools.

Installation

composer require watson/sitemap

Usage

Creating sitemap indexes

If you have a large number of links (50,000+) you will want to break your sitemaps out into seperate sitemaps with a sitemap index linking them all. You add sitemap indexes using Sitemap::addSitemap($location, $lastModified) and then you return the sitemap index with Sitemap::renderSitemapIndex(). The $lastModified variable will be parsed and converted to the right format for a sitemap.

Here is an example controller that produces a sitemap index.

namespace App\Http\Controllers;

use Sitemap;

class SitemapsController extends Controller
{
    public function index()
    {
        // Get a general sitemap.
        Sitemap::addSitemap('/sitemaps/general');

        // You can use the route helpers too.
        Sitemap::addSitemap(route('sitemaps.posts'));

        // Return the sitemap to the client.
        return Sitemap::index();
    }
}

Simply route to this as you usually would, Route::get('sitemap', '[email protected]');.

Creating sitemaps

Similarly to sitemap indexes, you just add tags for each item in your sitemap using Sitemap::addTag($location, $lastModified, $changeFrequency, $priority). You can return the sitemap with Sitemap::renderSitemap(). Again, the $lastModified variable will be parsed and convered to the right format for the sitemap.

If you'd like to just get the raw XML, simply call Sitemap::xml().

Here is an example controller that produces a sitemap for blog posts.

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.8');
        }

        return Sitemap::render();
    }
}

If you just want to pass a model's updated_at timestamp as the last modified parameter, you can simply pass the model as the second parameter and the sitemap will use that attribute automatically.

If you're pulling a lot of records from your database you might want to consider restricting the amount of data you're getting by using the select() method. You can also use the chunk() method to only load a certain number of records at any one time as to not run out of memory.

Image sitemaps

You can use Google image extensions for sitemaps to give Google more information about the images available on your pages. Read the specification

Images are associated with page and you can use up to 1000 images per page.

Here is an example of adding image tag to usual page tag.

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();
    }
}

Here is the full list of arguments to add an image to a tag.

$tag->addImage($location, $caption, $geoLocation, $title, $licenceUrl);

Configuration

To publish the configuration file for the sitemap package, simply run this Artisan command:

php artisan config:publish watson/sitemap

php artisan vendor:publish --provider="Watson\Sitemap\SitemapServiceProvider"

Then take a look in config/sitemap.php to see what is available.

Caching

By default, caching is disabled. If you would like to enable caching, simply set cache_enabled in the configuration file to true. You can then specify how long you would like your views to be cached for. Keep in mind that when enabled, caching will affect each and every request made to the sitemap package.

Multilingual tags

If you'd like to use a mutlilingual tag, simply pass an instance of one to the addTag method. Below is a crude example of how you would pass alternate tag locations for different languages.

Sitemap::addTag(new \Watson\Sitemap\Tags\MultilingualTag(
    $location,
    $lastModified,
    $changeFrequency,
    $priority,
    [
        'en' => $location . '?lang=en',
        'fr' => $location . '?lang=fr'
    ]
));
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].