Tested on 8.5.4
Generate Sitemap job will generate sitemap.xml with all pages in your sitemap.
You can add additional urls in the sitemap.xml by adding a custom listner to the on_sitemap_xml_ready
event.
Express entry detail pages won't included in the sitemap.xml, but you can fix it with this event hook.
Please try to add this example code in your application/bootstrap/app.php
.
<?php
/* @var Concrete\Core\Application\Application $app */
/* @var Concrete\Core\Console\Application $console only set in CLI environment */
/** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface $director */
$director = $app->make(\Symfony\Component\EventDispatcher\EventDispatcherInterface::class);
$director->addListener('on_sitemap_xml_ready', static function ($event) use ($app) {
/** @var \Concrete\Core\Page\Sitemap\Event\XmlReadyEvent $event */
$xml = $event->getDocument();
$entity = Express::getObjectByHandle('test');
if (is_object($entity)) {
$resolver = $app->make(\Concrete\Core\Url\Resolver\Manager\ResolverManagerInterface::class);
$list = new \Concrete\Core\Express\EntryList($entity);
$entries = $list->getResults();
/** @var \Concrete\Core\Entity\Express\Entry $entry */
foreach ($entries as $entry) {
$id = $entry->getID();
$lastMod = $entry->getDateModified()->format(DateTime::ATOM);
$url = $xml->addChild('url');
$url->addChild('loc', $resolver->resolve(['/express/detail/', 'view_express_entity', $id]));
$url->addChild('lastmod', $lastMod);
$url->addChild('priority', 0.5);
$url->addChild('changefreq', 'weekly');
}
}
$event->setDocument($xml);
});