Тема: Меню с запоминанием положения

Хочу сделать меню категорий с определением положения.
пытаюсь получить название текущей категории, но не понимаю как находясь в подкатегории получить самую верхнюю или так сказать родительскую категорию так же при нахождении на странице товара.

Какие есть мысли чтобы реализовать это?

Повысить оценку Понизить оценку

2 Отредактировано Закусило Александр (03.08.2016 11:52:27)

Re: Меню с запоминанием положения

Не совсем понятно, что Вы хотите сделать... Если можно распишите поподробнее.

Вообще блок с выводом категорий строит древовидную структуру исходя из указанного Вами корневого элемента. Предполагается, что он не не нужен, т.к. будет всего один. Поэтому на прямую корневой элемент в сам шаблон и не поступает.
Просто в меню категорий как-то странновато, выводит один единственный элемент.
Ну в принципе получить корневой элемент можно из параметров самого блока. Например:

{* Подгружаем элемент категории из базы *}
{static_call var=root_dir callback=['\Catalog\Model\Orm\Dir', 'loadByWhere'] params=[['id'=>$this_controller->getParam('root')]]}
{* Покажем сам корневой элемент *}
<pre>
{var_dump($root_dir)}
</pre>

3

Re: Меню с запоминанием положения

с помощью данного кода получаю какую то странную информацию, не сопоставимую не с чем.

object(Catalog\Model\Orm\Dir)#810 (5) {
  ["_values":protected]=>
  array(1) {
    ["is_spec_dir"]=>
    string(1) "N"
  }
  ["_self_class":protected]=>
  string(21) "Catalog\Model\Orm\Dir"
  ["_local_id":protected]=>
  int(342)
  ["cache_behavior_instances":"RS\Behavior\AcceptBehavior":private]=>
  array(0) {
  }
  ["instance_behaviors":"RS\Behavior\AcceptBehavior":private]=>
  array(0) {
  }
}



Постараюсь объяснить поподробнее.
Хочу сделать чтобы меню категорий работало как на старом сайте 2015.ultraforce.ru

При нахождение в категории или её подкатегории всегда открыт список меню главной категории.
Это удобно для пользователя, так как он всегда понимает где находится, и при переходи на сайт по ссылке допустим с яндекс маркета у него будет открыта категория в которой он находится.

По этому я хочу отдельно получить значение верхней категории чтобы сделать нужный пункт открытым, ну и теперь подумал что логично будет знать ещё и значение текущей категории чтобы выделить пункт в котором я нахожусь.

Повысить оценку Понизить оценку

4

Re: Меню с запоминанием положения

Если речь идет о блоке \Catalog\Controller\Block\Category, т.е. о шаблоне category.tpl, то внутри шаблона у вас всегда доступна $pathids, в которой содержится массив из ID текущего элемента и всех его родителей.

Соответственно, проверяя с помощью in_array(), находится ли ID категории в списке $pathids - вы можете узнать активна ли она сейчас.

           {foreach from=$dirlist item=dir}
            <li {if in_array($dir.fields.id, $pathids)}class="act"{/if}>{$dir.fields.name}
                <ul>
                    {foreach from=$dir.child item=item}
                    <li {if in_array($item.fields.id, $pathids)}class="act"{/if}>{$item.fields.name}</li>
                    {/foreach}
                </ul>
                {/if}
            </li>
            {/foreach}

А дальше уже с помощью CSS, реализовывайте любое отображение

Повысить оценку Понизить оценку

5

Re: Меню с запоминанием положения

Спасибо!!! То что доктор прописал.

Повысить оценку Понизить оценку

Re: Меню с запоминанием положения

А можно немного поподробнее, ничего не понял. В разработке нуб). Вставил этот вышеуказанный код в шаблон category.tpl и ничего не отображается (Даже в режиме отладки не видно модуля). Помогите, пожалуйста, очень надо. Тема - переделанная Воздушная.

Повысить оценку Понизить оценку