Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Кол-во товаров на страницу по выбору посетителя

00 голосов
10
Это возможно сделать? Где смотреть?
спросил 12 Фев, 13 от pop72 (240 баллов)

10 Ответы

00 голосов
Извините за постановку вопроса, но я правда искал - не нашел решения.
На форуме есть тема с подобным вопросом, но он также остался не решенным.
ответил 12 Фев, 13 от pop72 (240 баллов)
00 голосов
Да, нужно передавать в компонент используемый для вывода элементов, коли-ва на страницу. К примеру для bitrix:catalog.section:
В коде компонента:
Код
"PAGE_ELEMENT_COUNT" => $_REQUEST['ITEMS_ON_PAGE'],

Ну и в коде шаблона некий выбор значения этого самого $_REQUEST['ITEMS_ON_PAGE']
ответил 11 Март, 13 от Snezhka (2,240 баллов)
00 голосов
В шаблоне навигации по страницам добавил форму
Код
<form method="post" id="iteminator" name="iteminator">
Товаров на страницу:
<select name="ITEMS_ON_PAGE" onChange="document.iteminator.submit();">
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="60">60</option>
</select>
</form>

Форму еще доделаю, нужно выбирать текущее установленное значение и т.д. - это набросок.

В вызове компонента catalog.section соответственно поставил
Код
"PAGE_ELEMENT_COUNT" => $_REQUEST['ITEMS_ON_PAGE'],


Прекрасно всё отрабатывает при назначении кол-ва элементов.

Но как сохранить выбранный параметр в памяти? Чтобы при переходе на другие страницы он запоминался?
ответил 04 Апр, 13 от pop72 (240 баллов)
00 голосов
Видимо, возможно через Coption
попробую
ответил 02 Авг, 13 от pop72 (240 баллов)
00 голосов
Самый простой способ - в селекторе ставить selected для того элемента, у которого value соответствует текущему значению ITEMS_ON_PAGE.


Код
<option value="10" <? if($_REQUEST['ITEMS_ON_PAGE']==10) echo ' selected="selected" '?>>10</option>


Но лучше писать значение ITEMS_ON_PAGE в сессию или куку и сравнивать уже с ним
Код
if(isset($_REQUEST['ITEMS_ON_PAGE']))
{
$_SESSION['ITEMS_ON_PAGE'] = $_REQUEST['ITEMS_ON_PAGE'];
}
...
<option value="10" <? if($_SESSION['ITEMS_ON_PAGE']==10) echo ' selected="selected" '?>>10</option>


Как-то так.
ответил 04 Ноя, 13 от Eliga (360 баллов)
00 голосов
ИМХО - в сессии или кукисах сохранять - лишняя головная боль, нада ведь не забывать еще чистить ее, если к примеру, такая пагинация идет в новостях и в каталоге, то либо переменные разные делать, либо чистить куку/сессию, а вот сравнивать по $_GET проще.
ответил 10 Фев, 14 от Snezhka (2,240 баллов)
00 голосов
Олег, а зачем чистить? Как настроил себе посетитель - так пусть у него и будет. Иначе наоборот негатив - "я вот так хочу, а сайт всё время забывает. не пойду сюда больше.."

Переменные такие нужны мне только для каталога. Использоваться она будет также только при вызове компонента каталога.
ответил 31 Май, 14 от pop72 (240 баллов)
00 голосов
ну..это мое мнение =)
ответил 27 Сен, 14 от Snezhka (2,240 баллов)
00 голосов
Цитата
Пётр Громов пишет:
Как-то так.

А вот и нет. Прописал установку сессии первыми строками коде, вызывающем компонент (index.php определенного раздела).
Код
if(isset($_REQUEST['ITEMS_ON_PAGE']))
{
$_SESSION['ITEMS_ON_PAGE'] = $_REQUEST['ITEMS_ON_PAGE'];
} else {
$_SESSION['ITEMS_ON_PAGE'] = 9;
}


Только сессия не встает.

Вообще, как мне помнится, в PHP сессия должна быть инициализиррована до любого вывода.

Может я путаю что-то, конечно.
ответил 31 Янв, 15 от pop72 (240 баллов)
00 голосов
А, всё, нужно было после header плясать
ответил 14 Май, 15 от pop72 (240 баллов)

Похожие вопросы

0 голосов
5 ответов
0 голосов
1 ответ
0 голосов
0 ответов
спросил 07 Дек, 13 от Kania (5,180 баллов)