Карта сайта без каких-либо настроек страниц — различия между версиями
Материал из Umicms
Photoelf (обсуждение | вклад) |
VITL' (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
[[category:Написание кастомных макросов]] | [[category:Написание кастомных макросов]] | ||
− | Если вдруг кому-то очень надо вывести карту сайту с абсолютно всеми активными страницами, без учета того стоит | + | Если вдруг кому-то очень надо вывести карту сайту с абсолютно всеми активными страницами, без учета того стоит чекбокс "Показывать в меню" или нет, то можно данные два метода прописать в classes/modules/custom.php и использовать: |
<source lang="php"> | <source lang="php"> | ||
Строка 6: | Строка 6: | ||
if(def_module::breakMe()) return; | if(def_module::breakMe()) return; | ||
+ | if(!$max_depth) $max_depth = getRequest('param0'); | ||
if(!$max_depth) $max_depth = 4; | if(!$max_depth) $max_depth = 4; | ||
Строка 59: | Строка 60: | ||
Пример вызова: %custom sitemapnew(default,10)% | Пример вызова: %custom sitemapnew(default,10)% | ||
+ | |||
+ | Новый вариант метода sitemap, можно использовать при построении xml-ого варианта карты сайты, т.е. | ||
+ | можно использовать вызов: http://ваш_домен/google-sitemap , необходимо только в шаблоне | ||
+ | ~/umaps/sitemap.xml поменять вызов метода с: | ||
+ | <pre> | ||
+ | udata://content/sitemap/ | ||
+ | </pre> | ||
+ | на: | ||
+ | <pre> | ||
+ | udata://custom/sitemapnew/10/ | ||
+ | </pre> | ||
+ | |||
+ | 10 - это глубина поиска всех активных страниц сайта. |
Версия 15:20, 7 июня 2010
Если вдруг кому-то очень надо вывести карту сайту с абсолютно всеми активными страницами, без учета того стоит чекбокс "Показывать в меню" или нет, то можно данные два метода прописать в classes/modules/custom.php и использовать:
public function sitemapnew($template = "default", $max_depth = false, $root_id = false) {
if(def_module::breakMe()) return;
if(!$max_depth) $max_depth = getRequest('param0');
if(!$max_depth) $max_depth = 4;
if(!$root_id) $root_id = 0;
if(cmsController::getInstance()->getCurrentMethod() == "sitemap") {
def_module::setHeader("%content_sitemap%");
}
$site_tree = umiHierarchy::getInstance()->getChilds($root_id, false, true, $max_depth - 1);
return self::gen_sitemap($template, $site_tree, $max_depth - 1);
}
public function gen_sitemap($template = "default", $site_tree, $max_depth) {
$res = "";
list($template_block, $template_item) = def_module::loadTemplates("tpls/content/sitemap/{$template}.tpl", "block", "item");
list($template_block, $template_item) = def_module::loadTemplates("tpls/content/sitemap/{$template}.tpl", "block", "item");
$block_arr = Array();
$items = Array();
if(is_array($site_tree)) {
foreach($site_tree as $element_id => $childs) {
if($element = umiHierarchy::getInstance()->getElement($element_id)) {
$link = umiHierarchy::getInstance()->getPathById($element_id);
$item_arr = Array();
$item_arr['attribute:id'] = $element_id;
$item_arr['attribute:link'] = $link;
$item_arr['attribute:name'] = $element->getObject()->getName();
$item_arr['xlink:href'] = "upage://" . $element_id;
if($max_depth > 0) {
$item_arr['nodes:items'] = $item_arr['void:sub_items'] = (sizeof($childs) && is_array($childs)) ? $this->gen_sitemap($template, $childs, ($max_depth - 1)) : "";
} else {
$item_arr['sub_items'] = "";
}
$items[] = def_module::parseTemplate($template_item, $item_arr, $element_id);
umiHierarchy::getInstance()->unloadElement($element_id);
} else {
continue;
}
}
}
$block_arr['subnodes:items'] = $items;
return def_module::parseTemplate($template_block, $block_arr, 0);
}
Пример вызова: %custom sitemapnew(default,10)%
Новый вариант метода sitemap, можно использовать при построении xml-ого варианта карты сайты, т.е. можно использовать вызов: http://ваш_домен/google-sitemap , необходимо только в шаблоне ~/umaps/sitemap.xml поменять вызов метода с:
udata://content/sitemap/
на:
udata://custom/sitemapnew/10/
10 - это глубина поиска всех активных страниц сайта.