RepoSiteMap Bundle (for symfony2)
RepoSiteMapbundle is a symfony 2 bundle which provides creating sitemap.xml from static pages and from dynamic pages (like posts, articles, products details page) so the bundle will be generate urls for each entities view page., (*1)
Requirements (minimum)
You can find the requirements in the composer.json too., (*2)
Installation
Add to the composer.json
in the root folder., (*3)
"require": {
//...
"botalaszlo/symfony-repositemap-bundle": "dev-master"
}
Add the bundle to the RegisterBundle
function in the app/AppKernel.php
, (*4)
public function registerBundles()
{
$bundles = array(
//...
new RepoSiteMapBundle\RepoSiteMapBundle(),
);
}
Add the bundle to the routing.yml
in the app/config.yml
, (*5)
# RepoSiteMap Bundle
RepoSiteMapBundle:
resource: @RepoSiteMapBundle/Controller/
type: annotation
Usage
For the usage you have to use @Route annotations., (*6)
Static pages
You have to add the "sitemap"=true
value in options
of the @Route annotation.
This will generate one url for the Home controller's index action., (*7)
/**
*
* @Route("/home/index ", name="AppBundle_home_index", options={"sitemap"=true})
*/
public function indexAction() {
//...
}
Dynamic pages
If you have view pages for entities, like for "posts", "articles", "products" then you have to add the entity's path in the options. So the bundle will be dynamicly generate urls for each entities detail view.
Use this format: "sitemap" = {"repository" = "[[EntityPath]]"
, (*8)
/**
* @Route("/product/{id} ", name="AppBundle_product", options={"sitemap" = {"repository" = "AppBundle:Slip"}})
*/
public function listAction() {
//...
}
In this case the trick that you add the entity's path. Then bundle will count the entities in the table to get to know how many rows are in the table. So it will be dynamicly generate the view page for each entities., (*9)
Todo
This bundle has very limited features. It does not handle the date, frequency or priority values for sitemap urls. This features will be implemented in the future., (*10)
If you have any advice, do not hesitate inform me., (*11)