• Страница 1 из 1
  • 1
Модератор форума: JonMagon  
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Скрипт "Предыдущее Следующее сообщение"
Скрипт "Предыдущее Следующее сообщение"
briks400
Сообщений: 14
Репутация: 0

Сообщение # 1 | 11:09:05
Установлен Скрипт "Предыдущее/Следующее сообщение". Загвоздка в том, что если страница с сообщением последняя, то при перелистывании на следующую попадаем на "ошибку 404". Как сделать так, чтобы скрипт определял последнюю страницу и кнопка "следующее сообщение" просто бы не появлялась и нажать на нее не было бы возможности у пользователя?

<script>
a=location.href;
b=a.split('-');
c=b.length;
d=eval(c-1);
e=b[d];
f=a.split('-'+e)[0];
$('#pages').html('<a id="sel_buttons" href="'+f+'-'+eval(e-1)+'">Предыдущее сообщение</a><span id="i"> | </span><a id="sel_buttons" href="'+f+'-'+eval(e*1+1)+'">Следующее сообщение</a>');
$.ajax({
type: 'GET',
url: f+'-'+eval(e*1+1),
error: function(){$('#a, #i').hide();}
};);
$.ajax({
type: 'GET',
url: f+'-'+eval(e-1),
error: function(){$('#b, #i').hide();}
};);
</script>

Заметил еще такую фишку: вертикальная черта между кнопками как раз исчезает когда следующего сообщения не существует (но кнопка "следующее сообщение" все равно есть и нажать на нее можно).

Плюс:
На urle каждой кнопки (предыдущее/следующее) при наведении мышки возникает ссылка на страницу с ЧПУ Url-ом , что не комильфо, потому что указывается ЧПУ страницы, на которой сейчас находится пользователь + номер . Нужно сделать так, чтобы скриптом обрезались ЧПУ и оставался только номер страницы (напр. не http://.....ru/......./......./......./......./104-1-0-3857 , а просто короткой ссылкой http://.....ru/104-1-0-3857
Сообщение отредактировал briks400 - Воскресенье, 13 Окт 2013, 13:02:02
Ljubasha
Сообщений: 834
Репутация: 157

Сообщение # 2 | 13:15:19
briks400, Адрес сайта? Попробуй добавить в эту строку красное...
error: function(){$('#a, #i, #sel_buttons' ).hide();
$Tiny$
Сообщений: 193
Репутация: 62

Сообщение # 3 | 17:01:05
Цитата briks400 ()
<script>
a=location.href;
b=a.split('-');
c=b.length;
d=eval(c-1);
e=b[d];
f=a.split('-'+e)[0];
$('#pages').html('<a id="sel_buttons" href="'+f+'-'+eval(e-1)+'">Предыдущее сообщение</a><span id="i"> | </span><a id="sel_buttons" href="'+f+'-'+eval(e*1+1)+'">Следующее сообщение</a>');
$.ajax({
type: 'GET',
url: f+'-'+eval(e*1+1),
error: function(){$('#a, #i').hide();}
};);
$.ajax({
type: 'GET',
url: f+'-'+eval(e-1),
error: function(){$('#b, #i').hide();}
};);
</script>
Данный скрипт неправильно работает в том случае, если материалы находятся в разных категориях. Поэтому, переделал его.
Правда теперь его установка стала зависеть от модуля. Вот скрипт для модуля новостей.
Код
<div id="pages"></div>
<script>
var blockid = '#pages'; //здесь храним id блока, в котором будут ссылки
var moduleid = '2'; //здесь храним id модуля, в котором будут ссылки
var urlarray = location.href.split('-');
var materialid = urlarray[urlarray.length - 1];
$(blockid).html('[ <a href="/index/86-'+eval(materialid-1)+'-5-' + moduleid + '">Предыдущий материал</a><span> | </span><a href="/index/86-'+eval(materialid*1+1)+'-5-' + moduleid + '">Следующий материал</a> ]');   
$.get('/index/86-' + eval(materialid*1+1) + '-5-' + moduleid, function(data){
   if ($(data).text().substring(0, 5) == 'Error') {
     $(blockid).children().eq(1).hide(); $(blockid).children().eq(2).hide();
   }
});
$.get('/index/86-' + eval(materialid-1) + '-5-' + moduleid, function(data){
   if ($(data).text().substring(0, 5) == 'Error') {
     $(blockid).children().eq(1).hide(); $(blockid).children().eq(0).hide();
   }
});
</script>
Чтобы установить для другого модуля, нужно поменять цифру в строке:
var moduleid = '2'; //здесь храним id модуля, в котором будут ссылки
на нужную:
1 - Блог
2 - Новости сайта
3 - Каталог статей
4 - Фотоальбом
5 - Каталог файлов
6 - Каталог сайтов
7 - Доска объявлений
demon1153
Сообщений: 9
Репутация: 0

Сообщение # 4 | 10:50:34
Цитата $Tiny$ ()
Данный скрипт неправильно работает в том случае, если материалы находятся в разных категориях. Поэтому, переделал его.

А не подскажите как передать, вместо "Предыдущий материал и следующий..." название этих материалов?
Killberg
Сообщений: 2
Репутация: 0

Сообщение # 5 | 14:55:47
Цитата $;Tiny$;1255491
Правда теперь его установка стала зависеть от модуля. Вот скрипт для модуля новостей. <div id="pages"></div>
<script>
var blockid = '#pages'; //здесь храним id блока, в котором будут ссылки
var moduleid = '2'; //здесь храним id модуля, в котором будут ссылки
var urlarray = location.href.split('-');
var materialid = urlarray[urlarray.length - 1];
$(blockid).html('[ <a href="/index/86-'+eval(materialid-1)+'-5-' + moduleid + '">Предыдущий материал</a><span> | </span><a href="/index/86-'+eval(materialid*1+1)+'-5-' + moduleid + '">Следующий материал</a> ]');
$.get('/index/86-' + eval(materialid*1+1) + '-5-' + moduleid, function(data){
if ($(data).text().substring(0, 5) == 'Error') {
$(blockid).children().eq(1).hide(); $(blockid).children().eq(2).hide();
}
};);
$.get('/index/86-' + eval(materialid-1) + '-5-' + moduleid, function(data){
if ($(data).text().substring(0, 5) == 'Error') {
$(blockid).children().eq(1).hide(); $(blockid).children().eq(0).hide();
}
};);
</script>


Доброго время суток.
Подскажите, пожалуйста, куда его добавлять надо, вставил в страницу товара не заработало.

Спасибо за понимания!
Сообщение отредактировал Killberg - Пятница, 24 Июн 2016, 16:43:44
Shеriff
Сообщений: 3187
Репутация: 2662

Сообщение # 6 | 22:21:21
Killberg, есть рабочий вариант: https://uscript.pro/shop/30/item/sledujushhij-predydushhij-material

Профессиональный сервис опросов WebAsk
Killberg
Сообщений: 2
Репутация: 0

Сообщение # 7 | 18:27:05
Цитата Shеriff ()
Killberg, есть рабочий вариант: https://uscript.pro/shop/30/item/sledujushhij-predydushhij-material
Спасибо обязательно проверю и отпишусь
Сообщение отредактировал Killberg - Вторник, 28 Июн 2016, 18:39:13
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Скрипт "Предыдущее Следующее сообщение"
  • Страница 1 из 1
  • 1
Поиск: