Drupal - Créer des entrées custom pour XML Sitemap via le code

Si vous utilisez le module drupal xmlsitemap, il est possible d'ajouter des liens personnalisés vers des controleurs ou des vues via le sous module xmlsitemap_custom et l'UI accessible à l'uri : /admin/config/search/xmlsitemap/custom/add : 

Image
Drupal xml sitemap custom

Du coup ces « custom links » ne seront pas en config, donc non déployable. 

Voici comment en créer via le code : 

mon_module.post_update.php

/**
 * Create Custom XML Sitemap Entries.
 */
function mon_module_post_update_create_xmlsitemap_custom_entries() {
  $entries = [
    [
      'loc' => '/ma-page-fr',
      'language' => 'fr',
    ],
    [
      'loc' => '/ma-page-en',
      'language' => 'en',
    ],
    [
      'loc' => '/mon-autre-page-fr',
      'language' => 'fr',
    ],
  ];
  /** @var \Drupal\xmlsitemap\XmlSitemapLinkStorageInterface $linkStorage */
  $linkStorage = \Drupal::service('xmlsitemap.link_storage');
  $query = \Drupal::database()->select('xmlsitemap', 'x');
  $query->addExpression("MAX(CAST(id AS INT))");
  $query->condition('type', 'custom');
  $id = (int) $query->execute()->fetchField();
  foreach ($entries as $entry) {
    $entry += [
      'id' => ++$id,
      'type' => 'custom',
      'subtype' => '',
      'priority' => 0.7,
      'changefreq' => XMLSITEMAP_FREQUENCY_DAILY,
    ];
    $linkStorage->save($entry);
  }

}

 

 

 

Ajouter un commentaire

Ne sera pas publié
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...