UMIhelp

Разработка сайта на UMI.CMS => Макросы UMI.CMS => Тема начата: polo от 06 Сентября 2011, 18:57:02

Название: Макрос content/sitemap обрабатывает не все уровни.
Отправлено: polo от 06 Сентября 2011, 18:57:02
Беда в том, что чертов модуль карты сайта выдает только 2 первых уровня вложенности. Даже если я задаю вручную udata://content/sitemap/mainTemplate/4, (где 4 - макс. число уровней) дела это не меняет.
У  всех страниц установлен чекбокс Отображать в меню. Если эти страницы переношу из 3-го уровня в 1-й, сайтмап их видит нормально.

Кто-нибудь с таким сталкивался?
Название: Re:Макрос content/sitemap обрабатывает не все уровни.
Отправлено: admin от 06 Сентября 2011, 20:36:51
не сталкивался, но посмотри как отмечены галочки "показывать подменю" или "подменю всегда развернуты" у второго и третьего уровня страниц, может это что-то прояснит
Название: Re:Макрос content/sitemap обрабатывает не все уровни.
Отправлено: Armor от 07 Сентября 2011, 19:33:41
День добрый
тоже проблема с выводом карты сайта
код default.tpl
$FORMS = Array();
$FORMS['block'] = <<<END
<div class="sitemap"><div class="contentpaneopen">
<ul umi:element-id="%block-element-id%" umi:module="content" umi:method="sitemap">
   %items%
</ul>
</div></div>
END;

$FORMS['item'] = <<<END
   <li>
      <a href="%link%" umi:element-id="%id%" umi:field-name="name" umi:module="content" umi:method="sitemap">%name%</a><br />
      %sub_items%
   </li>
END;

в шаблоне в котором подключается карта стоит %content sitemap()%
в админке проставлено показывать все уровни+постоянное отображение
а вот выводится только первый уровень =(
пациент demo.uk-audit.ru/sitemap/
Название: Re:Макрос content/sitemap обрабатывает не все уровни.
Отправлено: Armor от 12 Сентября 2011, 01:31:50
Разобрался...
Нужно на первом уровне вложенности ставить галки "Отображать в меню" и "Показывать подменю"
А во внутренних страницах нужно эти же галки проставлять, иначе не выводится (на странице где уже ничего глубже не вложено можно выставить только -  "Отображать в меню")

Код для вывода:   %content sitemap( 'default', '3', '0')%  (3 уровня будет выводится с файла tpls/content/sitemap/default.tpl)
код шаблона:

$FORMS = Array();
$FORMS['block'] = <<<END
<ul umi:element-id="%block-element-id%" umi:module="content" umi:method="sitemap">
   %items%
</ul>
END;
$FORMS['item'] = <<<END
   <li>
      <a href="%link%" umi:element-id="%id%" umi:field-name="name" umi:module="content" umi:method="sitemap" title="%name%">%name%</a>
      %sub_items%
   </li>
END;

Внутрь шаблонного кода лучше дивы не пихать, а то получится некрасивая структура после формирования, типа:  <ul><li><a href="#">Test</a><div>...<div></li></ul>


PS кому что непонятно обращайтесь - помогу =)  будем обмениваться опытом =)
Название: Re:Макрос content/sitemap обрабатывает не все уровни.
Отправлено: admin от 12 Сентября 2011, 01:41:02
то есть вопрос был все таки в галочках?
Название: Re:Макрос content/sitemap обрабатывает не все уровни.
Отправлено: Armor от 12 Сентября 2011, 05:58:51
Да, все дело в галочках, нужно проставлять во всех подпунктах, иначе не сработает, и обязательно проставлять "Показывать подменю" для пунктов у которого есть вложения - которые тоже нужно вывести
Название: Re:Макрос content/sitemap обрабатывает не все уровни.
Отправлено: Axiomateria от 22 Октября 2013, 12:44:11
А как возможно отобразить уровень вложенности объекта каталога, который в структуре сайта вложен под другой такой же объект каталога?

То есть ситуация такая с деревом сайта:

Главная
--- Раздел каталога
-------- Объект каталога
------------ Объект каталога 2

Пока в результате  всех нажатых нужных галочках карта сайта выводит всё уровни, кроме последнего, то есть "Объект каталога 2" не выводиться - как его вывести.
В фале sitemap.xsl Уровень вложенности аж в десять указан:
	<xsl:template match="result[@module = 'content'][@method = 'sitemap']" priority="1">
<xsl:apply-templates select="document('udata://content/sitemap/mainTemplate/10')" />
</xsl:template>
Название: Re:Макрос content/sitemap обрабатывает не все уровни.
Отправлено: admin от 22 Октября 2013, 21:10:52
Umi, предполагает, что внутри объекта нельзя положить еще один объект (с точки зрения логики umi). Хотя, чисто технически, мы это можем сделать).

Возможно, механизм %content sitemap()% как-то учитывает этот факт. Поэтому, можно разбираться с данным макросом (%content sitemap()%), а можно сделать рекурсивный обход всех уровней в структуре благодаря usel технологии. Напишем usel запрос, который получает 1 уровень в структуре и при выводе каждого item, мы запускаем usel, которые получают подуровни данного item... и так рекурсивно обходим все страницы.

Можно, поколдовать над более продвинутыми вариантами: получить дерево всех страниц и подстраниц на уровне php, а уже потом формировать ответ; сделать защиту от превышения времени работы скрипта (если в сайте много страниц)  и т.п., но суть все равно та же.