Форум Diz-Cs.Ru
Преимущества регистрации:
Возможность создания тем
Общение с пользователями
Найдете множество полезной информации
Найдете своих единомышленников
DIZ-CS.RU - Мы с Вами НАВСЕГДА!
В данном разделе Вы сможете задать любой вопрос который касается uCoz. Если Вы ищите скрипт, то напишите в эту тему, также можете посетить наш раздел веб-мастеров.
Если у пользователя мало гарантий, то советуем провести сделку через гаранта.
  • Страница 1 из 1
  • 1
Модератор форума: -SAM-  
Активный форум » WEB-мастеру » Вопросы и ответы на FAQ по uCoz » Не работает скрипт листалки файлов
Не работает скрипт листалки файлов
Дата: Пт, 01.05.2015, 13:36:22 | Сообщение # 1
Аватарка Th1s_is_N1ce
OFF
Постоянный
150 Сообщения:
1 Награды:
2 Отзывы:
Сайт пользователя:
Не работает скрипт листалки файлов. Вообщем должно быть [ Предыдущий материал | Следующий материал ], а у меня остается лишь [ ]. Почему так? ЧПУ стоит. При загрузке страницы появляется надпись Предыдущий материал | Следующий материал и сразу же исчезает.
Код
<div id="pages"></div>
  <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="b" href="'+f+'-'+eval(e-1)+'">Предыдущий материал</a><span id="i"> | </span><a id="a" 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>
Дата: Пт, 01.05.2015, 18:53:50 | Сообщение # 2
Аватарка -SAM-
⇚ Stand Alone Man ⇛
OFF
Гл. Администратор
5625 Сообщения:
88 Награды:
261 Отзывы:
Сайт пользователя:
Th1s_is_N1ce,
Цитата Th1s_is_N1ce ()
При загрузке страницы появляется надпись Предыдущий материал | Следующий материал и сразу же исчезает.
Дело в том, что это вполне привычное дело, а именно скрипт так ведет себя, когда соседних материалов попросту нет, куда бы перейти. Вот первоисточник скрипта - проверь такой ли код, как там, да и для какого модуля ты ставишь его?

А еще, возможно, кто-то не знает, но этот скрипт ущербный в плане кода, а именно конфликт с bb-кодом Bold:
Цитата
id="b"
Тоесть, при загрузке страницы материала и комментариев, срабатывании скрипта этого - пропадает кнопка bb-кода Bold из панельки добавления комментария, можете проверить сами.

Я был переписал его, поменяв там id, чтобы не было такого конфликта более, а также сделал эти ссылки кнопками, вот, возможно, кому-то пригодиться:


Дата: Пт, 01.05.2015, 23:46:12 | Сообщение # 3
Аватарка Tiny
OFF
Постоянный
516 Сообщения:
6 Награды:
92 Отзывы:
Цитата -SAM- ()
А еще, возможно, кто-то не знает, но этот скрипт ущербный в плане кода, а именно конфликт с bb-кодом Bold
-SAM-, молодец.
Я заходил в эту тему и исследовал проблему данную. Но -SAM- обнаружил новую, которая вполне имеет место. Переписал скрипт и предлагаю свой вариант.
Раз уж конфликтует по id - я вовсе отказываюсь от него. У нас есть четко заданный div:
Код
<div id="pages"></div>
Его id ведь и без того используется. И в нем всегда три элемента - ссылка на предыдущий материал, разделитель, ссылка на следующий материал. Значит, обращаемся к этим элементам не по id, а как к дочерним этого div. Все дочерние элементы берем функцией $('#pages').children() и из них выбираем первый, второй или третий по номеру (а правильнее - нулевой, первый и второй) по необходимости. А id блока в скрипте сделал через переменную "blockid" - чтобы было легче править в виду выявления новых конфликтов, опять же.
Теперь, о том, что я выяснил. Скрипт не работает не только когда соседи по id удалены, но и когда они в других категориях.
Пример - https://diz-cs.ru/load....0-42389 . Ссылка https://diz-cs.ru/load/23-1-0-42389 вполне работает. Т.е. от ЧПУ беды тут нет (если бы была - скриптом вырезали бы "soft_i_programmy/multimedija/google_chrome_42_0_2311_15_dev_samaja_aktualnaja_versija" и все). Беда в том, что сменив id категории, т.е. 23, на другую - получаем нерабочую ссылку (не буду приводить измененную ссылку - такие ссылки в индексе не полезны сайту). Т.е. нам нужно получить ссылку без id категории. Обнаружить такую мне удалось. На странице комментариев пользователя. Ссылка - https://diz-cs.ru/index/86-42389-5-5 - ведет на тот же материал и не содержит id категории. Единственная проблема, полученный скрипт подходит лишь для каталога файлов, так как последняя цифра в ссылке означает модуль с материалом. Ссылка на новость сайта выглядит так - https://diz-cs.ru/index/86-14687-5-2 . Т.е. цифра два уже (зато убралась дата и категория, и это позволяет допилить скрипт и под "Новости сайта", что невозможно было раньше). Минус такой ссылки в том, что она никогда не возвращает 404 ошибку. Там есть системная страница, которая оповещает, что нет такого материала. Но она не является страничкой 404. Это вызывает необходимость менять функцию, убирающую кнопку. Зато это и плюс - не будет битых ссылок на страницы (ибо тот же Google лезет искать ссылки еще и в скриптах).
Код
<div id="pages"></div>
<script>
var blockid = '#pages'; //здесь храним id блока, в котором будут кнопки
a=location.href;     
b=a.split('-');     
c=b.length;     
d=eval(c-1);
e=b[d];
f=a.split('-'+e)[0];
$(blockid).html('[ <a href="/index/86-'+eval(e-1)+'-5-5">Предыдущий материал</a><span> | </span><a href="/index/86-'+eval(e*1+1)+'-5-5">Следующий материал</a> ]');     
$.get('/index/86-' + eval(e*1+1) + '-5-5', function(data){
     if ($(data).text().substring(0, 5) == 'Error') {
       $(blockid).children().eq(1).hide(); $(blockid).children().eq(2).hide();
     }
});
$.get('/index/86-' + eval(e-1) + '-5-5', function(data){
     if ($(data).text().substring(0, 5) == 'Error') {
       $(blockid).children().eq(1).hide(); $(blockid).children().eq(0).hide();
     }
});
</script>
Послежу за темой и за решением проблемы дальше. Возможно, выявятся еще какие баги и идеи. Надо же допилить этот скрипт наконец.
Сообщение отредактировал Tiny - Пт, 01.05.2015, 23:59:18
Дата: Сб, 02.05.2015, 15:41:24 | Сообщение # 4
Аватарка Th1s_is_N1ce
OFF
Постоянный
150 Сообщения:
1 Награды:
2 Отзывы:
Сайт пользователя:
-SAM-, спасибо за помощь и отзывчивость, но твой скрипт также не полностью работал, но убрал баг с bb кодом.
Tiny, вот твой скрипт полностью рабочий, все переходит как надо, а главное нет бага который нашёл Сэм. Спасибо вам огромное! Можно закрывать! :Cnc:

---Так не мой скрипт, я в этом деле вообще не разбираюсь, просто делал был когда-то тест, нашёл такой вот глюк, переписал чуток (и то корявенько, ведь инпуты анкором оборачивать - не годиться). Тему не буду закрывать, пусть будет открытой (вот зеркало еще есть + тут еще вот упоминания).



UPDATE: http://uscript.pro/shop/30/item/sledujushhij-predydushhij-material --- © -SAM-
Активный форум » WEB-мастеру » Вопросы и ответы на FAQ по uCoz » Не работает скрипт листалки файлов
  • Страница 1 из 1
  • 1
Поиск: