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

Материал из Umicms
Перейти к:навигация, поиск
Строка 7: Строка 7:
  
  
Для решения данной задачи необходимо добавить в файл '''custom.php''' следующий код:
+
Для решения данной задачи необходимо добавить в файл 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) {
Строка 18: Строка 18:
  
  
В шаблон '''\xsltTpls\modules\catalog\left-column-category-list.xsl'''
+
В шаблон '''\xslt\modules\catalog\left-column-category-list.xsl'''
  
 
<source lang="xml">
 
<source lang="xml">

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

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

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

Demo-dizzy-left-menu.jpg


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