Регистрация
Вход через соцсети
Восстановление пароля

Не могу разобраться с пагинацией страниц

Новый топик
27.02.2014, 13:16
Ответить | Цитировать
Альнев Павел Викторович

Зарегистрирован:
2014-02-27
Сообщений: 4

Добрый день!
Искал свою тему на форумах, но не нашел. Буду признателен всем, кто скинет ссылку на подобную тему или поможет решить следующую проблему:

Изучаю netcat и его функции.
Дорабатываю интернет-магазин на этой системе.
Карточки товаров отображаются в каталоге по 20 штук на странице. Это было реализовано с помощью функции browse_messages( $cc_env, $range, $user_template = false ).

В этой пагинации не хватает одной функции - ссылки "показать все страницы",ведь иногда пользователю сайта легче посмотреть все товары на одной странице, чем постоянно перелистывать эти страницы.

В 1с битриксе эта функция уже имеется в компоненте вывода пагинации и включается обычной "галочкой".

Мой вопрос в следующем: есть ли такая "галочка" / решение для browse_messages, либо необходимо посидеть и допилить компонент с помощью php?
27.02.2014, 13:31
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

Это не битрикс и здесь у вас нет ограничений
Поставьте ссылку вида ?recNum=количество_записей (0 вроде как все выведет)
<a href='?recNum=999'>Показать все товары</a>
Спрашивается зачем здесь галочка?

Хотите чтобы было галочкой тогда нужно добавить Пользовательскую настройку в виде логической переменной.
<? if($cc_settings[all]){ ?><a href='?recNum=999'>Показать все товары</a><? } ?>

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
27.02.2014, 14:05
Ответить | Цитировать
Альнев Павел Викторович

Зарегистрирован:
2014-02-27
Сообщений: 4

Спасибо за оперативный ответ!

Хм...Подумаю, как можно реализовать.

Просто, я сейчас попробовал в конце ссылки страницы каталога вставить вместо ?curPos=20 ?recNum=999, но на странице всё равно отображается 20 товаров, как, впрочем, и задано в настройках компонента "Магазин:Товар" - "Показывать по 20 объектов на странице".
27.02.2014, 14:56
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

Только что проверил. У меня работает <a href='?recNum=999'>Показать все товары</a>
Может у вас в настройках инфоблока прописано число 20 а не в настройках компонента. Инфоблоки настраиваются в разделе где они прикреплены, а компоненты где создаются в разделе разработка. А в разделе удалите число и все будет
http://joxi.ru/yRoPUxjKTJCqS9Qug40

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
03.03.2014, 23:12
Ответить | Цитировать
Альнев Павел Викторович

Зарегистрирован:
2014-02-27
Сообщений: 4

Несколько дней пытался сам найти ошибку, так и безуспешно. Ваш способ действительно работает на других сайтах с системой Неткат. Даже на сайте netcat.ru установив ?recNum=999 можно вывести сразу все страницы тем форума. У меня так не получается.
Такие данные имею:
версия неткат - 4.7 Standart
Компонент сделан на основе компонента "Простой блог".
Выводятся карточки товаров.

Префикс в компоненте:
Код:
<div class=\"items\" style=\"padding-top:20px;\">
<div class=\"item\">".($srchPat ? "<h1>Поиск товара</h1><div style='margin: 0 0 20px;'>Найдено товаров: <b>$totRows</b></div>" : "<h1>{$current_cc["Sub_Class_Name"]}</h1>")."
<ul class=\"prods\">


Объект в списке:
Код:
";
$foto = s_list_class(16240,169,"&idmes=$f_kod");
$result.="<li>
<div>
".(!$foto ? "<a><img src='/images/px.gif' style='background:url(/images/nofoto.gif) no-repeat 50% 50%;' alt='' /></a>" : $foto)."

".($current_user[PermissionGroup_ID]==1 && !$foto ? "


<form action='/Novinki/Novinki2.html' class='addNew'>
<label><input type='checkbox' name='f_New'".($isNew?" checked":"")." /> Новинка</label>
<input type='hidden' value='$f_kod' name='f_kod' />
<input type='hidden' value='1' name='isNaked' />
</form>

<a href='/netcat/add.php?catalogue=1&sub=16240&cc=169&f_idmes=$f_kod'>Добавить фото</a>



" : NULL)."
<p>$f_Name<br> $f_kod</p>

<form action='/netcat/modules/netshop/post.php' method='post'>
<input type='hidden' name='redirect_url' value='$GLOBALS[uri_path]'>
<input type='hidden' name='cart_mode' value='add'>

<div class=\"buy\">
<div>
<div class=\"plusMinus\">
<input data-count='$f_StockUnits' name='cart[$classID][$f_RowID]' type=\"text\" value=\"".($_SESSION["cart_57"]["goods"]["57"][$f_RowID]?$_SESSION["cart_57"]["goods"]["57"][$f_RowID]["Qty"]:1)."\" />
<a href=\"#\" class=\"plus\">+</a>
<a href=\"#\" class=\"minus\">-</a>
</div>
<a href=\"#\" class=\"buyLink\"><img src=\"/images/buy.png\" alt=\"\" /></a>
</div>
<strong class=\"price\">$f_Price руб.</strong>
</div>

</form><b>На складе: ".($f_StockUnits!='20000' ? $f_StockUnits : "много")."</b>
</div>
</li>


Суффикс списка объектов:
Код:
</ul></div>
".($prevLink || $nextLink ? "<br /><br />
Страницы: ".browse_messages($cc_env, 5)."" : NULL)."
</div>


стоит показывать по 20 объектов на странице

В самом разделе, где используется компонент число вывода объектов на странице не указано.

Подскажите, пожалуйста, в каком направлении мне лучше копать. Хотя бы, ваши предположения и догадки.
04.03.2014, 10:44
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

Попробуйте использовать в самом нижнем поле "Системные настройки" Условие в самый низ чтобы обработать в последнею очередь
if($nolimit==1)$ignore_limit=1; // позволяет игнорировать ограничение на выбор объектов. При установке значения 1 - будут выбраны все объекты (по умолчанию 0).

В ссылке соответственно передайте ?nolimit=1

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
04.03.2014, 14:35
Ответить | Цитировать
Альнев Павел Викторович

Зарегистрирован:
2014-02-27
Сообщений: 4

Спасибо, Александр! Дали правильное направление для мысли.
Задачу решил и выкладываю способ решения:

1. Во-первых, я осознал, что у меня не работает по каким-то причинам инструмент дописывания в url надписей, вида ?recNum или ?nolimit.

2. Во-вторых додумался до нормального метода проверки значений переменных. В системных настройках компонента "Магазин:Товар" прописал echo $recNum; К удивлению, хоть и в компоненте прописано: "Показывать по 20 объектов на странице", echo выдал значение "0". Тогда я ниже дописал следующее выражение $recNum = 30; После обновления страницы в браузере, у меня сразу вывелось 30 карточек товаров.
Значит $recNum работает, но свое значение через url/?recNum=999 менять не хочет.

3. Тогда я решил жестко менять значение recNum. В суффиксе списка объектов добавляю форму с кнопкой, после нажатия которой произойдет смена значения переменной:
Код:
</ul></div>
".($prevLink || $nextLink ? "<br /><br />
Страницы: ".browse_messages($cc_env, 5)."
<br />
<form name=\"test\" method=\"post\" action=\"\" />
<input type=\"submit\" name=\"all_page\" value=\"Все товары\" />
</form>" : NULL)."
</div>


4. В системных настройках дописываю условие:
Код:
if(isset($_POST['all_page']))
{
$recNum=9999;
}


Прошу проверить специалистов мое решение. Может быть, я сделал "костыль" и эту задачу можно решить намного легче и правильнее. Жду комментариев.
Отдельное спасибо Александру и людям с этой темы: http://netcat.ru/support/forum/obschie-voprosy/cms...
198 196 2014-03-04 14:35:52 13522
Описание проекта