Отображать в меню развернутым только активный пункт меню
Материал из Umicms
Версия от 12:51, 29 мая 2018; Sdarks (обсуждение | вклад)
Актуально для версии 18 ревизия 85081
Необходимо отображать в меню развернутым только активный раздел
Для решения данной задачи необходимо добавить в файл 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>