Page 1 of 1

Вывод элементов иерархии второго уровня в модуле Products

Posted: Wed Mar 23, 2011 12:48 pm
by Hippy-core
Делаю магазин с использованием модуля Products. Вывожу в меню список элементов иерархии первого уровня вот такой конструкцией {Products action="hierarchy" hierarchytemplate="simle_list"}.

Если зайти в элемент иерархии в котором нет товаров, но есть под элементы, то ничего не выдает, и массив $hierdata тоже пуст.

Вопрос: как выводить элементы иерархии второго уровня (подкатегории) для категорий в которых нет товаров.

Re: Вывод элементов иерархии второго уровня в модуле Product

Posted: Thu Dec 19, 2013 2:33 pm
by sbupravi
Hippy-core wrote:Делаю магазин с использованием модуля Products. Вывожу в меню список элементов иерархии первого уровня вот такой конструкцией {Products action="hierarchy" hierarchytemplate="simle_list"}.

Если зайти в элемент иерархии в котором нет товаров, но есть под элементы, то ничего не выдает, и массив $hierdata тоже пуст.

Вопрос: как выводить элементы иерархии второго уровня (подкатегории) для категорий в которых нет товаров.
Тоже интересно - как выводить дочерние элементы иерархии, если находитесь на странице родительской иерархии??
И если иерархия 2-х, 3-х уровневая...

Re: Вывод элементов иерархии второго уровня в модуле Product

Posted: Thu Dec 19, 2013 3:27 pm
by guro
Есть один способ.
"Пилите, Шура, пилите!"

PS
Посмотрев код Products очень удивился. Когда мы попадаем в иерархию, в которой нет ни одного элемента, нас просто выкидывает из модуля (даже без обработки шаблона!!!!)

Code: Select all

    // Execute the Queries
    $count = $db->GetOne($query2,$paramarray);
    if( $count == 0 ) return;

Re: Вывод элементов иерархии второго уровня в модуле Product

Posted: Thu Dec 19, 2013 4:25 pm
by sbupravi
guro wrote:Есть один способ.
"Пилите, Шура, пилите!"

PS
Посмотрев код Products очень удивился. Когда мы попадаем в иерархию, в которой нет ни одного элемента, нас просто выкидывает из модуля (даже без обработки шаблона!!!!)

Code: Select all

    // Execute the Queries
    $count = $db->GetOne($query2,$paramarray);
    if( $count == 0 ) return;
И что это даст? Код нужно вставлять в обработчик?
Я уже решил вывести просто все категории, чтобы не лазить по ним. Теперь интересно - как сделать так, чтобы те, у которых есть дети - стали неактивными?
В шаблоне они выводятся с классом "parent"

Re: Вывод элементов иерархии второго уровня в модуле Product

Posted: Thu Dec 19, 2013 4:42 pm
by guro
sbupravi wrote:И что это даст? Код нужно вставлять в обработчик?
Код, который я привел, никуда вставлять не надо. Это часть кода модуля Products.
sbupravi wrote:Я уже решил вывести просто все категории, чтобы не лазить по ним. Теперь интересно - как сделать так, чтобы те, у которых есть дети - стали неактивными?В шаблоне они выводятся с классом "parent"
В шаблоне можете использовать вот такую проверку

Code: Select all

{if isset($item.children) }
...
{/if}
и элементы, которые имеют детей, выводить без обёртки в тег "<a href=..."

Re: Вывод элементов иерархии второго уровня в модуле Product

Posted: Thu Dec 19, 2013 5:49 pm
by sbupravi
guro wrote:
sbupravi wrote:И что это даст? Код нужно вставлять в обработчик?
Код, который я привел, никуда вставлять не надо. Это часть кода модуля Products.
sbupravi wrote:Я уже решил вывести просто все категории, чтобы не лазить по ним. Теперь интересно - как сделать так, чтобы те, у которых есть дети - стали неактивными?В шаблоне они выводятся с классом "parent"
В шаблоне можете использовать вот такую проверку

Code: Select all

{if isset($item.children) }
...
{/if}
и элементы, которые имеют детей, выводить без обёртки в тег "<a href=..."
{if isset($item.children) } - я тоже пробовал. Это проверка "если родитель", а как наоборот, проверить, если "не родитель"?

И насчет иерархии - так и не понял. Есть возможность лазить по ней? Я заметил все дело в ссылке hierarchy (дочерние видны) или byhierarchy (дочерние пути не видны)

Re: Вывод элементов иерархии второго уровня в модуле Product

Posted: Thu Dec 19, 2013 6:50 pm
by guro
sbupravi wrote:{if isset($item.children) } - я тоже пробовал. Это проверка "если родитель", а как наоборот, проверить, если "не родитель"?

Code: Select all

{if ! isset($item.children) }
sbupravi wrote:И насчет иерархии - так и не понял. Есть возможность лазить по ней?
Толком - нет.
sbupravi wrote:Я заметил все дело в ссылке hierarchy (дочерние видны) или byhierarchy (дочерние пути не видны)
Но, тогда при hierarchy не показываются товары, а при byhierarchy - показываются. Вот и получается, что либо работать через hierarchy и видеть список подкатегорий, но не видеть конечных товаров. Либо, работать через byhierarchy и не видеть списка подкатегорий, но видеть конечные товары.

PS
Именно из-за этой проблемы я не использую Products для сайтов с разветвленной структурой категорий.

Re: Вывод элементов иерархии второго уровня в модуле Product

Posted: Thu Dec 19, 2013 7:31 pm
by sbupravi
Весело. У меня сайт мультиязычный. Так бы использовал Cataloger.
А как ограничить вывод, скажем последних 3-х элементов? В доке не нашел.

Re: Вывод элементов иерархии второго уровня в модуле Product

Posted: Mon Dec 23, 2013 1:45 pm
by guro
sbupravi wrote:А как ограничить вывод, скажем последних 3-х элементов?
В Products или Cataloger?

Re: Вывод элементов иерархии второго уровня в модуле Product

Posted: Thu Dec 26, 2013 6:33 am
by sbupravi
guro wrote:
sbupravi wrote:А как ограничить вывод, скажем последних 3-х элементов?
В Products или Cataloger?
В Products - последние 3!?

Re: Вывод элементов иерархии второго уровня в модуле Product

Posted: Thu Dec 26, 2013 10:53 am
by guro
Вариант 1:

Code: Select all

{Products sortby="id" sortorder="desc" countitems="3"}
Вариант 2:
В суммарном шаблоне

Code: Select all

...
{foreach from=$items item=entry name="f"}
  {if $smarty.foreach.f.iteration > ($smarty.foreach.f.total - 3)}
...
  {/if}
{/foreach}