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

Материал из Umicms
Перейти к:навигация, поиск
Строка 1: Строка 1:
 +
'''Актуально для версии 18 ревизия 85081'''
 +
 
Необходимо отображать в меню развернутым только активный раздел  
 
Необходимо отображать в меню развернутым только активный раздел  
  

Версия 12:47, 29 мая 2018

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

Необходимо отображать в меню развернутым только активный раздел

Demo-dizzy-left-menu.jpg


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


В шаблон \xsltTpls\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>