|
Гость
Гость
|
Добрый день, сразу оговорюсь, обновление версии движка не представляется возможным, опыт работы в этом движке незначительный.
Есть ли у кого нибудь готовое решение для вывода sitemap.xml с разделами навигации ?
Если нету, то подскажите каким образом можно убрать вывод тегов html и body, т.е. что бы при открытие страницы, у меня выводились только xml теги, а не html. (пытаюсь реализовать аналогично обычной карте сайта, но мне мешает то, что на странице выводятся html теги.)
Если тоже нельзя, можно ли создать на сайте новую страницу из админки, без html тегов, с доступом к базе данных.
Заранее спасибо.
|
|
Гость
Гость
|
Цитата:Юзайте сервисы для создания sitemap.xml их много есть
Онлайн сервис для генерации sitemap ? Если да, то это плохой вариант. Т.к. в случаи изменения пунктов навигации, придется пересобирать sitemap.
Мне же нужна динамическая генерация.
Если Вы имели ввиду другое, то будь те добры, более подробно описать, что имелось ввиду.
|
|
Олег
Зарегистрирован: 2013-09-27
Сообщений: 1
|
В общем, видимо никто ничего дельного посоветовать не может.
Я пытался сделать это средствами системы, через админку, и у меня почти получилось. За исключением того, что я не придумал, как отдавать по урлу sitemap.xml контент с урла /sitemap/
Так что решил пойти другим путем.
Ниже стоит читать, если у вас есть доступ к файловой системе
Итак, если у кого то возникнет похожая ситуация.
И вам понадобится создать sitemap.xml для навигации
помещаем файл sitemap.xml в корень документа.
Код:<?php
include_once ($NETCAT_FOLDER."vars.inc.php");
class DataBaseMysql {
var $dbId;
function DataBaseMysql($host, $user, $password, $database) { if (!$this->dbId = @mysql_connect($host, $user, $password)) trigger_error("<b>MySQL</b>: Unable to connect to database", ERROR); if (!mysql_select_db($database)) trigger_error("<b>MySQL</b>: Unable to select database <b>".$database."</b>", ERROR); }
function Query($sqlString) { if (!$resourseId =@mysql_query($sqlString, $this->dbId)) trigger_error("<b>MySQL</b>: Unable to execute<br /><b>SQL</b>: ".$sqlString."<br /><b>Error (".mysql_errno().")</b>: ".@mysql_error(), ERROR); return $resourseId; }
function SelectValue($sqlString) { $resourseId = DataBaseMysql::Query($sqlString); $row = array(); $row =& mysql_fetch_row($resourseId); @mysql_free_result($resourseId); return $row[0]; }
function &SelectRow($sqlString) { $resourseId = DataBaseMysql::Query($sqlString); $row = array(); $row =& mysql_fetch_assoc($resourseId); @mysql_free_result($resourseId); return $row; }
function &SelectSet($sqlString, $idTable = '') { $resourseId = DataBaseMysql::Query($sqlString); $row = array(); while ($rowOne =& mysql_fetch_assoc($resourseId)) { if ($idTable) $row[$rowOne[$idTable]] = $rowOne; else $row[] = $rowOne; } @mysql_free_result($resourseId); return $row; }
function SelectLastInsertId() { return @mysql_insert_id($this->dbId); }
function SelectAffectedRows() { return @mysql_affected_rows($this->dbId); }
function Destroy() { if (!@mysql_close($this->dbId)) trigger_error("Cann't disconnect from database", ERROR); }
}
$db = new DataBaseMysql($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DB_NAME);
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
$parentId = 81;//исходный родитель, в нашем случаи это id Верхнего меню.
$resultArr = getTree($parentId, $db);
foreach ($resultArr as $row) {
echoUrl($row, $parentId);
}
echo '</urlset>';
$db->Destroy();
unset($db);
//рекурсивная функция для создания массива навигации с произвольной вложенностью
function getTree($parentId, $db)
{
$arr = $db->SelectSet("SELECT `Subdivision_ID`,`Parent_Sub_ID`,`Hidden_URL`
FROM `Subdivision`
WHERE `Parent_Sub_ID`='{$parentId}'", 'Subdivision_ID');
if (sizeOf($arr) > 0) {
foreach ($arr as $row) {
$arrChildren = getTree($row['Subdivision_ID'], $db);
if (sizeOf($arrChildren) > 0) {
$arr = array_merge($arr, $arrChildren);
}
}
}
return $arr;
}//getTree
function echoUrl($row, $parentId) {
$url = $row['Hidden_URL'];
$priority = $row['Parent_Sub_ID'] == $parentId ? '0.8' : '0.6';
echo '<url>
<loc><ваш домен>'.$url.'</loc>
<lastmod>'.date("Y-m-d").'</lastmod>
<changefreq>daily</changefreq>
<priority>'.$priority.'</priority>
</url>';
}
?>
правим .htaccess, добавляем в начале, после RewriteEngine On
Код:RewriteEngine On
# * xml для карты сайта;
RewriteCond %{DOCUMENT_ROOT}/sitemap.php -f
RewriteRule ^sitemap\.xml$ sitemap.php [L]
Всем спасибо, за "качественный сапорт", тему можно закрывать.
|