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

http://sf.uploads.ru/t/vxFy7.jpg

Автор: Deff

скрипт и описание

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

В начало HTML низ

<!--Закрытие Доступа гостям, кроме некоторых категорий и форумов -->
<div id="ListForumsAndCategor" style="display:none">

<p id=ONcategor><!-- ОТКРЫТЫЕ КАТЕГОРИИ -->
<i>Только для (!)НЕzZzАRЕГИСТРИРОВАHNЫХ пользователей</i>
<i>PR и ПРОДВИЖЕНИЕ</i>
<i>ДОБРО ПОЖАЛОВАТЬ!</i>
</p>

<p id=ONforums><!-- ОТКРЫТЫЕ ФОРУМЫ -->
<a href="http://mjacksoninfo.userforum.ru/viewforum.php?id=107">Открывающиеся ВОЗМОЖНОСТИ ФОРУМА</a>
<a href="http://mjacksoninfo.userforum.ru/viewforum.php?id=102">МЫ в СЕТИ</a>
<a href="http://mjacksoninfo.userforum.ru/viewforum.php?id=95">ДОБРО ПОЖАЛОВАТЬ!</a>
<a href="http://mjacksoninfo.userforum.ru/viewforum.php?id=32">ОБСУЖДАЕМ</a>
</p>

<p id=TextFromGuest><!-- ТЕКСТ ИЗВЕЩЕНИЯ ДЛЯ ГОСТЯ -->
<span style="padding:3px 3px 3px 20px;color:red;text-decoration: blink; background-color:#FFF081;display:block">У Вас нет прав доступа к данной странице.<p style="margin-left:-12px;"> Зарегистрируйтесь, и Вам откроется энциклопедия жизни и творчества короля Музыки - Майкла Джексона: 21000 сообщений, 1500 тем</p></span>

</p>

</div><script type="text/javascript">var Dostyp=true,textguest=$("#TextFromGuest").html();Guest=$("#navlogin").html()!=null,IndexPage=$(".punbb").attr("id")=="pun-index",Topic=$(".punbb").attr("id")=="pun-viewtopic",Forum=$(".punbb").attr("id")=="pun-viewforum";if(Guest&&IndexPage){var ListCategor=[];$("#ONcategor i").each(function(j){ListCategor[j]=$(this).text()});$("#pun-main .category h2 span").not("[class]").each(function(){var Lcat=$(this).parents(".category");Lcat.addClass("Hide");for(var i in ListCategor){if(ListCategor[i]==$(this).text()){Lcat.removeClass("Hide");Lcat.addClass("Nohide");ListCategor.splice(i,1);break;}}});$("#pun-main .category.Hide").hide()};if(Guest&&(Topic||Forum)){var Fid=$("html head:first link[rel='up']");var FidRSS=$("html head:first link[rel='alternate']");if(Fid.html()!=null){Fid=Fid.attr("href")}else{Fid=FidRSS.attr("href").replace(/export\.php\?type=rss&f/img,'viewforum.php?')}Dostyp=false;$("#ONforums a").each(function(j){if($(this).attr("href")==Fid){Dostyp=true}})};if(!Dostyp){document.getElementById("pun-main").innerHTML="<div id=\"pun-main\" class=\"main\" style=\"margin-top: -25px!important;\"><h1><span>Информация</span></h1><div class=\"info\"><div class=\"container\">"+textguest+"</div></div></div>"}</script><!-- End// Закрытие Доступа гостям   -->

Пояснения:

Cиним в тегах <i> прописываем  названия нескрываемых категорий;
Красным - адреса ссылок и названия нескрываемых форумов.
Зеленым - HTML-контент вашего сообщения( или просто текст)


Закрытие тем эффектом затемнения от гостя со списком исключений
Закрытие тем затемнением для гостя, кроме указанных форумов

[html]<center><img src="http://s6.uploads.ru/tOmsM.jpg" class="postimg" width="350px"></center>[/html]
Автор: Deff

скрипт и описание

Скрипт спецом вынуждает к реге или входу. В теме кликайте на одну из ссылок в блоке.
Можно добавить ссылку в конец контента центрального блока в теме <a href="/">Вернуться на Главную</a>

В HTML НИЗ

<!--Закрытие тем для гостя затемнением, кроме указанных форумов-->
<style type="text/css">
#wrp-p {display:none;position:fixed;z-index:3000;width:100%;height:100%;left:0;top:0;background-color:rgba(0,0,0,.87);}
#wrp-p .cnt{
  position:absolute;
  margin:auto;
  border-radius:12px;
  padding:23px;
  top:0;bottom:0;left:0;right:0;
  width:320px;
  height:170px;
  color:#fff;
  background-color:rgba(0,0,0,.7);
  border:double 5px rgba(0,0,0,.7);
  box-shadow: 0 0 22px rgba(255,255,255,.2);
  font: normal normal 400 16px/normal "Times New Roman";
}
#wrp-p .cnt pre{margin-top:14px;}
</style>
<div id="wrp-p"><div class="cnt"><pre align=center>
Привет Гость!
Чтобы просмотреть тему,
<a href="/login.php">войдите</a> или <a href="/register.php">зарегистрируйтесь</a>
</pre></div></div>
<script type="text/javascript">
//Массив ссылок на форумы открытых Гостю
var openGuestForum = "http://forum.mybb.ru/viewforum.php?id=5, http://forum.mybb.ru/viewforum.php?id=7"
.split(/\s*,\s*/);
if($.inArray($('#pun-crumbs1 .crumbs a[href*="/viewforum.php?id="]')[0].href,openGuestForum)==-1&&$('.gid3 #pun-post,.gid3 #pun-viewtopic').length)
$('#wrp-p').show();
</script>

Красным - Ваши ссылки на форумы (разделы в категориях) открытые гостю для просмотра тем


Запрет просмотра тем гостям с инвайт-кодом для просмотра.
Гостевой просмотр тем по выданному инвайту, или же запрет просмотра тем гостем.
При заходе на сайт всплывает окно, в котором будет поле для ввода инвайт-кода для просмотра (задается администратором), опционально вместо инвайта прописывается полный запрет на просмотр топиков.

http://s3.uploads.ru/i9PoB.png

Автор: Deff

скрипт и описание

В HTML низ или верх

<noscript><meta http-equiv="refresh" content="0;URL=http://qps.ru/kYE3n" /></noscript>
    <script src="https://forumstatic.ru/files/0011/da/9b/91291.js" data-arr="WseqeE3a2ed,3"></script>

Синим - код инвайта (Вставляем своё придуманное), через запятую время хранения в часах

Если ставим 0 (вместо инвайта и времени):

<script src="https://forumstatic.ru/files/0011/da/9b/91291.js" data-arr="0"></script>

То запрещаем просмотр тем под гостем

PS: Уведомление про инвайты, способ раздачи и связи с Администрацией размещаем, к примеру, в Объявлении на Главной странице.


Запрет доступа в определенные темы со списком исключений
Запрещает ВСЕМ, кроме заданных пользователей, посещать определенный список топиков.

Автор: Alex_63

скрипт

В HTML верх

<!--Запрет доступа в определенные темы-->
    <style id="hide-01234">.main{display:none}</style>
    <script type="text/javascript">
    (function() {
        //         ID темы   //ID пользователей с допуском к теме
        hideTopic(38,[3,4,15]);    //строку размножаем для нужных тем и юзеров

       function hideTopic(tid,UserLst){function s(){$('#hide-01234').replaceWith('');};
         var tst=false,reg=/id=(\d+)$/;if($('#pun-searchposts').length){tst=true;s();}
         if($('#pun-viewtopic').length&&+$('link[rel="alternate"]')[0].href.match(/id=(\d+)$/)[1]==tid&&UserLst.indexOf(UserID)==-1)tst=true;
         if($('#pun-post').length&&+$('link[rel="up"]')[0].href.match(reg)[1]==tid&&UserLst.indexOf(UserID)==-1)tst=true;
         if(tst)$(document).ready(function(){clearInterval(window.MYBB_bindVideoScriptITV);
           if($('#pun-searchposts').length){$('.post').has('h3 a[href$="topic.php?id='+tid+'"]').hide();return}
           var h2='<h2><span>Информация</span></h2>',cr=' »&nbsp;<a href="/">'+$('#pun-title h1').text()+'</a> »&nbsp;Информация';
           var text=h2+'<div class=info><div class=container>Вы не имеете прав для доступа к этой странице.</div></div>';
           document.title=$('#pun-title h1').text();$('#pun-main').html(text);s();$('.crumbs').html(cr);
         }); else s()
       };
    }())
    </script>


Допуск в тему/форум только заданных пользователей
(с проверкой доступа в поиске)
Запрещает просмотр заданных разделов и тем ВСЕМ, кроме указанных пользователей.

Автор: Deff

скрипт и описание

Поскольку попросили добавить в скрипт Допуск в Тему или форум определенной группы лиц строго по Списку скрытие не только непосредственно в форуме или теме, но так же и в поиске тем и сообщений, - сваял такой вариант:
В HTML верх  (не в HTML низ!)

<!-- Допуск в форум/тему по списку -->
    <script type="text/javascript">
    setAccess('Название форума или темы', [ 'Ник_1', 'Ник_2', 'Ник_3' ]);
    setAccess('Название форума или темы', [ 'Ник_1', 'Ник_2', 'Ник_3' ]);

    function setAccess(title, usersList) {
      var u = window.UserLogin || '';
      $().pun_mainReady(function(){
        if ($('#pun-searchposts,#pun-searchtopics').length) $('.post,.main table tbody tr').each(function() {
          var ttl = $(this).find('h3 span').text() || $(this).find('.tc2').text() + $(this).find('.tcl').text();
          if (ttl.indexOf(title) != -1 && usersList.indexOf(u) == -1) $(this).remove()
        });
        if (!($('.crumbs').text().indexOf(title) != -1 && usersList.indexOf(u) == -1)) return;
        var s = 'Информация',s1 =$('#pun-title h1>span').text(); document.title = s1;
        var s2 = 'Вы не имеете прав для доступа к этой странице.';
        var L=' »&nbsp;<a href="/">' + s1 + '</a> »&nbsp;' + s; $('.crumbs').html(L);
        $('#pun-main').html('<h1><span>' + s + '</span></h1><div class=info><div class=container>' + s2 + '</div></div>');
        $().pun_aboutReady(function(){$('#pun-crumbs2>.crumbs').html(L);});
      });
    };
    </script>

Строки жирным - размножаем для нужных форумов/тем и пользователей (вместо красного пишем свои данные)


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

Автор: Alex_63

скрипт и описание

*Для модераторов и администраторов - ограничений нет.
В HTML низ:

<!-- Запрет доступа в темы определенного форума -->
    <script>(function(){
    var arrForums = [2,14,69]; //Массив тем с запретом доступа юзерам, у которых менее N сообщений
    var numPosts = 10; // Необходимое количество сообщений для доступа в темы указанных форумов
    if(typeof(UserPosts)=='undefined'){UserPosts=0;}var st='Вам необходимо набрать еще '+(numPosts-UserPosts)+' сообщений.';
    if(GroupID==3){st='<a href="/login.php">Войдите</a> или <a href="/register.php">зарегистрируйтесь</a>, чтобы просматривать темы в этом форуме.';}
    if(GroupID>2&&UserPosts<numPosts&&$('#pun-viewtopic').length&&$.inArray(+($('link[rel=up]').attr('href').split('id=')[1]),arrForums)!=-1){
      $('#pun-main').html('<h1><span>Информация</span></h1><div class=info><div class=container>\
      Вы не имеете прав для доступа к этой странице. '+st+'</div></div>');
      document.title = $('#pun-title h1').text();
    }}())
    </script>


Скрытие форумов от заданных пользователей
Закрывает доступ к определенным форумам и темам в них для конкретных пользователей.

Автор: Alex_63

скрипт и описание

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

<!-- Скрытие форума от некоторых пользователей / © Alex_63 -->
    <script type="text/javascript">
    function HideForum(fid,userArr){
      if($.inArray(UserID,userArr)!=-1){var Lsel=$('tr#forum_f'+fid).parents('.category');
        if(Lsel.find('tr[id^="forum"]:visible').length<=1){Lsel.remove()}else{
        $('.category tr#forum_f'+fid).remove();}
        var hSt='<h1><span>Информация</span></h1>';
        var hCn='<div class=info><div class=container>';
        hCn   +='Вы не имеете прав для доступа к этой странице.';
        hCn   +='</div></div>';var txt=$('#pun-title h1').text();
        var crCnt=' »&nbsp;<a href="/">'+txt+'</a> »&nbsp;Информация';
        var lnk = $('head>link[rel="alternate"]').attr('href');
        var lnk2= $('head>link[rel="up"]').attr('href');
        if(lnk&&$('#pun-viewforum').length&&(+(lnk.split('id=')[1]))==fid){
        document.title=txt;$('#pun-main').html(hSt+hCn);$('.crumbs').html(crCnt);}
        $('#pun-searchtopics').find('.tc2 a[href$="m.php?id='+fid+'"]')
        .parents('tr').remove();
        $('#pun-searchposts').find('.post h3>span>a[href$="m.php?id='+fid+'"]')
        .parents('.post').remove();
        if(lnk2&&$('#pun-viewtopic').length&&(+(lnk2.split('id=')[1]))==fid){
        document.title=txt;$('#pun-main').html(hSt+hCn);$('.crumbs').html(crCnt);}
      }
    }

    HideForum(4,[12,31]);
    HideForum(6,[8,11]);
    </script>

Синим - ID форума, красным - ID пользователей, которым запрещен доступ в указанный форум и темы в нем

Строку

HideForum(6,[8,11]);

размножаем для нужных форумов.


Скрытие форумов от заданных групп
Закрывает доступ к определенным форумам и темам в них для конкретных ГРУПП пользователей.

Автор: Alex_63

скрипт и описание

Вариант: Скрываем форум от некоторых групп
В HTML низ:

<!-- Скрытие форума от некоторых групп / © Alex_63 -->
    <script type="text/javascript">
    function HideForum(fid,groupArr){
      if($.inArray(GroupID,groupArr)!=-1){var Lsel=$('tr#forum_f'+fid).parents('.category');
        if(Lsel.find('tr[id^="forum"]:visible').length<=1){Lsel.remove()}else{
        $('.category tr#forum_f'+fid).remove();}
        var hSt='<h1><span>Информация</span></h1>';var hCn='<div class=info><div class=container>';
        hCn+='Вы не имеете прав для доступа к этой странице.';hCn+='</div></div>';var txt=$('#pun-title h1').text();
        var crCnt=' »&nbsp;<a href="/">'+txt+'</a> »&nbsp;Информация';
        var lnk = $('head>link[rel="alternate"]').attr('href');var lnk2= $('head>link[rel="up"]').attr('href');
        if(lnk&&$('#pun-viewforum').length&&(+(lnk.split('id=')[1]))==fid){
        document.title=txt;$('#pun-main').html(hSt+hCn);$('.crumbs').html(crCnt);}
        $('#pun-searchtopics').find('.tc2 a[href$="m.php?id='+fid+'"]').parents('tr').remove();
        $('#pun-searchposts').find('.post h3>span>a[href$="m.php?id='+fid+'"]').parents('.post').remove();
        if(lnk2&&$('#pun-viewtopic').length&&(+(lnk2.split('id=')[1]))==fid){
        document.title=txt;$('#pun-main').html(hSt+hCn);$('.crumbs').html(crCnt);}
      }
    }      //Форум  //Группы
    HideForum(14,[5,6]);
    HideForum(18,[4,6]); //Размножаем для нужных групп и форумов
    </script>

Надежнее и проще скрыть форум в настройках для нужных групп (Администрирование - Группы - Редактировать)


Запрет доступа к форумам по группам и активности
Запрет доступа пользователям определенных групп в некоторые форумы, если последнее сообщение отправлено более N часов назад

Автор: Alex_63

скрипт и описание

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

<script type="text/javascript">
    (function(){
      var Groups_Hide = [4,6]; //Группы с запретом доступа;
      var forum_ArrHide = [24,60]; //Массив форумов для скрытия;
      var num_hours = 480; //Время с момента написания последнего поста(в часах);
      if($.inArray(GroupID,Groups_Hide)!=-1){
        var tim0=RequestTime;var tpst=UserLastPost;var tim1=tim0-tpst;
        tim1=(tim1/3600);if(tim1 < num_hours)return;
        for(var i=0;i<forum_ArrHide.length;i++){
        var fid=forum_ArrHide[i];var sss=parseInt(num_hours/24);
        var hSt='<h1><span>Информация</span></h1>';
        var hCn='<div class=info><div class=container>';
        hCn   +='Вы не имеете прав для доступа к этой странице. Ваше последнее сообщение было отправлено более '+sss+' суток назад. ';
        hCn   +='Для просмотра данной страницы Вам нужно отправить хотя бы одно сообщение.';
        hCn   +='</div></div>';var txt=$('#pun-title h1').text(),crCnt=' »&nbsp;<a href="/">'+txt+'</a> »&nbsp;Информация';
        var lnk = $('head>link[rel="alternate"]').attr('href'),lnk2= $('head>link[rel="up"]').attr('href');
        if(lnk&&$('#pun-viewforum').length&&(+(lnk.split('id=')[1]))==fid){
        document.title=txt;$('#pun-main').html(hSt+hCn);$('.crumbs').html(crCnt);}
        $('#pun-searchtopics').find('.tc2 a[href$="m.php?id='+fid+'"]').parents('tr').remove();
        $('#pun-searchposts').find('.post h3>span>a[href$="m.php?id='+fid+'"]').parents('.post').remove();
        if(lnk2&&$('#pun-viewtopic').length&&(+(lnk2.split('id=')[1]))==fid){
        document.title=txt;$('#pun-main').html(hSt+hCn);$('.crumbs').html(crCnt);}}
      }
    }());
    </script>

Настройки:
Groups_Hide = [4,6] - Группы, которым запрещен доступ в указанные ниже форумы, если последний пост написан более N часов назад
forum_ArrHide = [24,60] - Форумы, в которые запрещен доступ указанным группам
num_hours = 480 - Время с момента написания последнего поста; желательно указывать значение, кратное 24