Решение проблемы генерации Google-sitemap
ПРОБЛЕМА:
При попытке сгенерировать карту сайта запросом http://domain.com/google-sitemap появляется ошибка:
Данная ошибка вызвана ограниченными ресурсами сервера и большим количеством страниц на сайте, так как в таком случае происходит обработка большого объема данных.
РЕШЕНИЕ:
Для решения проблемы необходимо написать кастомный макрос, которой изменит логику формирования карты сайта и тем самым снизит нагрузку на сервер. При написании макроса нам потребуется информация из статьи Использование_кастомных_макросов_в_XSLT Сам кастомный макрос необходимо записать в файл ~classes/modules/custom.php
public function smap($id) {
$sql = "SELECT updatetime FROM `cms3_hierarchy` WHERE `id` = {$id}";
$result = l_mysql_query($sql);
$row = mysql_fetch_row($result);
list($updt_time) = $row;
return $updt_time;
}
Далее необходимо внести изменения в шаблон, по которому происходит формирование карты сайта ~/xsltTpls/sys-tpls/google-sitemap.xsl. Заменяем строчку
<xsl:variable name="update-time" select="document(@xlink:href)/udata/page/@update-time" />
на
<xsl:variable name="update-time" select="document(concat('udata://custom/smap/', @id))/udata" />