ezpublish.ru / Форумы / Для разработчиков / Помогите с left treemenu




Помогите с left treemenu

Для доступа к форумам необходимо авторизоваться. Это можно сделать здесь

Автор Сообщение

Александр Петров

Пт, 12 января 2007 10:00:35

Привет всем!

Для левого древовидного меню я использую следующий шаблон:

 
{def $second_level_children=array()}
{def $root_node_children=fetch('content', 'list', hash('parent_node_id', 119, 'sort_by', array('name', true())))}
{if gt($root_node_children|count,0)}
<ul>
{foreach $root_node_children as $child}
<li class="menu-level-0">
<a href={$child.url_alias|ezurl()}><span class="arrowz">&gt;&gt;</span>&nbsp; {$child.name|wash()} &nbsp;</a>
{if or(eq($child.node_id,$module_result.node_id),eq($module_result.path.1,$child.node_id))}
{set $second_level_children=fetch('content','list',hash('parent_node_id', $child.node_id))}
{if gt($second_level_children|count,0)}
<ul>
{foreach $second_level_children as $child2}
<li class="menu-level-1"><a href={$child2.url_alias|ezurl()}><span class="arrowz">&gt;</span>&nbsp; {$child2.name|wash()} &nbsp;</a></li>
{/foreach}
</ul>
{/if}
{/if}
{/foreach}
</ul>
{/if}


Структура сайта такова.

каталог продукции
- категория товаров
- категория товаров
- категория товаров
- категория товаров
- содержимое категории

Когда я открываю категрию товаров, в меню появляется листинг каталогов данной категории, но когда я перехожу в каталог внутри категории , в меню отображается лишь содержимое корня каталога продукции.

Пробовал менять следующее:
$module_result.path.1.node_id
на
$module_result.path.2.node_id

Это не помогло, т.к. манипуляции с $module_result_path обявили устаревшим в ez.

Теперь ума не приложу как заставить этот код нормально работать.

Денис Зацаринный

Пт, 12 января 2007 14:26:08

Попробуйте следующий код

{let docs=treemenu( $module_result.path,
is_set( $module_result.node_id )|choose( 2, $module_result.node_id ),
ezini( 'MenuContentSettings', 'LeftIdentifierList', 'menu.ini' ),
0, 5 )
depth=1
last_level=0}
<ul>
{section var=menu loop=$:docs last-value}
{set last_level=$menu.last|is_array|choose( $menu.level, $menu.last.level )}
{section show=and( $last_level|eq( $menu.level ), $menu.number|gt( 1 ) )}
</li>
{section-else}
{section show=and( $last_level|gt( $menu.level ), $menu.number|gt( 1 ) )}
</li>
{"</ul>
</li>"|repeat(sub( $last_level, $menu.level ))}
{/section}
{/section}

{section show=and( $last_level|lt( $menu.level ), $menu.number|gt( 1 ) )}
{'<ul><li>'|repeat(sub($menu.level,$last_level,1))}
<ul>
<li class="menu-level-{$menu.level}">
{section-else}
<li class="menu-level-{$menu.level}">
{/section}

<a {$menu.is_selected|choose( '', 'class="selected"' )} href={$menu.url_alias|ezurl}>{$menu.text|shorten( 25 )}</a>

{set depth=$menu.level}
{/section}
</li>

{section show=sub( $depth, 0 )|gt( 0 ) loop=sub( $depth, 0 )}
</ul>
</li>
{/section}
</ul>

{/let}


===-----
Не разрешимых заздач нет - есть малый гонорар
---=====

Александр Петров

Пт, 12 января 2007 14:42:04

Я использовал этот код ранее, проблема в том, что там не получается указать из какого каталога брать листинг.
Этот код берет из корневой директории листинг, а у меня в корне дир. "каталог товаров" (Node_id 119), из него меню должно брать листинг.

Павел Коновалов

Пт, 12 января 2007 14:51:56

Если, для преведенного кода, Ваша проблема заключается только в этом:
Re> не получается указать из какого каталога брать листинг.
Попробуйте воспользоваться механизмом fetch_alias
http://ez.no/doc/ez_publish/techn..._functions/miscellaneous/fetch_alias

Only strong the survive

Денис Зацаринный

Пт, 12 января 2007 15:28:31

А типа 2 на Ваш node_id заменить? В начале кода?


===-----
Не разрешимых заздач нет - есть малый гонорар
---=====

Александр Петров

Пт, 12 января 2007 15:37:14

Денис, это не работает, а манипуляции с $module_result.path тоже ни к чему не приводят, потому как устаревшая функция. Потому я и использовал код из первого поста.

Денис Зацаринный

Пн, 15 января 2007 6:12:08

Для какой версии собственно мы ведем дискусию? У меня это работает с 3.7.x/3.8.x


===-----
Не разрешимых заздач нет - есть малый гонорар
---=====

Александр Петров

Пн, 15 января 2007 10:14:54

У меня версия 3.8.6 - я указываю 119 вместо 2-х, но листинг все-равно берется из корневого нода

Jackyk

Пн, 15 января 2007 15:51:40

>У меня версия 3.8.6 - я указываю 119 вместо 2-х, но листинг все-равно берется из корневого нода

А точно именно тот оверрайд воспринимается системой, где 119? У меня иногда не удавалось заставить систему воспринять нужный оверрайд левого меню, пока я не удалял старый вариант из override.ini.append.php вообще и не очищал кеш.

Александр Петров

Ср, 17 января 2007 10:46:32

Оверрайд точно тот!

Прочитал еще раз на сайте ez. Начиная с версии 3.8.4 $module_result.node_id для treemenu не воспринимается системой.
http://ez.no/doc/ez_publish/techn...ate_operators/miscellaneous/treemenu

Александр Петров

Чт, 18 января 2007 11:49:29

Решил проблему путем установки в site.ini.append параметра IndexPage равному нужному мне ноду и замены параметра в стандартном коде меню
ezini( 'MenuContentSettings', 'LeftIdentifierList', 'menu.ini' ),
0, 5 )
на
ezini( 'MenuContentSettings', 'LeftIdentifierList', 'menu.ini' ),
1, 5 )