Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

netCat 3.5 standart and sitemap.xml ?

26.09.2013, 19:24
Гость
Гость

Добрый день, сразу оговорюсь, обновление версии движка не представляется возможным, опыт работы в этом движке незначительный.
Есть ли у кого нибудь готовое решение для вывода sitemap.xml с разделами навигации ?

Если нету, то подскажите каким образом можно убрать вывод тегов html и body, т.е. что бы при открытие страницы, у меня выводились только xml теги, а не html. (пытаюсь реализовать аналогично обычной карте сайта, но мне мешает то, что на странице выводятся html теги.)
Если тоже нельзя, можно ли создать на сайте новую страницу из админки, без html тегов, с доступом к базе данных.
Заранее спасибо.
26.09.2013, 21:35
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 482

Юзайте сервисы для создания sitemap.xml их много есть

Stark
27.09.2013, 11:26
Гость
Гость

Цитата:
Юзайте сервисы для создания sitemap.xml их много есть

Онлайн сервис для генерации sitemap ? Если да, то это плохой вариант. Т.к. в случаи изменения пунктов навигации, придется пересобирать sitemap.
Мне же нужна динамическая генерация.

Если Вы имели ввиду другое, то будь те добры, более подробно описать, что имелось ввиду.
27.09.2013, 15:50
Олег

Зарегистрирован:
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]



Всем спасибо, за "качественный сапорт", тему можно закрывать.
11.08.2015, 19:07
dianaserviceru

Зарегистрирован:
2015-07-20
Сообщений: 1

Олег, а что за php код ты выложил, что с ним делать(?), куда пихать?
Про "помещаем файл sitemap.xml в корень документа" - это я понял. улыбка
198 196 2015-08-11 19:07:11 13322
Описание проекта