Add WEBSITE_ADD_RSS_FEED_INTO_SITEMAP

This commit is contained in:
Laurent Destailleur 2023-03-19 12:22:23 +01:00
parent 6b01edbf01
commit c6d76622a7
2 changed files with 40 additions and 8 deletions

View File

@ -2504,6 +2504,14 @@ $tempdir = $conf->website->dir_output.'/'.$websitekey.'/';
// Generate web site sitemaps
if ($action == 'generatesitemaps' && $usercanedit) {
// Define $domainname
if ($website->virtualhost) {
$domainname = $website->virtualhost;
}
if (! preg_match('/^http/i', $domainname)) {
$domainname = 'https://'.$domainname;
}
$domtree = new DOMDocument('1.0', 'UTF-8');
$root = $domtree->createElementNS('http://www.sitemaps.org/schemas/sitemap/0.9', 'urlset');
@ -2511,6 +2519,7 @@ if ($action == 'generatesitemaps' && $usercanedit) {
$domtree->formatOutput = true;
$addrsswrapper = 0;
$xmlname = 'sitemap.xml';
$sql = "SELECT wp.rowid, wp.type_container , wp.pageurl, wp.lang, wp.fk_page, wp.tms as tms,";
@ -2539,6 +2548,11 @@ if ($action == 'generatesitemaps' && $usercanedit) {
$shortlangcode = substr($object->lang, 0, 2); // Use short lang code of website
}
// Is it a blog post for the RSS wrapper ?
if ($objp->type_container == 'blogpost') {
$addrsswrapper = 1;
}
// Forge $pageurl, adding language prefix if it is an alternative language
$pageurl = $objp->pageurl.'.php';
if ($objp->fk_default_home == $objp->rowid) {
@ -2549,24 +2563,18 @@ if ($action == 'generatesitemaps' && $usercanedit) {
}
}
if ($objp->virtualhost) {
$domainname = $objp->virtualhost;
}
if (! preg_match('/^http/i', $domainname)) {
$domainname = 'https://'.$domainname;
}
//$pathofpage = $dolibarr_main_url_root.'/'.$pageurl.'.php';
// URL of sitemaps must end with trailing slash if page is ''
$loc = $domtree->createElement('loc', $domainname.'/'.$pageurl);
$lastmod = $domtree->createElement('lastmod', dol_print_date($db->jdate($objp->tms), 'dayrfc', 'gmt'));
$changefreq = $domtree->createElement('changefreq', 'weekly'); // TODO Manage other values
$priority = $domtree->createElement('priority', '1');
$url->appendChild($loc);
$url->appendChild($lastmod);
// Add suggested frequency for refresh
if (!empty($conf->global->WEBSITE_SITEMAPS_ADD_WEEKLY_FREQ)) {
$changefreq = $domtree->createElement('changefreq', 'weekly'); // TODO Manage other values
$url->appendChild($changefreq);
}
// Add higher priority for home page
@ -2655,7 +2663,31 @@ if ($action == 'generatesitemaps' && $usercanedit) {
$root->appendChild($url);
$i++;
}
// Adding a RSS feed into a sitemap should nto be required. The RSS contains pages that are already included into
// the sitemap and RSS feeds are not shown into index.
if ($addrsswrapper && getDolGlobalInt('WEBSITE_ADD_RSS_FEED_INTO_SITEMAP')) {
$url = $domtree->createElement('url');
$pageurl = 'wrapper.php?rss=1';
// URL of sitemaps must end with trailing slash if page is ''
$loc = $domtree->createElement('loc', $domainname.'/'.$pageurl);
$lastmod = $domtree->createElement('lastmod', dol_print_date($db->jdate(dol_now()), 'dayrfc', 'gmt'));
$url->appendChild($loc);
$url->appendChild($lastmod);
// Add suggested frequency for refresh
if (!empty($conf->global->WEBSITE_SITEMAPS_ADD_WEEKLY_FREQ)) {
$changefreq = $domtree->createElement('changefreq', 'weekly'); // TODO Manage other values
$url->appendChild($changefreq);
}
$root->appendChild($url);
}
$domtree->appendChild($root);
if ($domtree->save($tempdir.$xmlname)) {
dolChmod($tempdir.$xmlname);
setEventMessages($langs->trans("SitemapGenerated", $xmlname), null, 'mesgs');

View File

@ -2,7 +2,7 @@
// BEGIN PHP File wrapper.php - DO NOT MODIFY - It is just a copy of file website/samples/wrapper.php
$websitekey = basename(__DIR__);
if (strpos($_SERVER["PHP_SELF"], 'website/samples/wrapper.php')) {
die("Sample file for website module. Can be called directly.");
die("Sample file for website module. Can't be called directly.");
}
if (!defined('USEDOLIBARRSERVER') && !defined('USEDOLIBARREDITOR')) {
require_once './master.inc.php';