Отображать в меню развернутым только активный пункт меню — различия между версиями
Материал из Umicms
Alexh (обсуждение | вклад) (Новая страница: «Необходимо отображать в меню развернутым только активный раздел Файл:Demo-dizzy-left-menu.jpg Д…») |
Whoa (обсуждение | вклад) |
||
(не показано 11 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
− | + | '''Актуально для версии 18.''' | |
+ | |||
+ | '''Задача:''' отображать в меню развернутым только активный раздел (на примере шаблона demodizzy). | ||
[[Файл:Demo-dizzy-left-menu.jpg]] | [[Файл:Demo-dizzy-left-menu.jpg]] | ||
+ | [[Файл:menuHide.png]] | ||
− | + | Для решения данной задачи необходимо добавить в файл classes/modules/custom.php или classes/components/custom.php (в зависимости от реализации модулей) следующий код: | |
− | Для решения данной задачи необходимо добавить в файл | ||
<source lang="php"> | <source lang="php"> | ||
public function activmenu($categ_id, $id) { | public function activmenu($categ_id, $id) { | ||
Строка 16: | Строка 18: | ||
− | В шаблон '''\ | + | В шаблон '''\xslt\modules\catalog\left-column-category-list.xsl''' |
<source lang="xml"> | <source lang="xml"> | ||
Строка 39: | Строка 41: | ||
</xsl:template> | </xsl:template> | ||
</source> | </source> | ||
+ | [[Категория:Написание кастомных макросов]][[Категория:Верстка в XSLT]] |
Текущая версия на 10:48, 1 июня 2018
Актуально для версии 18.
Задача: отображать в меню развернутым только активный раздел (на примере шаблона demodizzy).
Для решения данной задачи необходимо добавить в файл classes/modules/custom.php или classes/components/custom.php (в зависимости от реализации модулей) следующий код:
public function activmenu($categ_id, $id) {
$hierarchy = umiHierarchy::getInstance();
$element = $hierarchy->getAllParents($id, true);
$value = (in_array($categ_id, $element)) ? 1: 0;
return $value;
}
В шаблон \xslt\modules\catalog\left-column-category-list.xsl
<xsl:template match="udata[@method = 'getCategoryList']//item" mode="left-column">
<!-- вызов кастомного скрипта -->
<xsl:variable name="actmenu" select="document(concat('udata://custom/activmenu/',@id,'/',$document-page-id))/udata" />
<li umi:element-id="{@id}" umi:region="row">
<span>
<a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
<xsl:value-of select="." />
</a>
</span>
<!-- условие - отображать только тот раздел в котором мы находимся -->
<xsl:if test="$actmenu = 1">
<xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id))" />
</xsl:if>
</li>
</xsl:template>