Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Новые возможности форумов » Скрипты от пользователей 3


Скрипты от пользователей 3

Сообщений 521 страница 540 из 569

1

Администрация MyBB не гарантирует работоспособность данных скриптов, вы ставите их на свой страх и риск.

Для тех кто выкладывает скрипты:
1) Дайте краткое описание скрипта.
2) Обязательно укажите куда его вставлять.
3) Сам скрипт вставьте в bb-коды [сode] [/сode] или в [quotе] [/quotе]

В данной теме запрещено задавать вопросы и просить скрипты. Для этого есть раздел  Запросы по скриптам[10], при нарушение данного правила будет выдаваться предупреждение в профиль.

Отредактировано Alex_63 (Ср, 12 Фев 2020 20:35:57)

+8

521

Имитация диалогов в соцсетях в постах (выравнивание своего профиля по правую сторону)
Не влияет на посты гостя, потому что идентифицировать конкретного гостя чуть сложнее, будет лишним поводом зарегистрироваться :D

пример

Дико извиняюсь за радугу, уголки мне перепиливать было лень, лепилось изначально именно ради реализации концепта диалогов хд
https://sun9-20.userapi.com/c855724/v855724005/ed217/JwElgmoNfQM.jpg

В HTML-низ:

Код:
<script>
if(!!$('#pun-viewtopic')[0]){
$('#pun-viewtopic').find('.pa-author').each(function(){
if(GroupID!=3 && $(this).find('a').text()==UserLogin){
$(this).parent().parent().parent().parent().addClass('mypost');
}
})
}
</script>

Вставка для понимающих, что происходит: ну я навесила на контейнеры с своими постами класс mypost, так что теперь их можно менять отдельно от постов всех прочих

В HTML-верх или в стиль:

<style>
.mypost .post-author {
    float: right;
}

.mypost .post-body {
    margin: 0 220px 0 0; //зеленое менять пока не станет нормально
}
</style>

Там же можно прописать отдельные фоны для профиля, тела поста и всего вот этого вот

Отредактировано Амираль (Чт, 12 Сен 2019 11:42:11)

+5

522

Блочная боковая панель
Вот сделал сам первый свой скрипт блочной боковой панели, что то взял от Дука, что то от Деффа и из интернета немного.
Скрипт позволяет закруглять углы у блоков и делать под ними тень. Пример: http://vkontakte.forum.cool/. Ставим в html верх.

<!--Боковая панель-->
<style id="sidbar-style">
#pun {margin: auto 14% auto 25px; width: 990px;}
.sidbar {position:absolute; z-index:1000; top:auto; right:10px; left:1004px; width:210px;}
.bar {color: #00000; /* цвет текста */
background:#FFFFFF; /* фон блока */
border: 2px #417ed0   solid; /* стили рамки */
border-radius: 10px 10px 10px 10px; /* закругление углов */
box-shadow:5px 5px 7px #888/*Тень*/}
</style>
<div class="sidbar">
<center>
(Количество блоков размножаете сколько вам надо. Вместо троеточия, ставите то что вам надо)
<div class="bar">...</div></br>
<div class="bar">...</div></br>
<div class="bar">...</div></br>
<div class="bar">...</div></br>
<div class="bar">...</div></br>
</center>
</div>
<!--конец боковой панели-->

В стилях:
●#pun - устанавливаем расположение самого форума,
● sidbar - устанавливаем расположение боковой панели
● bar - оформление блоков боковой панели.

Если что, строго не судите, это первый мой скрипт. Тестируйте, пользуйтесь.

Отредактировано ИВП (Чт, 24 Окт 2019 12:10:55)

+6

523

СКРЫТИЕ И ПРОЯВЛЕНИЕ КАТЕГОРИЙ
В HTML-Верх:

Код:
<script type="text/javascript" src="https://forumstatic.ru/files/001a/8a/80/27841.js"></script>

И так, скрипт установлен. Теперь у каждого своё:

Скрыть категорию

<script type="text/javascript">
hideCategories([numbers]);
</script>

Показать категорию

<script type="text/javascript">
showCategories([numbers]);
</script>

numbers - номера категорий для действия (через запятую! Например:1,2,3)
ВНИМАНИЕ! Номера категорий - массив! Даже если номер один надо писать в квадратных скобках! ([ и ])
Скрипт для появления/скрытия вставлять в самый низ HTML-Низ! (Можно и не в самый, но после скриптов, скрывающих категории.)

Отредактировано Hyppoprogramm (Вс, 1 Дек 2019 18:34:35)

+1

524

ИЗМЕНЕНИЕ ЗАГОЛОВКА ДЛЯ ОПРЕДЕЛЁННЫХ СТРАНИЦ
В HTML-Верх:

<script type="text/javascript" src="https://forumstatic.ru/files/001a/8a/80/70138.js"></script>

В HTML-Низ:

<script type="text/javascript">setTitle({'url':'title'})</script>

url - url страницы, для которой надо изменить название. ВНИМАНИЕ! Не забудьте писать http://, и в случае неудачи проверяйте url.
title - заголовок страницы.
Если вы хотите сделать несколько таких страниц пишите:
{'url':title,'url':title}

+1

525

Скрипт написан в 2017 для форума tobath.7bb.ru, но до сих пор не был опубликован:

Extazy90 написал(а):

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

Автоуменьшение картинок в постах (с превью)

Уменьшает все изображения в постах до заданного размера, добавляя кликабельность, если изображение ещё не обёрнуто в ссылку.
Для отключения автоуменьшения конкретной картинки можно её обернуть в тег жирности [b][/b].

В HTML низ:

Код:
<style>
/* Ужатие кликабельных картинок в постах */
.post-content a .postimg {
  max-width:400px!important;
  max-height:400px!important;
  width:auto!important;
  height:auto!important;
}
</style>
<!-- Автоуменьшение-оборачивание крупных картинок -->
<script type="text/javascript">
  $('.post-content .postimg').on('load',function() {
    if($(this).closest('a,strong').length==0&&(this.offsetWidth>400||this.offsetHeight>400))
      $(this).wrap('<a href="'+this.src+'" target="_blank"></a>');
  });
</script>

Размер можно регулировать, изменяя цифру 400 (пикселей) на нужное значение (в двух местах в стиле и двух в скрипте).

+8

526

нашел в сети скрипт простых часов
настраиваемый

https://sun9-46.userapi.com/c855028/v855028753/1fb89b/wLMVTC6t-Xg.jpg

в хтмл-низ

<script type="text/javascript"> 
setInterval(function () { 
date = new Date(), 
h = date.getHours(), 
m = date.getMinutes(), 
s = date.getSeconds(), 
h = (h < 10) ? '0' + h : h, 
m = (m < 10) ? '0' + m : m, 
s = (s < 10) ? '0' + s : s, 
document.getElementById('time').innerHTML = h + ':' + m + ':' + s; 
}, 1000);
</script>

туда куда нужно

<span style="color:#7e5a25; font-size:14pt; border:2px solid #e1d4ae; background:#e8e3d4; padding:5px;">
<span id="time">00:00:00</span>
</span>

синим настройка

Отредактировано tartar1 (Пт, 21 Фев 2020 16:35:02)

+4

527

Скрипт скрытия поста до определённой даты

Иногда админу нужно куда-то отъехать
И в тоже время нельзя не поздравить кого-то,
Или не выложить инфу к нужному дню

В самый верх! HTML верх

Код:
<!-- Скрыть пост до указанной даты --> 
<script type="text/javascript" src="https://forumstatic.ru/files/0014/cc/0a/68173.js"></script>

Кнопка установки даты втут=> https://i.imgur.com/BJg0Zfm.jpg

Формат ввода даты: 2020-02-21  23:49 // Поправлено 21.05.2020! Время скрытия жестко привязал к МСК! (Ранее болталось в зависимости от регионального времени просматривающего  :canthearyou:

Тестируем, интересуют отзывы с разных планшетов, айпадов  :cool:

Под Автором поста есть кнопка для возможности редактировать


По просьбе был переделан порядок цифр ввода даты( теперь день-месяц-год)
Тестируйте!

Код:
<!-- Скрыть пост до указанной даты --> 
<script type="text/javascript" src="https://forumstatic.ru/files/0014/cc/0a/95028.js"></script>

Отредактировано Deff (Сб, 4 Июл 2020 09:48:26)

+11

528

Скрываем профиль в постах

В начало HTML низ:

Код:
<!-- Скрываем профиль в постах © Deff -->
<style>img.postimg[src="https://is.gd/ekiTPp"]{display:none;}</style>
<script type="text/javascript">
(function () { 
function addStyle() { /*==123==;
<style type="text/css">#### .post-author,#### .post-sig,#### .pl-email,#### .pl-website{display:none !important}#### .post-body,#### .post-links,#### .post-links ul,#### h3>span{margin-left:0 !important}</style>
==123==;*/
} addStyle = addStyle.toString().split('==123==;')[1];
$('.post .post-content img[alt="hide-autor"]').each(function(){
   var id = $(this).parents('.post').prop('id');
   $(addStyle.replace(/####/gim,'#'+id)).insertBefore($(this));
});}());
</script>


В Cамо сообщение
( лучше в конец):

Код:
[img=hide-autor]https://is.gd/ekiTPp[/img]

Отредактировано Deff (Ср, 20 Окт 2021 22:50:49)

+10

529

Код:

Уведомление о входе на форум зарегистрованных юзеров миганием иконки и сменой надписи на вкладках браузера

Вид:      https://forumupload.ru/uploads/0000/14/1c/22787/467393.gif

Установка В HTML верх: красным - Ваши настройки...

<!---------   Уведомление о входе зареганных юзеров на форум  -------->
<script>
var On_Blink_Alltabs =
1;   //1 - Включить мигание всех вкладок; 0 - только одной!;
var цикл_ =[           /*          Иконка                   ,           Текст  */
'
https://forumstatic.ru/files/0014/cc/0a/41057.png','Вновь пришедших',
'
https://forumstatic.ru/files/0014/cc/0a/78524.png','Пришли только что'];
var сколько_онлайн_ON = 1 //1 - показывать текущее число пользователей; 0 - не показывать!;
</script>
<script type="text/javascript" src="https://forumstatic.ru/files/0014/cc/0a/81160.js"></script>

PS: В Админ-настройках должна быть установлена иконка сайта!!!

Добавлена(просьбам трудящихся  :crazy: ) строка в настройках:

var сколько_онлайн_ON = 1 //1 - показывать текущее число пользователей; 0 - не показывать!;

Отредактировано Deff (Ср, 24 Июн 2020 16:08:39)

+9

530

Тот же халат только с перламутровыми пуговицами в виде Звукового сопровождения уведомления о входе на форум зарегистрованных юзеров (по просьбе одного неспокойного трудящегося)
Настройки те же, что и постом выше, кроме одной опции это ссылка на звук оповещения
Установка В HTML верх:

<!---------   Уведомление о входе зареганных юзеров на форум  -------->
<script>
var On_Blink_Alltabs = 1;   //1 - Включить мигание всех вкладок; 0 - только одной!;
var цикл_ =[           /*          Иконка                   ,           Текст  */
'https://forumstatic.ru/files/0014/cc/0a/41057.png','Вновь пришедших',
'https://forumstatic.ru/files/0014/cc/0a/78524.png','Пришли только что'];
var сколько_онлайн_ON = 1 //1 - показывать текущее число пользователей; 0 - не показывать!;
var zvyk_kyky = 'https://forumstatic.ru/files/000e/8b/b7/45090.mp3'; //звук оповещения; https://forumstatic.ru/files/000e/8b/b7/30411.ogg - ссылка на пустой звук для отключения
</script>
<script type="text/javascript" src="https://forumstatic.ru/files/000e/8b/b7/51539.js"></script>

+4

531

Раз уж пошла такая пьянка выложу ещё один скрипт-исправление-дополнение, суть которого в
Просмотре превью фотографий без перехода на новую страницу на основе плагина iLoad 
версия 2.6.4

основное отличие от предыдущих версий, в  том что исправлено ошибочное срабатываение скрипта на превью в виде изображения, которое содержит в себе ссылку на файл/сайт и т.д.
скрипт работает с превью от многих популярных файловых хостингов

ДЕМО

https://forumupload.ru/uploads/0000/14/1c/15964/904830.gif

в html-верх грузим сам плагин:

Код:
<!---Просмотр фотографий без перехода на новую страницу--->
<script type='text/javascript' src='https://forumstatic.ru/files/0002/10/47/24479.js'></script>

в html-низ:

Код:
<!---Просмотр фотографий без перехода на новую страницу v.2.6.4--->
<script type="text/javascript">
var a = 1; // режим демонстрации слайд-шоу, 0 - на всей странице, 1 - в отдельно взятом посте
var host = ['funkyimg.com','forumfiles.ru','uploads.ru','fotki.info','savepic.net','savepic.ru','radikale.ru','radikal.ru','fastpic.ru','firepic.org','imgbox.com'];
$('.post-content').map(function(){ 
var Col, Cont, PR, HR, Tit, hvost,sv, s2;
Col = $(this).find('img.postimg').length;
if(a!==0){Cont=$(this).attr('id');}else{Cont='all';}
$(this).find('a:has(img)').each(function(){
PR = $(this).find('img.postimg').attr('src'); HR = $(this).attr('href');
s2 =/(jpe?g|gif|png|funkyimg)/g; sv = HR.match(s2); 
Tit = $(this).find('img.postimg').attr('title');$(this).attr('title',Tit);
if (HR.lastIndexOf('.html')!= -1){hvost=HR.slice(-8,-5);}
for (var i=0; i<host.length; i++){
if((PR.indexOf(host[i])!= -1)){
PR=PR.replace(/(.*?)\.uploads\.ru\/t\/(.*?)/gi, '$1.uploads.ru/i/$2')
.replace(/^https?:\/\/forumfiles\.ru\/uploads\/(\w+)\/(\w+)\/(\w+)\/(\w+)\/t(\d+)\./gi+s2, 'http://forumfiles.ru/uploads/$1/$2/$3/$4/$5.$6')
.replace(/(.*?)\.ifotki\.info\/thumb\/(.*?)/gi, '$1.ifotki.info/org/$2')
.replace(/http:\/\/savepic\.(net|ru)\/(\d+)m\./gi+s2, 'http://savepic.$1/$2.$3')
.replace(/(.*?)\.fastpic\.ru\/thumb\/(.*?)\./gi+s2, '$1.fastpic.ru/big/$2.'+hvost)
.replace(/(.*?)\.radikale\.ru\/uploads\/(.*?)\-prev\./gi+s2, '$1.radikale.ru/uploads/$2-full.$3')
.replace(/(.*?)\.radikal\.ru\/(.*?)t\./gi+s2, '$1.radikal.ru/$2.$3')
.replace(/(.*?)\.firepic\.org\/(\d+)\/thumbs\/(.*?)\./gi+s2, '$1.firepic.org/$2/images/$3.$4')
.replace(/http:\/\/(.*?)\.imgbox\.com\/(.*?)\./gi+s2, 'http://i.imgbox.com/$2.$3')
.replace(/https:\/\/funkyimg\.com\/(view|p)\/(\w+)/gi, 'https://funkyimg.com/i/$2');
};
if((HR.indexOf(host[i])!=-1)&&sv!==null){$(this).attr('href',PR);}};
let r2=(Col==1&&sv!==null)?'iLoad':(Col>=2&&sv!==null)?'iLoad|'+Cont:(Col>=2&&sv==null)?'nofollow ugc':'';$(this).attr('rel',r2);
});});
</script>

Спасибо sshmmv и ACT3255 за активное тестирование скрипта!  :flag:  :cool:

+10

532

Голосовое зачитывание важной информации на форуме

Данный скрипт зачитывает голосом пользователям разную информацию с вашего форума, например:

1. Правила форума (в том числе при регистрации новичка)

2. Зачитывается информация тому, кто попал под блокировку (бан), кем и за что

3. Возможно Приветствие форума, которое вы прописываете через Админ-панель (не проверял)

Демо работы скрипта это ПРАВИЛА данного форума

устанавливаем в html-низ, можно установить и в блок Правил, но тогда кроме правил никакая другая информация зачитываться не будет

Код:
<!-- Голосовое зачитывание важной информации на форуме -->
<script language="javascript">
if($('.info').length || $('#pun-main .html-box').length && !speechSynthesis.speaking){
var rules =(document.querySelector('.info .container')!== null) ? document.querySelector('.info .container').innerText : document.querySelector('#pun-main .html-box').innerText;$.trim(rules);
window.speechSynthesis.speak(new SpeechSynthesisUtterance(rules));} else {setTimeout(function(){window.speechSynthesis.cancel();},250);}
</script>

При регистрации многие Правила форума вообще не читают, а если за них это сделает холодный голос Ирины, возможно они поймут всю серьёзность ситуации  :D
чтобы прервать прослушивание, достаточно перейти на другую страницу в этой же вкладке

+5

533

по просьбе неугомонного tartar1

Вставка в сообщение текущей даты и времени

ДЕМО https://forumupload.ru/uploads/0017/d8/50/2/33391.png

https://forumupload.ru/uploads/0000/14/1c/15964/493430.gif

в html-низ или Форму ответа

Код:
<!---Текущие время и дата в форме ответа--->
<script type="text/javascript">
FORUM.set('editor.addition.tags.time', {name:'Текущее время и дата',onclick:function(){insert(new Date((new Date).getTime()-60*(new Date).getTimezoneOffset()).toLocaleString('ru-RU'));}});
FORUM.set('editor.addition.tags.todate', {name:'Текущая дата',onclick:function(){insert(new Date(RequestTime*1e3).toLocaleString('ru-RU').split(/,/)[0]);}});
$('#addition-area').append('<div onclick="FORUM.get(\'editor.addition.tags.time.onclick()\')"><span>Текущее время и дата</span></div><div onclick="FORUM.get(\'editor.addition.tags.todate.onclick()\')"><span>Текущая дата</span></div>');
</script>

+5

534

ТАБЛИЦА РЕПУТАЦИИ (аналог списка читателей)
показывает таблицу из ссылки "уважение"
скрипт Алекса

в ХТМЛ НИз

<!--Таблица репутац на главной -->
<script type="text/javascript">
if (window.UserID && $('#pun-index').length) $.get('/respect.php?id=' + UserID, function(data) {
    var content = $(data).find('.main .section').html(), h2 = $(data).find('.main h1').html();
    $('#chh').append('<img src="https://forumstatic.ru/files/0019/ce/b3/30725.jpg"><div class="category respect"><h2>' + h2 + '</h2><div class="section">' + content + '</div></div>');
    $('.category.respect tr:gt(21)').remove(); // 21 меняем на нужное кол-во выводимых строк
});
</script>

в нужном месте ставите блок <div id="chh"></div> - там и будет

возможно свое оформление

https://i.imgur.com/bcZWM54.jpg

синим - своя картинка или надпись
(если репутац блок внизу форума,появляется форумная надпись)

Отредактировано tartar1 (Ср, 15 Июл 2020 07:06:33)

0

535

Голосовые уведомления о некоторых событиях на форуме

Код скорее ориентирован на форумы с малой посещаемостью, для которых появление активного пользователя и уж тем более новое сообщение в какой-либо теме целое событие и об этом нужно всех присутствующих срочно оповестить.
Какие оповещения предусмотрены?
1. Пришёл/ушёл пользователь
2. Появилась новая тема
3. Появилось новое сообщение от пользователя такого-то в такой-то теме
4. Зарегистрировался новичок (имя)
5. Вам изменили репутацию

Всё это проговаривается голосом, соответственно кого-то на форуме это может раздражать. Для этого предусмотрена опция в Профиле пользователя включения - выключения Голосовых уведомлений.
Итак, первым делом идём в Администрирование - Поля профиля - Добавляем новое поле, обзываем его Голосовые уведомления -
Поясняющий текст - "Включить голосовые уведомления (включить, выключить)"
Тип поля - Флажки (нам достаточно одного)
Значение поля - слева 1, в поле справа вставляем картинку (можно свою), она изображает выключенные уведомления

Код:
https://forumstatic.ru/files/0017/d8/50/58665.png

https://forumupload.ru/uploads/0000/14/1c/15964/452413.jpg
Сохраняем все настройки
Активация скрипта (по-умолчанию у всех деактивирован) в Профиле будет выглядеть так:

Включение - выключение  :flag:

https://forumupload.ru/uploads/0000/14/1c/15964/708274.gif

в html-верх или в свой стиль  оформление иконки рядом с флажком в Профиле (изображение можно поменять на своё). В этом коде изображение иконки, когда уведомления включены.

Код:
<style type="text/css">
#profile p.checkfield input[name*="form[fld"]:checked + img[alt="1"]{display:none;}
#profile p.checkfield input[name*="form[fld"]:checked:after{
content: url(https://forumstatic.ru/files/0017/d8/50/48158.png);
height: 16px;
padding: 16px;
}
</style>

в html-низ

Код:
<!--  Голосовые уведомления -->
<script language="javascript">
$(document).ready(function(){function speechdata(){$.when($.getJSON("/api.php?method=board.get&fields=active_users,last_registered_username,total_topics,total_posts"),$.getJSON("/api.php?method=users.get&user_id="+UserID+"&fields=respect_plus,respect_minus")).done(function(j1,j2){var x=[{x1:j1[0].response.last_registered_username,s1:"На форуме новичок. Последним зарегистрировался ",m1:""},{x2:j1[0].response.active_users,s2:"Пришёл пользователь. Активных пользователей на форуме сейчас ",m2:"Ушёл пользователь. Активных пользователей на форуме сейчас "},{x3:j1[0].response.total_topics,s3:"На форуме появилась новая тема ",m3:"Было удаление темы. Тем на форуме теперь "},{x4:j1[0].response.total_posts,s4:"Появилось новое сообщение в теме ",m4:"Было удаление сообщений. Постов на форуме теперь "},{x5:j2[0].response.users[0].respect_plus,s5:UserLogin+", вам поставили плюс. Плюсов у вас теперь ",m5:""},{x6:j2[0].response.users[0].respect_minus,s6:UserLogin+", вам поставили минус. Минусов у вас теперь ",m6:""}];if(localStorage.speech||(localStorage.speech=JSON.stringify(x)),localStorage.speech!=JSON.stringify(x)){var obj1=JSON.parse(JSON.stringify(x)),obj2=JSON.parse(localStorage.speech);for(var i in obj2)$.each(obj1[i],function(q,value){function dop(z){if(obj2[i][q]<value&&i==z){eval($.ajax({url:"/export.php?type=js&max=1",async:!1,cache:!1}).responseText);var a=content[0][1],n=content[0][3],nt="под названием "+n+" от пользователя "+a;Newspeech=UserLogin!=a?obj1[i][ind2]+nt:""}}if(obj2[i][q]!=value){var ind2="s"+String(parseInt(i)+1),ind3="m"+String(parseInt(i)+1),Newspeech=obj2[i][q]>value&&0!=i?obj1[i][ind3]+value:obj1[i][ind2]+value;dop(2),dop(3),window.speechSynthesis.speak(new SpeechSynthesisUtterance(Newspeech))}});localStorage.speech=JSON.stringify(x)}})}var cy=$('#profile p.infofield:contains("голосовые уведомления") + p.checkfield input[value="1"]');$(cy).on("click change",function(){$(this).is(":checked")?localStorage.golos=1:window.localStorage.removeItem("golos")}),3!=GroupID&&1==localStorage.golos?setInterval(speechdata,2e4):window.localStorage.removeItem("speech")});
</script>

Скрипт конечно не конкурент Мгновенным уведомлениям от Алекса, это повторюсь, интерактив для малопосещаемых форумов

+9

536

чистил тему и случайно снёс сегодняшний скрипт, поэтому попытка №2

Рейтинг темы и подписчики

ДЕМО

https://forumupload.ru/uploads/0000/14/1c/15964/621079.gif

в html-низ:

Код:
<!--  Рейтинг темы и подписчики -->
<script type = "text/javascript" >
$('.forum .tclcon a').map(function () {
$(this).tipsy({trigger: 'manual', gravity: 'w', fade:!0, html:!0});
var self = $(this),topId = $(this).attr('href').split(/=/)[1];	
$(self).on('mouseenter',function(){
var pu = $(self).attr('original-title').length;
if(pu!=0){$(self).tipsy('show');return !1;}else{
tmp_stop=setTimeout(function(){
$.when($.getJSON('/api.php?method=board.getSubscriptions&topic_id='+topId), $.getJSON('/api.php?method=post.get&topic_id='+topId+'&limit=1&fields=rating')).done(function (j1, j2){
var x = j1[0].response.length,x2 = j2[0].response[0].rating,
InfoT ='<div id="RatingTop" style="font-size:14px"><p>Рейтинг темы: <strong style="color:lime">+'+x2+'</strong></p><p>Подписчиков: <strong style="color:#ff6a00">'+x+'</strong></p></div>'
$(self).attr('original-title', InfoT).tipsy('show');  return !1;});}, 1e3);}
}).on('mouseleave', function() {
clearTimeout(tmp_stop);$('.tipsy').hide();});
});
var busy=!1;$('body').on('touchmove','.tipsy',(e)=>{busy=!0;setTimeout(()=>{busy=!1},20);}).on('touchmove',(e)=>{if(!busy&&$('.tipsy').is(':visible')){$('.tipsy').hide();}});
</script>

рейтинг темы берётся из оценки первого поста, в котором оценивается тема (идея) автора в целом

+8

537

Скрипт показывает подписчиков конкретной темы. В коде применил иконочный шрифт от Гугл Material Icons (который я предлагаю таки подгрузить на сервис для повсеместного применения), поскольку их легко красить и масштабировать

Подписчики темы

ДЕМО

https://forumupload.ru/uploads/0000/14/1c/15964/423361.gif

в html-верх:

Код:
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--  Подписчики темы -->
<style type="text/css">
.jGrowl .subscriptions {opacity: 1;padding: 3px;text-align:center;width: 485px !important;} 
.jGrowl .subscriptions .jGrowl-close {padding: 10px;}
.jGrowl .subscriptions .jGrowl-message {background: #fff; padding: 2px;border-radius: 0 0 4px 4px;color: #0067a5;}
.jGrowl .subscriptions .jGrowl-header {background: #597ba5;font-size: 1.3em;height: 25px;text-align: center;border-radius: 4px 4px 0 0;}
</style>

в html-низ:

Код:
<!--  Подписчики темы -->
<script language="javascript">
if($('#pun-viewtopic').length){
$('.linkst>.pagelink>a:last,.linkst>.pagelink:not(:has(a))>strong').after('<i class="material-icons" id="subTop" original-title="Подписчики" style="cursor:pointer;margin-right:1em;margin-top:-5px;vertical-align: sub;">group</i>');
$('#subTop').tipsy({live:!0,fade:!0,gravity:'s'}).on('click touchend',function(e){e.preventDefault();
var sb = $('#pun-viewtopic').data('topic-id'),ch=[],sub=[],sps = '<table><tr>';
$.getJSON('/api.php?method=board.getSubscriptions&topic_id='+sb, function(d) {
var x = d.response;for (var i in x){ch[i] =x[i].user_id;}
if(ch.length==0){$.jGrowl('У этой темы пока нет подписчиков',{position:'center',life:4e3});}else{
$.getJSON('/api.php?method=users.get&user_id='+ch+'&fields=username,avatar,user_id',function(j) {
var x2 = j.response.users;for (var i in x2){if (x2[i].avatar == '') {x2[i].avatar= 'https://forumstatic.ru/files/0000/14/1c/20038.jpg'};
sub[i] = {a:x2[i].username, b: x2[i].avatar, c: x2[i].user_id};}
$.each(sub, function(i,val){sps += '<td><figure><a href="/profile.php?id='+sub[i].c+'" style="color:#0067a5;"><img style="border-radius:50%;" src="'+sub[i].b+'" width="48" height="48"><figcaption>'+sub[i].a+'</figcaption></a></figure></td>';
if (i%3==2){sps+='</tr><tr>';}});sps += '</tr></table>';
$.jGrowl(sps,{sticky:!0,position:'center',header:'Подписчиков темы '+sub.length,theme:'subscriptions'});
});}});});}
</script>

На данном форуме я устанавливал данный скрипт, только для того чтобы снять гиф с Демо работы, и сейчас он здесь отсутствует.

+6

538

Подарки или награды на странице профиля
Загружает из специального топика на страницу профиля награды или подарки с всплывающем описанием.

Автор скрипта: Romych
Мелкие доделки скрипта и дизайн: Герда
Подробно про настройки можно почитать здесь: http://forumd.ru/viewtopic.php?id=6271
Обсуждение скрипта: Стена в профиле

ОПИСАНИЕ СКРИПТА
Для каждого юзера заводится специальный топик с наградами/подарками.

Подарки или награды добавляются в топик по специальному шаблону.

Код:
[block=podarok][block=podtext]

Ваш текст
Ваш текст
Ваш текст

[/block][block=podimg]

[img]ссылка на картинку подарка[/img]

[/block][/block]

Чтобы подарки отгружались из топика в профиль есть две опции настройки скрипта: либо он возьмет последнюю ссылку из дополнительного поля, либо он возьмет последнюю ссылку из подписи пользователя.
Причем можно помимо ссылок на страничку с подарками вставлять ЛЮБЫЕ дополнительные тексты и ссылки в подписи или дополнительном поле - скрипт учитывает только последнюю ссылку, а не любую другую.

СКРИПТ И НАСТРОЙКИ СКРИПТА
Сам скрипт наград вставляем в html-низ:

Код:
<!-- ПОДАРКИ/НАГРАДЫ на странице профиля (с) Romych -->
<script language="javascript">
var ot = 1; //порядок отображения: 0 - от первых постов к последнему, 1 - от последнего к первому
var mc = 20; //число отображаемых сообщений из темы
var anyava = 'https://forumstatic.ru/files/0000/14/1c/20038.jpg'; //аватар по умолчанию для тех, у кого он не установлен

if($('#viewprofile ').length){
var LoginU = $('#profile-name').text(), ss = $('#viewprofile #pa-fld1 strong a[href*="viewtopic.php"]').eq(-1), si=parseInt($(ss).attr('href').split(/=/)[1]), as = [],
blk = '<article class="stena"><h1>Последние подарки пользователя</h1>';
$.get('/export.php?type=atom&tid='+si+'&max='+mc, function(d) {
var d2 = $(d).find('entry');
$(d2).each(function (i){
as[i] = {a: $(this).find('name').text(), b: $(this).find('content').text()};
});	
function fs(arr){for (var i in arr){(arr[i].a==LoginU)? blk +='<div id ="s-'+i+'" class="mypost post-content">' : blk +='<div id ="s-'+i+'" class="anypost post-content">';
blk +='<img alt="'+arr[i].a+'"  src="" class="stenaava"><div class="stenafrom">'+arr[i].a+'</div>'+arr[i].b+'</div>';
}};
var unq = [...new Set(as.map(item => 'username[]='+item.a))].join('&');
$.getJSON('/api.php?method=users.get&'+unq+'&fields=avatar,username',function(j) {
var x = j.response.users;
for (var k in x){if (x[k].avatar=='') {x[k].avatar=anyava}; $('div[id*="s-"]>img[alt="'+x[k].username+'"]').attr('src',x[k].avatar);}
});
(ot==1)? fs(as): fs(as.reverse());
blk +='<a href="/viewtopic.php?id='+si+'" class="stenalink">Подарить подарок</a></article>';
$('#profile-signature').after(blk);
$('div[id*="s-"]').each(function (){
if( $(this).find('div.podarok').length ){$(this).addClass('show')}
});
$('div[id*="s-"]').each(function (){
if( $(this).find('div.shablon').length ){$(this).addClass('hide')}
});
});}
</script>

Куда вставлять ссылку на награды/подарки
Есть две опции вставки ссылки на награды/подарки. Ссылка в подписи или ссылка в дополнительном поле профиля.
Скрипт будет считывать ПОСЛЕДНЮЮ по счету ссылку из подписи или доп.поля.

Для ссылки в доп.поле (в скрипте сейчас именно такая версия):

if($('#viewprofile').length){
var LoginU = $('#profile-name').text(), ss = $('#viewprofile #pa-fld1 strong a[href*="viewtopic.php"]').eq(-1), si=parseInt($(ss).attr('href').split(/=/)[1]), as = [],
blk = '<article class="stena"><h1>Стена</h1>';

Для подписи:

if($('#viewprofile').length){
var LoginU = $('#profile-name').text(), ss = $('#profile-signature >ul >p >a[href*="viewtopic.php"]').eq(-1), si=parseInt($(ss).attr('href').split(/=/)[1]), as = [],
blk = '<article class="stena"><h1>Стена</h1>';

Выберете удобный для себя вариант и вставьте его в скрипт.

Как поменять надпись "подарок" на награду
Находим в скрипте две строчки:

blk = '<article class="stena"><h1>Последние подарки пользователя</h1>';

вместо красного - ваш заголовок наград/подарков

blk +='<a href="/viewtopic.php?id='+si+'" class="stenalink">Подарить подарок</a></article>';

вместо красного - ваш текст ссылки, ведущей на топик с наградами

СТИЛЬ
Вставляем в html-верх ИЛИ свой стиль БЕЗ тегов <style>:

Код:
<style>
.stena .post-content {display: none;}
.stena .post-content.hide {display: none !important;}

.stena {text-align: center;}
.stena .post-content {text-align: left;}
.stena .post-content:hover .podtext {opacity: 1;}

.stena .post-content.show {
display: inline-block;
width: 210px; /* максимальная ширина блока с подарком */
height: 210px; /* максимальная высота блока с подарком */
margin: 5px;
position: relative;
overflow: visible;
}

.stena .podimg img {
display: block;
position: absolute;
top: 0;
left: 0;
border-radius: 50%; /* закругление подарка в кружочек ( если не нужно - удалить эту строчку) */
z-index: 10;
max-width: 190px; /* максимальная ширина подарка */
max-height: 190px; /* максимальная высота подарка */
background-color: #ccc; /* цвет фона подарка */
border: 5px solid #284966; /* бордюрчик вокруг подарка (если не нужно - удалить строчку, если нужно меняем #284966 на свой цвет */
}

.stena .stenaava {
display: block;
position: absolute;
z-index: 30;
border-radius: 50%;
max-width: 34px; /* максимальная ширина авы дарителя */
left: 20px; /* двигаем аву дарителя влево */
top: 0px; /* двигаем аву дарителя сверху */
background-color: #224463; /* цвет фона авы */
border: 3px solid #214261; /* бордюрчик вокруг авы (если не нужно - удалить строчку, если нужно меняем #284966 на свой цвет */
}

.stena .stenafrom {
position: absolute;
z-index: 20;
background-color: #234563;  /* цвет фона на нике дарителя */
color: #fff;  /* цвет текста на нике дарителя */
font-size: 14px; /* размер шрифта в нике дарителя */
padding: 5px;
border-radius: 5px;  /* закругление границ (если не надо - удалить) */
transition: all 0.8s;
-webkit-transition: all 0.8s;
left: 40px; /* двигаем ник дарителя влево */
top: 0px; /* двигаем ник сверху */
padding-left: 25px; /* фоновый отступ слева (убрать, если не нужно) */
}

.stena .podtext {
position: absolute;
z-index: 40;
font-size: 14px; /* размер шрифта всплывающего описания */
background-color: #90a2c6;  /* цвет фона всплывающего описания */
padding: 5px;
border-radius: 5px; /* закругление границ (если не надо - удалить) */
text-align: left !important;
opacity: 0;
transition: all 0.8s;
-webkit-transition: all 0.8s;
top: 32px; /* двигаем всплывающее описание сверху */
width: 250px; /* ширина всплывающего описания */
}

.stena .podtext:before {
content: '';
border: 10px solid transparent; 
border-bottom: 10px solid #90a2c6; /* цвет фона всплывающего описания ЕЩЕ РАЗ (это стрелочка, меняем #90a2c6 на цвет, который вставляли для описания выше) */
position: absolute;
top: -18px; /* двигаем стрелочку вверх */
left: 60px; /* двигаем стрелочку влево */
z-index: 40;
}
.stena .post-content .podtext img {
max-width: 100px; /* максимальная ширина картинок в всплывающем ОПИСАНИИ (тексте дарителя) */
max-height: 50px; /* максимальная высота картинок в всплывающем ОПИСАНИИ (тексте дарителя) */
}

.stena .stenalink { /* ссылка "подарить подарок" */
display: block;
text-align: center;
font-size: 18px; /* размер текста */
text-transform: uppercase;
background-color: #b5cde3; /* цвет фона */
color: #1f4160; /* цвет текста */
padding: 5px;
text-decoration: none;
transition: all 0.8s;
-webkit-transition: all 0.8s;
}
.stena .stenalink:hover { /* ссылка "подарить подарок" при наведении курсора */
text-decoration: none;
color: #fff; /* цвет текста */
background-color: #507ca4; /* цвет фона */
}
</style>

Дополнительно
Если вы хотите скрыть форум подарков/наград с главной страницы, вы можете сделать это так:
Сокрытие любого элемента форума от определенных групп (CSS) - через стиль
Сокрытие форума/раздела - скриптом

Вы также можете оформить топик с подарками/наградами в виде формы отправки:
https://forumupload.ru/uploads/0007/e3/f7/2/947494.jpg
В этом вам поможет Скрипт создания анкет и форм v2
Шаблон анкеты будет таким:

Код:
[expl][block=shablon][b][color=red]Для отправки награды воспользуйтесь этим шаблоном![/color][/b][/block][/expl]
[block=podarok]
[expl]Ваш текст пожелания (будет виден при наведении курсора)[/expl]
[block=podtext]
 [textarea width=100%]*ваши пожелания[/textarea] 
[/block]
[expl]Вставьте картинку с подарком (используйте кнопку вставки картинки!):[/expl]
[block=podimg]
 [textarea width=100%]*ссылка на картинку с подарком в тегах [img] [/textarea] 
[/block]
[/block]

+6

539

Ранее тут выкладывал предыдущие наброски этого скрипта. Он предназначен для тех, кому лень читать, кто параллельно занят другим делом или у кого-то проблемы со зрением, главное не промахнуться при нажатии на иконку с мобильного. Иконка в этой версии не перекрывает ссылку-кнопку Поделится, а устанавливается рядом. Иконка берётся из иконочного шрифта от Гугл (Material+Icons), если он у вас установлен, то повторно его устанавливать нет нужды, если нет, то в html-верх подгружаем его

Код:
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

Скрипт настроен так, что иконка прослушивания текста автоматически будет окрашена в цвет ссылок на вашем форуме

Прослушивание текста в постах v.2.1.1

ДЕМО

https://forumupload.ru/uploads/0000/14/1c/15964/961728.gif

можно в html-низ или html-верх

Код:
<!--  Прослушивание текста в постах v.2.1.1-->
<script language="javascript">
$(document).ready(function(){$('.post').map(function (){
var ii = $(this).attr('id'),ws = window.speechSynthesis,p = $('.post-content>*:not(.post-sig)',this).text(),col=$('a.permalink').css('color');$.trim(p);
$('a.sharelink',this).before('<i class="material-icons" id="t-'+ii+'" style="float:right;margin-left:0.3em;margin-top:-5px;cursor:pointer;color:'+col+'" original-title="Прослушать текст">volume_down</i>');
var spi=(s,im,t)=>$(s).text(im).attr('original-title',t);$('#t-'+ii).tipsy({live:!0,fade:!0,gravity:'ne'}).on('click touchend',function(e){e.preventDefault();
if (!ws){$.jGrowl(UserLogin+', данный браузер не поддерживает синтез речи',{position:'center',life:4e3});}else{var ms = new SpeechSynthesisUtterance(p);ms.onend = function(){spi('#t-'+ii,'volume_down','Прослушать текст')};
if(!speechSynthesis.speaking){setTimeout(function(){ws.speak(ms)},100);spi(this,'volume_off','Остановить чтение');}else{setTimeout(function(){ws.cancel();},250);spi(this,'volume_down','Прослушать текст');}
}});});});
</script>

Если ваш браузер не поддерживает speechSynthesis вы увидите об этом всплывающее уведомление. На Андроид не все браузеры смогут воспроизвести вам текст. Поддержка speechSynthesis в мобильных браузерах проверенно присутствует в Google Chrome и Яндекс.Браузер

+5

540

Хотел данный скрипт установить на этот форум, но пока воздержусь из-за того, что в некоторых браузерах всплывающая подсказка может мерцать при наведении курсора. Может у кого-то будут идеи как это устранить. А пока выкладываю для всеобщего тестирования. Скрипт в том числе включает в себя предыдущий Рейтинг темы и подписчики, только в другом оформлении.
У платных форумных IPB и XenForo движков есть всплывающие при наведении превью темы и профиля пользователя. Выглядит это так:

IPB превью темы
XenForo превью темы
IPB превью профиля
XenForo превью профиля

Превью темы и профиля а-ля IPB и XenForo (+рейтинг темы и количество подписчиков)

Тестирование скрипта и дизайн подсказки: Герда

https://forumupload.ru/uploads/0000/14/1c/15964/t445437.jpg

в html-верх:

Код:
<!-- Превью темы и профиля -->
<style type="text/css">
.tooltipsy{
padding: 5px;
background-color: #f1f1f1;
border: 4px solid #5f95cc;
left: 50px;
max-width: 400px;
position: relative;
font-size: 14px;
margin-left:25px;
}
.tooltipsy:after{
content: '';
border: 11px solid transparent; border-top: 14px solid #5f95cc; 
position: absolute;
bottom: -26px;
left: 50px;
}
.tooltipsy .userInfo img, .tooltipsy .avatarTop img {
border-radius: 50%;
width: 52px;
height: 52px;
float: left;
margin: 0 5px 0 0;
}
.tooltipsy .userTitle h3,
.tooltipsy .userTitle h4 {margin: 0;}
.tooltipsy .userTitle h4 {font-weight: normal;font-style: italic;}
.tooltipsy .userBlurb p,
.tooltipsy .lastActivity p {margin: 0; word-spacing : 8px;}
.tooltipsy .topPreview, .tooltipsy .topicStart {
max-width: 400px;
overflow: hidden;
position: relative;
}
.tooltipsy .topPreview h2 {
margin: 0 !important;
font-size: 14px;
font-weight: normal;
}
.tooltipsy .topPreview h2 span {font-weight: bold;} 
.tooltipsy .topPreview .reit {color: #10c610;}
.tooltipsy .topPreview .subs {color: #c66510;}
.tooltipsy hr {
margin: 8px 5px;
border: none;
height: 1px;
background-color: #788593;
}
.tooltipsy .avatarTop {height: 52px;}
.tooltipsy .topicStart p {margin: 5px 0;}
</style>

в html-низ:

Код:
<!-- Превью темы и профиля -->
<script type="text/javascript" src="https://forumstatic.ru/files/0017/d8/50/82163.js"></script>

Живое ДЕМО

  • Курсор на теме/аватаре нужно удерживать 1.5 секунды, это сделано специально, чтоб не происходило ложного срабатывания при случайном коротком попадании курсора на объект.

  • Скрипт настроен так, что выдаёт из темы только первые 200 символов, этого должно быть достаточно, чтоб составить себе представление о теме и стоит её читать целиком. Причём такой способ предпросмотра темы на общий счётчик просмотров темы никак не влияет.

Внешнее оформление можно настроить под любой форум

+3


Вы здесь » Единый форум поддержки » Новые возможности форумов » Скрипты от пользователей 3