2017-07-17 2 views
0

J'ai installé SeoBundle et configuré l'ensemble pour créer un sitemap (docs).Symfony - SeoBundle construit sitemap vide

AppKernel.php:

new Sonata\SeoBundle\SonataSeoBundle(), 
new Symfony\Cmf\Bundle\CoreBundle\CmfCoreBundle(), 
new Symfony\Cmf\Bundle\SeoBundle\CmfSeoBundle(), 

configurations bundle complet (config.yml):

sonata_seo: 
    page: 
     title: Erasmus internship – Training Experience 
     metas: 
      name: 
       keywords: Erasmus Internships, Internship in Europe, International Internships, Erasmus+, Erasmus Entrepreneur, Student Internships, Internships Abroad, Student Placements 
       description: Find Internships with Training Experience: Students can find internships & employment opportunities in Europe’s platform for internships. Search paid internships and placements abroad. 
       viewport: width=device-width, initial-scale=1 
       format-detection: telephone=no 
       robots: index, follow 
      property: 
       'og:site_name': Training Experience 
       'og:title': Erasmus internship – Training Experience 
       'og:description': Find Internships with Training Experience: Students can find internships & employment opportunities in Europe’s platform for internships. Search paid internships and placements abroad." 
       'og:url': https://www.trainingexperience.org 
       'og:image': https://www.trainingexperience.org/bundles/index/images/tx-orange.png 
      http-equiv: 
       'Content-Type':   text/html; charset=utf-8 
     head: 
      'xmlns':    http://www.w3.org/1999/xhtml 
      'xmlns:og':   http://opengraphprotocol.org/schema/ 

cmf_seo: 
    title: seo.title 
    description: seo.description 
    sitemap: 
     enabled: true 
    content_listener: 
     enabled: false 

routes Ajouté à routing.yml:

sitemaps: 
    prefix: /sitemaps 
    resource: "@CmfSeoBundle/Resources/config/routing/sitemap.xml" 

Maintenant, quand j'accéder à /sitemaps/sitemap.xml il est ouvert, mais pas les urls sont listées :

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"></urlset> 

Que pourrais-je manquer?

+0

L'avez vous corrigé? – breq

Répondre

0

Important pour les éléments sur sitemat est, qu'ils ont obtenu un correspondant (autorisé, et nom de sitemap) comme un contenu. Généralement, le contenu n'est pas chargé. Pour ce faire, votre contenu doit implémenter \Symfony\Cmf\Bundle\SeoBundle\SitemapAwareInterface, ce qui vous oblige à implémenter et remplir un drapeau. Vous pouvez trouver un exemple dans les tests: SitemapAwareContent:

<?php 

/* 
* This file is part of the Symfony CMF package. 
* 
* (c) 2011-2017 Symfony CMF 
* 
* For the full copyright and license information, please view the LICENSE 
* file that was distributed with this source code. 
*/ 

namespace Symfony\Cmf\Bundle\SeoBundle\Tests\Resources\Document; 

use Doctrine\Common\Collections\ArrayCollection; 
use Doctrine\ODM\PHPCR\Mapping\Annotations as PHPCRODM; 
use Symfony\Cmf\Bundle\CoreBundle\Translatable\TranslatableInterface; 
use Symfony\Cmf\Bundle\SeoBundle\SitemapAwareInterface; 
use Symfony\Cmf\Component\Routing\RouteReferrersReadInterface; 
use Symfony\Component\Routing\Route; 

/** 
* @PHPCRODM\Document(referenceable=true, translator="attribute") 
* 
* @author Maximilian Berghoff <[email protected]> 
*/ 
class SitemapAwareContent extends ContentBase implements RouteReferrersReadInterface, TranslatableInterface, SitemapAwareInterface 
{ 
    /** 
    * @var string 
    * 
    * @PHPCRODM\Locale 
    */ 
    protected $locale; 

    /** 
    * @var ArrayCollection|Route[] 
    * 
    * @PHPCRODM\Referrers(
    * referringDocument="Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Phpcr\Route", 
    * referencedBy="content" 
    *) 
    */ 
    protected $routes; 

    /** 
    * @var bool 
    * 
    * @PHPCRODM\Field(type="boolean",property="visible_for_sitemap") 
    */ 
    private $isVisibleForSitemap; 

    /** 
    * @var string 
    * 
    * @PHPCRODM\Field(type="string",translated=true) 
    */ 
    protected $title; 

    public function __construct() 
    { 
     $this->routes = new ArrayCollection(); 
    } 

    /** 
    * @param string $sitemap 
    * 
    * @return bool 
    */ 
    public function isVisibleInSitemap($sitemap) 
    { 
     return $this->isVisibleForSitemap; 
    } 

    /** 
    * @param bool $isVisibleForSitemap 
    * 
    * @return SitemapAwareContent 
    */ 
    public function setIsVisibleForSitemap($isVisibleForSitemap) 
    { 
     $this->isVisibleForSitemap = $isVisibleForSitemap; 

     return $this; 
    } 

    /** 
    * Add a route to the collection. 
    * 
    * @param Route $route 
    */ 
    public function addRoute($route) 
    { 
     $this->routes->add($route); 
    } 

    /** 
    * Remove a route from the collection. 
    * 
    * @param Route $route 
    */ 
    public function removeRoute($route) 
    { 
     $this->routes->removeElement($route); 
    } 

    /** 
    * Get the routes that point to this content. 
    * 
    * @return Route[] Route instances that point to this content 
    */ 
    public function getRoutes() 
    { 
     return $this->routes; 
    } 

    /** 
    * @return string|bool the locale of this model or false if 
    *      translations are disabled in this project 
    */ 
    public function getLocale() 
    { 
     return $this->locale; 
    } 

    /** 
    * @param string|bool $locale the local for this model, or false if 
    *       translations are disabled in this project 
    */ 
    public function setLocale($locale) 
    { 
     $this->locale = $locale; 
    } 
} 

vous verrez aussi que la mise en œuvre de l'interface est pas la seule tâche, vous devez définir également la cartographie de la doctrine. Ce faisant, le chargeur par défaut va vous chercher des documents et les voir (ils sont visibles maintenant). Mais vous pouvez implémenter votre propre chargeur, voteur (un autre élément de sélection à sélectionner) et devineur (pour remplir des données supplémentaires) par vous-même. Vous pouvez donc décider quel contenu est visible sur lequel (vous pouvez avoir plusieurs) sitemap. Le documentation montre actuellement le processus pour les chargeurs, les électeurs et les devineurs seulement, nous devrions donc insérer quelques indices pour le drapeau de visibilité par défaut et l'utilisation par défaut du tout. J'ai donc créé un issue. Ce serait bien d'avoir des retours là-bas aussi.