コード例 #1
0
 public function populateSitemap(SitemapPopulateEvent $event)
 {
     $section = $event->getSection();
     if (is_null($section) || $section == 'cms') {
         foreach ($this->locales as $locale) {
             $nodeRepository = $this->entityManager->getRepository('AlpixelCMSBundle:Node');
             $pages = $nodeRepository->findAllWithLocale($locale);
             foreach ($pages as $page) {
                 $hasController = true;
                 foreach ($this->contentTypes as $contentType) {
                     if (get_class($page) == $contentType['class'] && $contentType['controller'] === null) {
                         $hasController = false;
                     }
                 }
                 if ($hasController === false) {
                     continue;
                 }
                 $url = $this->router->generate('alpixel_cms', ['slug' => $page->getSlug(), '_locale' => $page->getLocale()], UrlGeneratorInterface::ABSOLUTE_URL);
                 $url = new UrlConcrete($url, $page->getDateUpdated(), UrlConcrete::CHANGEFREQ_MONTHLY, 0.7);
                 $urlLang = new GoogleMultilangUrlDecorator($url);
                 $translations = $nodeRepository->findTranslations($page);
                 foreach ($translations as $translation) {
                     if ($locale !== $translation->getLocale()) {
                         $url = $this->router->generate('alpixel_cms', ['slug' => $translation->getSlug(), '_locale' => $translation->getLocale()], UrlGeneratorInterface::ABSOLUTE_URL);
                         $urlLang->addLink($url, $translation->getLocale());
                     }
                 }
                 $event->getGenerator()->addUrl($urlLang, 'cms.' . $locale);
             }
         }
     }
 }
 public function testAddLink()
 {
     $url = new Sitemap\Url\GoogleMultilangUrlDecorator(new Sitemap\Url\UrlConcrete('http://acme.com'));
     $url->addLink('http://fr.acme.com/', 'fr');
     $xml = $url->toXml();
     $this->assertTrue('<url><loc>http://acme.com</loc><xhtml:link rel="alternate" hreflang="fr" href="http://fr.acme.com/" /></url>' == $xml);
 }