Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Как вывести URL страницы в компоненте? И как сделать такую ссылку: /?recNum=10&sort=sale ?

Страницы: 1  |  2  |  3  |  4  |  5
24.09.2013, 13:00
Гость
Гость

Всем доброго времени суток. Столкнулся с 2-мя задачами и не знаю как их реализовать, вдруг кто сталкивался с подобным...

1. Можно ли вывести в компоненте адрес страницы на которой находимся?
2. Как к количеству объектов на странице прицепить сортировку? Вот примерчики:
Показывать по: <a href='/catalog/women/?recNum=5'>5</a> <a href='/catalog/women/?recNum=10'>10</a> <a href='/catalog/women/?recNum=15'>15</a>
Сортировать по: <a href='/catalog/women/?sort=novelty'>новинкам</a>, <a href='/catalog/women/?sort=sale'>скидкам</a>
Допустим, когда мы жмем "показывать по 10 страницы", то нам выводится в браузерной строке: /catalog/women/?recNum=10
Когда жмем "сортировать по новинкам", выводится соответственно: /catalog/women/?sort=novelty
Вопрос, как сделать такую ссылку: /catalog/women/?recNum=10&sort=sale ?)

Спасибо!
24.09.2013, 14:47
Игорь

Зарегистрирован:
2013-04-29
Сообщений: 48

Для вывода страницы есть $subLink http://netcat.ru/developes/docs/api/subLink.html

Для выборки нужно использовать поле компонента типа список.

1) Создаёте список. Разработка -> Списки
2) Заполняете список 1. novelty 2. oldy ...
3) Добавляете поле типа список в компоненте, ставите галочкой возможен поиск по данному полю.
Подробнее тут
http://netcat.ru/developes/docs/components/searching-and-selection/

Дальше формируете ссылку.

<? echo listQuery("SELECT `services_Name` FROM `Classificator_services`","<li><a href='url/Страница/?srchPat[0]=\$data[services_ID]' rel='nofollow'> \$data[services_Name]</a></li>\n")?>


Тут мог ошибиться с экранированием вам нужно посмотреть.
24.09.2013, 18:58
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Делайте примерно так:
Код:

<form method='get' action=''>
Показывать по:
<select name='recNum'>
<option value='5'>5</option>
<option value='10'>10</option>
<option value='15'>15</option>
</select><br />
Сортировать по: <select name='sort'>
<option value='novelty'>Новинкам</option>
<option value='sale'>Скидкам</option>
</select><br />
<input type='submit' value='OK' />
</form>

Этот код вставьте в префикс или в суффикс списка объектов.
В системных настройках компонента сделайте обработку $sort примерно так:
Код:
if(!isset($sort)) $sort='novelty'; // по умолчанию сортируем по новинкам
$query_order = ($sort=='novelty' ? "a.Created DESC" : "a.Skidka DESC" );


Если вариант с выпадающими списками вам не подходит, то сделайте эту форму невидимой, создайте необходимые ссылки под ней, и через onclick меняйте значение полей в этой форме и сабмитьте так же, джаваскриптом иль жикверью.
25.09.2013, 09:04
Гость
Гость

Игорь, большое спасибо Вам за название переменной "$subLink", видать замотался вчера, хотя просматривал всю документацию)
Руслан, а можно ли обойтись вообще без формы? Сейчас у меня просто ссылки.
Вот мой код в системных настройках:
Код:

<?
if($sort=='priceup'){$query_order='price ASC';}
if($sort=='pricedown'){$query_order='price DESC';}
if($sort=='novelty'){$query_order='novelty DESC';}
if($sort=='sale'){$query_order='sale DESC';}
?>

Если же такое не возможно, то не могли бы Вы подсказать, что вписать в ссылки под формой для ее работа?) Спасибо!)
25.09.2013, 09:12
Гость
Гость

stylish-cherries.ru/sort.jpg - вот ссылка (фото) на код в префиксе
25.09.2013, 12:34
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Очень нежелательно без формы, потому что если через адресную строку будет передана какая-то переменная (например, curPos), то вы замучаетесь прописывать ее во всех сделанных ссылках.
Переделайте мой вариант примерно так:
Код:
<form method='get' action='' id='sortform'>
<input type='hidden' name='recNum' value='5' id='recNum' />
<input type='hidden' name='sort' value='novelty' id='sort' />
</form>
<div class='recselector'>
Показывать по: <a href='#'>5</a>, <a href='#'>10</a>, <a href='#'>15</a>
</div>
<div class='sortselector'>
Сортировать по: <a href='#' rel='novelty'>Новинкам</a>, <a href='#' rel='sale'>Скидкам</a>, <a href='#'>15</a>
</div>

Потом в главном js-файле пропишите:
Код:
$(document).ready(function(){
$('.recselector a').click(function(){
$('#recNum').val( $(this).html() );
$('#sortform').submit();
});
$('.sortselector a').click(function(){
$('#sort').val( $(this).attr('rel') );
$('#sortform').submit();
});
});
Предварительно, конечно, проверив, что у вас подключен jQuery. :-)
В форме установленные значения 5 и novelty желательно, конечно, инициализировать теми значениями, которые переданы через адресную строку посредством переменных $recNum и $sort. Иначе у вас с каждой страницей будет сбрасываться фильтр.
25.09.2013, 14:18
Гость
Гость

Спасибо огромное, почти все работает!) А как нам перейти например на /?recNum=10&sort=sale ?)
25.09.2013, 14:56
Гость
Гость

У меня есть некий скрипт, который запоминает класс при перезагрузке страницы, использую jquery.cookie.js
Код:

$('#cookie-sort').ready(function() {
function cookiesort(id){
$.cookie('cookiesort',id);
}
$(document).ready(function() {
if($.cookie('cookiesort')!=null){
$('#cookie-sort a.click').removeClass('active'); // тоже самое со ссылкой, чтобы подсветить активную ссылку
$('#cookie-sort a#'+$.cookie('cookiesort')).addClass('active');
}
$('#cookie-sort a.click').click(function(){ // Отрабатываем событие, вызываемое при клике по ссылке
cookiesort($(this).attr('id')); // Вызываем функцию, описанную выше, передаем ей id ссылки, по которой щелкнули
$('#cookie-sort a.click').removeClass('active'); // И напоследок подсвечиваем активную ссылку
$('#cookie-sort a#'+$(this).attr('id')).addClass('active');
});
});
});

Может быть его можно как-нибудь применить для запоминания ссылки?)
25.09.2013, 19:09
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Так и делайте - сначала кликните на ссылку "Показывать по 10" и затем кликните на ссылку "Сортировать по скидкам". Но при этом вам надо в инпутах сделать запоминание переданных ранее параметров, примерно так:
Код:
 <input type='hidden' name='recNum' value='<?=($recNum?$recNum:5)?>' id='recNum' /> 
<input type='hidden' name='sort' value='<?=($sort?$sort:'novelty')?>' id='sort' />

Это я привел пример для неткат 5.х, в 4ке надо писать примерно так:
".($recNum?$recNum:5)."

Куки здесь использовать не нужно - лишний трафик только тратить. улыбка
25.09.2013, 22:22
Гость
Гость

Здорово! Так получается мой пример скрипта, который сохраняет класс можно удалить и реализовать это с помощью CMS?) Раз Вы говорите, что это лишний трафик улыбка
25.09.2013, 22:25
Гость
Гость

И можно ли сохранить это значение "/?recNum=N&sort=N" при переходе на другую страницу? Например, в другой раздел, чтобы если пользователь выбрал первоначально одну сортировку, так ему эта сортировка везде бы и показывалась, во всех разделах товара. Было бы вообще супер-пуперски)))
198 196 2013-10-15 18:26:12 13315
Страницы: 1  |  2  |  3  |  4  |  5
Описание проекта