Внимание! Данный раздел закрыт и доступен только для чтения в связи с запуском нового проекта uВопросы, на котором Вы можете найти ответ или задать любой интересующий вопрос по системе uCoz. Задавайте вопросы, ищите ответы и помогайте найти ответы другим пользователям системы! Получайте баллы и открывайте новые достижения. Подробнее в блоге...

Перейти на новый сайт помощи по uCoz


  • Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: JonMagon  
Сообщество uCoz » Модули uCoz » Форум » Создаем "Раздел-ссылку" (как на главной форума uCoz (раздел "Модули"))
Создаем "Раздел-ссылку"
Head-Mad
Сообщений: 378
Репутация: 129

Сообщение # 1 | 18:32:23
Не знаю на сколько правильно я понял автора этой темы, но он натолкнул меня на то чтоб написать этот скрипт, для кастомизации страниц форума, в частности сделать один из блоков (разделов) на главной странице сворачиваемымКак это реализовано на этом форуме

Ну и конечно всё это будет работать с запоминанием но не в cookie а в localStorage.
Работать скрипт будет для конкретного блока, порядковый номер которого вы укажете.

Для начала напишем функцию, которая будет выполнять всю работу:
Код
<script>
       function contLink(index){
       var t = $('.gTable').eq(index-1),
    tr = t.find('tr:not(:first)'),
    top = t.find('.gTableTop').append('<i>-</i><div class="lnks" style="display:none"></div>'),
    lnk = t.find('a.forum').map(function(i,e){return '<a href="'+$(e).attr('href')+'">'+$(e).text()+'</a>'};).get().join(', '),
    lnks = t.find('.lnks'),
    i = t.find('i');
      
    if(localStorage.getItem(index)){i.addClass('act');tr.hide();lnks.show();i.text('+')}
      
    lnks.html(lnk);
      
    i.click(function(){
    i.toggleClass('act');
    if(i.hasClass('act')){
        tr.hide();
        lnks.show();
        i.text('+');
        localStorage.setItem(index, 'act')
     }else{
   tr.show();
          lnks.hide();
   i.text('-');
   localStorage.removeItem(index)}
    };)//i.click
       }// contLink
   </script>
Скрипт можно разместить в любом месте, главное чтоб он шел ниже подключаемой библиотеки JQuery, либо записать в отдельный js-файл и подключить, опять же ниже JQuery.
Далее вызываем функцию:
Код
<script>
$(function(){
contLink(index)
};)
</script>
ВАЖНО! index - это порядковый номер блока на странице. То есть, если мы хотим чтоб открывашка была только на втором блоке, то вместо index пишем 2.
Кроме того, можно вызвать функцию несколько раз, для разных блоков. Например:
Код
<script>
$(function(){
contLink(1); // вызываем функцию для первого блока
contLink(3); // для третьего блока
};)
</script>


P.S.: Ну и небольшая стилизация для открывашки:
Код
<style>
   .gTableTop{
       position:relative;
       padding:0 10px;
       line-height:3}
   .gTableTop i{
       position:absolute;
       top:10px;
       right:10px;
       display:nline-block;
       width:20px;
       font: 700 20px/20px Arial, sans-serif;
       cursor:pointer;
       background:#27ae60;
       border:5px solid #fff;
       border-radius:15px;
       text-align:center;
   }
   .gTableTop i.act{
       background:#208cd1}
   .lnks{
       background:#fafafa;
       padding:0 10px;
       margin:10px 0;
       font-size:14px;
       font-weight:700;
       color:#208cd1;
       border-radius:5px;}
   .lnks a{
       color:#208cd1;
       text-decoration:underline;}
      </style>
И конечно, ставим там где душе захочется, хоть в файл стилей.
На этом всё, надеюсь скрипт окажется полезным.
Прикрепления: 7926389.png (29.2 Kb)

Можешь забрать этот код и вставить его себе, сам знаешь куда.
Сообщение отредактировал Head-Mad - Воскресенье, 01 Июн 2014, 18:34:30
blood14
Сообщений: 103
Репутация: 0

Сообщение # 2 | 13:43:57
очень полезная вещь ,спасибо большое
Head-Mad
Сообщений: 378
Репутация: 129

Сообщение # 3 | 16:37:28
blood14, пожалуйста) Сам когда увидел такую штуку на этом форуме, подумал что было бы не плохо сделать, но тогда представление о js вообще не имел. А недавно попалась просьба на глаза, вспомнил и написал))
Может конечно и не самым изящным способом, буду рад если кто подскажет, как можно упростить скрипт, или укажет на явные ошибки.

Можешь забрать этот код и вставить его себе, сам знаешь куда.
Selena
Сообщений: 15657
Репутация: 1100

Сообщение # 4 | 17:02:21
Head-Mad, а исходный код страницы не смотрели? Для сравнения.

Отправляя сообщение о помощи, приводите ссылку на свой сайт. Это не считается рекламой, зато снимает массу вопросов.
Head-Mad
Сообщений: 378
Репутация: 129

Сообщение # 5 | 17:19:33
Selena, бегло по странице пробежался, не нашел, значит где-то в файлах. Не смотрел пока. Но думаю что реализация кардинально отличается. Понятно точно что на форуме это работает на куках, и скорее всего работает немного дольше, потому как нажимая на открывашку каждый раз массив ссылок генерируется и удаляется + идет запись в куки. У меня массив ссылок генерируется один раз и скрывается стилями. И при нажатии на открывашку только записываются или стираются данные в локальное хранилище. Думаю так) Можно немного переделать скрипт и сделать, чтоб эта функция выполнялась для всех блоков. Конечно если это надо.))

Можешь забрать этот код и вставить его себе, сам знаешь куда.
Сообщество uCoz » Модули uCoz » Форум » Создаем "Раздел-ссылку" (как на главной форума uCoz (раздел "Модули"))
  • Страница 1 из 1
  • 1
Поиск: