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

Материал из Umicms
Перейти к:навигация, поиск
 
(не показано 7 промежуточных версий 2 участников)
Строка 1: Строка 1:
'''Актуально для версии 18 ревизия 85081'''
+
'''Актуально для версии 18.'''
  
Необходимо отображать в меню развернутым только активный раздел  
+
'''Задача:''' отображать в меню развернутым только активный раздел (на примере шаблона demodizzy).
  
 
[[Файл:Demo-dizzy-left-menu.jpg]]
 
[[Файл:Demo-dizzy-left-menu.jpg]]
 +
[[Файл:menuHide.png]]
  
  
 
+
Для решения данной задачи необходимо добавить в файл classes/modules/custom.php или classes/components/custom.php (в зависимости от реализации модулей) следующий код:
Для решения данной задачи необходимо добавить в файл '''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">

Текущая версия на 10:48, 1 июня 2018

Актуально для версии 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>