Автор |
Текст сообщения |
Maksim
Сообщений: 165
|
25.07.2012 10:01
Подскажите пожалуйста как, не могу понять, как можно реализовать такую задачу:
Есть каталог продукции, список товаров в котором нужно отсортировать данные, но нужно, чтобы
<a class="filter1" href="?sort=size">размер</a>
параметры для сортировки появлялись в зависимости, есть они в категории товаров или их нет.
Я подумал может можно как-то создать массив на основе используемых полей, но тогда непонятно как это сделать, чтобы получилось:
1. Чтобы в классе получилось: (filter1,2,3,4 и т.п. в зависимости от количества полей)
2. В ссылке: ?sort=идентификатор поля (латинские символы), на основании используемых в массиве полей
$items.x Возможно может есть вариант попроще?
|
|
admin
Сообщений: 798
|
25.07.2012 15:56
Ничего не понятно.
1. что за класс?
2. что за поля?
3. что такое $items.x?
|
|
Maksim
Сообщений: 165
|
26.07.2012 08:22 Отредактировано: 26.07.2012 09:58
Мне нужно было понять как выводить, в случае если в каталоге не заполнен определённый параметр, то сортировку по... не выводим, если заполнен хотя бы однин, то параметр сортировки появляется.
Пригодился пример из предыдущего сообщения, просто не знал, что можно указывать напрямую без массива. Хотя он работает от случая к случаю.
{if $items[0].size}<a href="?sort=size">размер</a>{/if} P.S. Хотя этот вариант работает частично  Т.е.:
В таком вариант работает
{if $items[0].size}<a href="?sort=size">размер</a>{/if}
Лампа, цвет, размер
...
В таком размер пропадает
{if $items[0].size}<a href="?sort=size">размер</a>{/if}
Лампа, цвет,
... Может есть еще какой-то вариант?
|
|
admin
Сообщений: 798
|
26.07.2012 16:56
Если правильно понял, то в разных категориях нужно сделать разную сортировку.
Добавьте просто доп. поле для категории, и в нем для каждой категории укажите сразу нужные значения, чтобы их потом использовать в виде {$category.поле}
|
|
Maksim
Сообщений: 165
|
26.07.2012 22:48 Отредактировано: 26.07.2012 22:50
Спасибо, идея хорошая. Только у меня в каталоге более 90 категорий и подкатегорий в которых товары будут иногда изменяться соответственно и их параметры.
Может можно как-то определить через массив, автоматически. Т.е. используются те или те поля из таких-то, а потом жёстко выводить соответствующие результаты?
|
|
admin
Сообщений: 798
|
27.07.2012 03:27
Ну тогда что-то вида
{if isset($items[0].size)} ... {/if}
|
|
Maksim
Сообщений: 165
|
27.07.2012 13:37 Отредактировано: 27.07.2012 14:12
К сожалению isset я это не знаю как применять
Я думал может как-то можно из цикла вытащить значение, например с помощью capture
Например:
{capture name=size}
{section name=i loop=$items}
{$items[i].size}
{/section}
{/capture}
и уже потом выводить
{if $smarty.capture.size}<a class="filter4" href="?sort=size#ancor">Размер</a>{/if} Но к сожалению
{if $smarty.capture.size} if в этом случае почему-то не работает, выводит ссылку вне зависимости есть значения или нет.
{if $smarty.capture.size} Может нужно как-то по другому формировать?
|
|
admin
Сообщений: 798
|
27.07.2012 15:14
Что конкретно хотите сделать? С помощью условия с isset можно проверить наличие доп. поля. Я так понимаю в этом была проблема.
|
|
Maksim
Сообщений: 165
|
27.07.2012 15:59 Отредактировано: 27.07.2012 16:01
1. Есть поля по которым пользователь сайта может отсортировать товары (размер, напряжение, рабочий ток и т.п). Есть соответствующая категория в которой: в каких-то товарах полях (размер, напряжение и т.п.) значения не указаны, что и вызывает проблему - например нажатие на "размер" при сортировки продвигает какой-то товар вверх, т.к. он не имеет данных в поле "размер" и получается, что ссылка сортировки "просто исчезает" (если указывать if поле). Но в этой же категории в поле "размер" у других товаров есть значения.
В итоге, я пытаюсь получить результат, что, если хоть в одном поле есть значение на текущей странице, тогда ссылка сортировки выводится, если нет ссылка сортировки не выводится.
|
|
admin
Сообщений: 798
|
27.07.2012 16:46
Ну я же и предложил вариант условия с isset, которое не зависит от значения самого поля (пустое или непустое), а проверяет существование самого поля.
Можно попробовать еще обходить массив $items.0.fields - в нем содержатся все доп поля с ключами field, name, value.
|
|
Maksim
Сообщений: 165
|
27.07.2012 17:33
Спасибо большое, к сожалению у меня не получилось использовать $items.0.fields или isset. Вышло с помощью {if $smarty.capture.size} - заработало после того как я привёл код в в одну строку
{capture name=size}{section name=i loop=$items}{$items[i].size}{/section}{/capture}
{if $smarty.capture.size}<a class="filter4" href="?sort=size#ancor">Размер</a>{/if}
|
|
Вы не можете добавить сообщение. Вам необходимо авторизироваться на сайте под своим логином либо зарегистрироваться.