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

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
Hippy-core
Forum Members
Forum Members
Posts: 76
Joined: Sat Dec 06, 2008 3:05 pm

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

Post by Hippy-core »

Делаю магазин с использованием модуля Products. Вывожу в меню список элементов иерархии первого уровня вот такой конструкцией {Products action="hierarchy" hierarchytemplate="simle_list"}.

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

Вопрос: как выводить элементы иерархии второго уровня (подкатегории) для категорий в которых нет товаров.
User avatar
sbupravi
Power Poster
Power Poster
Posts: 257
Joined: Sun Oct 07, 2012 9:29 pm

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

Post by sbupravi »

Hippy-core wrote:Делаю магазин с использованием модуля Products. Вывожу в меню список элементов иерархии первого уровня вот такой конструкцией {Products action="hierarchy" hierarchytemplate="simle_list"}.

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

Вопрос: как выводить элементы иерархии второго уровня (подкатегории) для категорий в которых нет товаров.
Тоже интересно - как выводить дочерние элементы иерархии, если находитесь на странице родительской иерархии??
И если иерархия 2-х, 3-х уровневая...
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm

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

Post by guro »

Есть один способ.
"Пилите, Шура, пилите!"

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

Code: Select all

    // Execute the Queries
    $count = $db->GetOne($query2,$paramarray);
    if( $count == 0 ) return;
User avatar
sbupravi
Power Poster
Power Poster
Posts: 257
Joined: Sun Oct 07, 2012 9:29 pm

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

Post by sbupravi »

guro wrote:Есть один способ.
"Пилите, Шура, пилите!"

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

Code: Select all

    // Execute the Queries
    $count = $db->GetOne($query2,$paramarray);
    if( $count == 0 ) return;
И что это даст? Код нужно вставлять в обработчик?
Я уже решил вывести просто все категории, чтобы не лазить по ним. Теперь интересно - как сделать так, чтобы те, у которых есть дети - стали неактивными?
В шаблоне они выводятся с классом "parent"
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm

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

Post by guro »

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

Code: Select all

{if isset($item.children) }
...
{/if}
и элементы, которые имеют детей, выводить без обёртки в тег "<a href=..."
User avatar
sbupravi
Power Poster
Power Poster
Posts: 257
Joined: Sun Oct 07, 2012 9:29 pm

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

Post 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 (дочерние пути не видны)
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm

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

Post 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 для сайтов с разветвленной структурой категорий.
User avatar
sbupravi
Power Poster
Power Poster
Posts: 257
Joined: Sun Oct 07, 2012 9:29 pm

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

Post by sbupravi »

Весело. У меня сайт мультиязычный. Так бы использовал Cataloger.
А как ограничить вывод, скажем последних 3-х элементов? В доке не нашел.
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm

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

Post by guro »

sbupravi wrote:А как ограничить вывод, скажем последних 3-х элементов?
В Products или Cataloger?
User avatar
sbupravi
Power Poster
Power Poster
Posts: 257
Joined: Sun Oct 07, 2012 9:29 pm

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

Post by sbupravi »

guro wrote:
sbupravi wrote:А как ограничить вывод, скажем последних 3-х элементов?
В Products или Cataloger?
В Products - последние 3!?
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm

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

Post 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}
Post Reply

Return to “Russian - русский”