Отображать в меню развернутым только активный пункт меню

Материал из Umicms
Версия от 10:48, 1 июня 2018; Whoa (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 18.

Задача: отображать в меню развернутым только активный раздел (на примере шаблона demodizzy).

Demo-dizzy-left-menu.jpg MenuHide.png


Для решения данной задачи необходимо добавить в файл 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>