diff --git a/htdocs/core/lib/website2.lib.php b/htdocs/core/lib/website2.lib.php index fb161162679..989a5b15ac3 100644 --- a/htdocs/core/lib/website2.lib.php +++ b/htdocs/core/lib/website2.lib.php @@ -215,17 +215,17 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage, $canonicalurladdidlang = ''; if ($objectpage->lang) { // A language is forced on the page, it means we may have other language files with hard links into properties of page $canonicalurl = (($objectpage->id == $object->fk_default_home) ? '/' : (($shortlangcode != substr($object->lang, 0, 2) ? '/'.$shortlangcode : '').'/'.$objectpage->pageurl.'.php')); - } else { // No language forced, it means the canonical is the one with + } else { // No language forced, it means the canonical is the one with params making url unique $canonicalurl = '/'.$objectpage->pageurl.'.php'; if ($object->lang && $listofaltlang) { $tmpshortlangcode = preg_replace('/[_-].*$/', '', $object->lang); // en_US or en-US -> en // Add parameter ID required to be unique/canonical - $canonicalurladdidlang = ''; - $canonicalurladdidlang .= 'l=shortlang ? $weblangs->shortlang : "'.$tmpshortlangcode.'"; ?>'; + $canonicalurladdidlang = '?__SEO_CANONICAL_URL_PARAMS__'; + $canonicalurladdidlang .= '&l=shortlang ? $weblangs->shortlang : "'.$tmpshortlangcode.'"; ?>'; } else { // Add parameter ID required to be unique/canonical - $canonicalurladdidlang = ''; + $canonicalurladdidlang = '?__SEO_CANONICAL_URL_PARAMS__'; } } @@ -278,20 +278,20 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage, $tplcontent .= ''."\n"; $tplcontent .= ''."\n"; - } else { + } else { // No language forced, it means the canonical is the one withparams making url unique $canonicalurl = '/'.$objectpage->pageurl.'.php'; $arrayofaltlang = explode(',', $listofaltlang); foreach ($arrayofaltlang as $altlang) { // Add parameter ID required to be unique/canonical - $canonicalurladdidlang = ''; - $canonicalurladdidlang .= 'l='.$altlang; + $canonicalurladdidlang = '?__SEO_CANONICAL_URL_PARAMS__'; + $canonicalurladdidlang .= '&l='.$altlang; $tplcontent .= ''."\n"; } $tmpshortlangcode = preg_replace('/[_-].*$/', '', $object->lang); // en_US or en-US -> en - $canonicalurladdidlang = ''; - $canonicalurladdidlang .= 'l='.$tmpshortlangcode; + $canonicalurladdidlang = '?__SEO_CANONICAL_URL_PARAMS__'; + $canonicalurladdidlang .= '&l='.$tmpshortlangcode; $tplcontent .= ''."\n"; } } @@ -320,29 +320,34 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage, $tplcontent .= 'content, '$__PAGE__TITLE__') !== false) { - $tplcontent .= '$tmp = preg_replace("/.*?<\/title>/s", "<title>" . dol_escape_htmltag($__PAGE__TITLE__) . "", $tmp);'."\n"; - $tplcontent .= '$tmp = preg_replace("//s", "", $tmp);'; - } if (strpos($objectpage->content, '$__PAGE__KEYWORDS__') !== false) { - $tplcontent .= '$tmp = preg_replace("//s", "", $tmp);'; + $tplcontent .= '$tmp = preg_replace("/^/ms", "", $tmp);'."\n"; + } + if (strpos($objectpage->content, '$__PAGE__TITLE__') !== false) { + $tplcontent .= '$tmp = preg_replace("/^.*?<\/title>/ms", "<title>" . dol_escape_htmltag($__PAGE__TITLE__) . "", $tmp);'."\n"; + $tplcontent .= '$tmp = preg_replace("/^/ms", "", $tmp);'."\n"; } if (strpos($objectpage->content, '$__PAGE__DESC__') !== false) { - $tplcontent .= '$tmp = preg_replace("//s", "", $tmp);'; + $tplcontent .= '$tmp = preg_replace("/^/ms", "", $tmp);'."\n"; } // New method for custom SEO - if (strpos($objectpage->content, 'define("__SEO_PAGE_TITLE__"') !== false) { - $tplcontent .= '$tmp = preg_replace("/.*?<\/title>/s", "<title>" . dol_escape_htmltag(constant("__SEO_PAGE_TITLE__")) . "", $tmp);'."\n"; - $tplcontent .= '$tmp = preg_replace("//s", "", $tmp);'; - } if (strpos($objectpage->content, 'define("__SEO_PAGE_KEYWORDS__"') !== false) { - $tplcontent .= '$tmp = preg_replace("//s", "", $tmp);'; + $tplcontent .= '$tmp = preg_replace("/^/ms", "", $tmp);'."\n"; + } + if (strpos($objectpage->content, 'define("__SEO_PAGE_TITLE__"') !== false) { + $tplcontent .= '$tmp = preg_replace("/^.*?<\/title>/ms", "<title>" . dol_escape_htmltag(constant("__SEO_PAGE_TITLE__")) . "", $tmp);'."\n"; + $tplcontent .= '$tmp = preg_replace("/^/ms", "", $tmp);'."\n"; } if (strpos($objectpage->content, 'define("__SEO_PAGE_DESC__"') !== false) { - $tplcontent .= '$tmp = preg_replace("//s", "", $tmp);'; + $tplcontent .= '$tmp = preg_replace("/^/ms", "", $tmp);'."\n"; + } + if (empty($objectpage->lang)) { // We may need to use param into the canonical url + $tplcontent .= 'defined("__SEO_CANONICAL_URL_PARAMS__") ? ($tmp = preg_replace("/__SEO_CANONICAL_URL_PARAMS__/", dol_string_nohtmltag(constant("__SEO_CANONICAL_URL_PARAMS__")), $tmp)) : ($tmp = preg_replace("/\?__SEO_CANONICAL_URL_PARAMS__\"/", "", preg_replace("/\?__SEO_CANONICAL_URL_PARAMS__&/", "?", $tmp)));'."\n"; } + $tplcontent .= "// Now output the generated page content\n"; $tplcontent .= 'dolWebsiteOutput($tmp, "html", '.((int) $objectpage->id).'); dolWebsiteIncrementCounter('.((int) $object->id).', "'.$objectpage->type_container.'", '.((int) $objectpage->id).');'."\n"; $tplcontent .= "// END PHP ?>\n"; } else {