A symfony 2 bundle that provides tools to build a rich application sitemap. The main goals are : simple, no databases, various namespace (eg. google image), respect constraints etc.
PHP Makefile
Latest commit 39132c5 Jun 21, 2016 @yann-eugone yann-eugone committed on GitHub Moved defaults handling to the addUrl process (#129)
* Moved defaults handling to the  process

* Added defaults in constructor to avoid issues if not provided via dependency injection

* Fixed phpunit tests

README.md

PrestaSitemapBundle

Build Status

Latest Stable Version Total Downloads

PrestaSitemapBundle on Knpbundles

PrestaSitemapBundle is a Symfony2 xml sitemap generator.

💬 If you want to have some informations about the projet progression you can register to our google group

Overview

For a ready to use demonstration of PrestaSitemap you should check the prestacms-sandox available on github.

Sandbox is also deployed for a live demonstration :

Requirements

Features

  • Sitemapindex
  • Google images, video, mobile and multilang urls
  • Respect constraints (50k items / 10mB per files)
  • No database required
  • Optionnal caching (using DoctrineCacheBundle, disabled by default)

TL;DR

  1. Installation

    composer require presta/sitemap-bundle
        //app/AppKernel.php
        public function registerBundles()
        {
            $bundles = array(
                //...
                new Presta\SitemapBundle\PrestaSitemapBundle(),
            );
        }
    #app/config/routing.yml
    PrestaSitemapBundle:
        resource: "@PrestaSitemapBundle/Resources/config/routing.yml"
        prefix:   /
  2. Usage

    For static url there's annotation support in your routes :

    /**
     * @Route("/", name="homepage", options={"sitemap" = true})
     */

    Or YAML support:

    homepage:
        path: /
        defaults: { _controller: "AppBundle:Default:index" }
        options:
            sitemap: true

    Or XML support:

    <route id="homepage" path="/">
        <default key="_controller">AppBundle:Default:index</default>
        <option key="sitemap">true</option>
    </route>

    For complexe routes, create a Closure or a Service dedicated to your sitemap then add your urls :

    use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
    // ...
    
        function(SitemapPopulateEvent $event) use ($router){
            //get absolute homepage url
            $url = $router->generate('homepage', array(), UrlGeneratorInterface::ABSOLUTE_URL);
    
            //add homepage url to the urlset named default
            $event->getUrlContainer()->addUrl(
                new UrlConcrete(
                    $url,
                    new \DateTime(),
                    UrlConcrete::CHANGEFREQ_HOURLY,
                    1
                ),
                'default'
            );
        }
  3. Decorated url (images, videos, etc.)

    The doc is already really short ;)

Documentation

You will find the detailed documentation in the following links :

Ask for help

💬 If you need help about this project you can post a message on our google group

Contributing

Pull requests are welcome.

Thanks to everyone who has contributed already.


This project is supported by PrestaConcept

Lead Developer : @nicolas-bastien

Released under the MIT License

Bitdeli Badge