Авторизация

Карта сайта на UMI CMS с помощью кастомного метода

В UMI CMS карта сайта выводится вызовом функции %content sitemap%, зачастую это не удобно, т.к. у страницы должна стаять галочка "Отображать в меню", если её нет, то эта страница не будет выводится в карте сайта. Есть 2 способа относительно простых вывести карту сайта.

1 способ вывести карту сайта с помощью usel и 2 способ с помощью кастомного метода:

Выводим карту сайта с помощью кастомного метода

Необходимо создать поле boolean c названием 'ne_vyvodit_na_stranice_karta_sajta' на всех страницах (news, content, faq и т.д.) в шаблонах данных, которые должны участвовать в выводе карты сайта

public function mainsitemap($id = 0, $template = "default"){
	if(!$max_depth) $max_depth = getRequest('param0');
	if(!$max_depth) $max_depth = 10;
	
	$site_tree = umiHierarchy::getInstance()->getChilds($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){
	$hierarchy = umiHierarchy::getInstance();
	
	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 = $hierarchy->getElement($element_id)) {
				if ($element->getValue('ne_vyvodit_na_stranice_karta_sajta') == 0){
				
					$item_arr = array();
					$item_arr['attribute:id'] = $element_id;
					$item_arr['attribute:link'] = $element->link;
					$item_arr['attribute:name'] = $element->name;
					
					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);
					
					$hierarchy->unloadElement($element_id);
				}
				else continue;
			} else {
				continue;
			}
		}
	}
	 
	$block_arr['subnodes:items'] = $items;
	return def_module::parseTemplate($template_block, $block_arr, 0);
}

[ Saitadmin.ru || с 2006 по текущий год || Санкт-Петербург || Антон Панченко ]