Хак сообщения и приглашения в друзья.

1315
Я последнее время опубликовывал много вопросов на форуме и на них не кто не отвечал. И сейчас жду помощи в нескольких темах. Я вот и подумал хватит только пользоваться. Чтобы тебе помогали помогай сам. Вот и выкладываю первый свой хак. Правда корявый, не пинайте сильно. Кстати кто научит делать всё по людячи (чтобы всё ставилось как плагин или как модуль) буду благодарен.

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


На счёт оформления прошу меня извинить, но я убрал все стили дабы не было сходств zst . Вы можете оформить данное окошко как хотите CSS-ом. Теперь непосредственно сам хак.

1. Либо вставляем данный код в хед (<head>ну типа тут</head>) вот, либо просто в файлик .jss заливаем и патом подключаем его всё там же в хеде.

Код PHP:
<script>$(function() {
    $('my_messages').ready(function(){
        $('#overlay').fadeIn('fast',function(){
            $('#box').animate({'top':'200'},500);
        });
    });
    $('#boxclose').click(function(){
        $('#box').animate({'top':'-200px'},500,function(){
            $('#overlay').fadeOut('fast');
        });
    });

});
</script>
Тут настраивается откуда будет выезжать блок и с какой скоростью, и привязывается какой что именно будет выезжать и в какой момент. Я сам не силён в скриптах js но тут вроде все понятно.

2. Идём дальше и давайте пропишим сначала ксс код для нашего всплывающего блока. Это опять же можно сделать несколькими способами либо в нашь style.css либо в любой другой и подключить его командой <link href="/templates/_default_/css/ваш фаил" rel="stylesheet" type="text/css" /> ну 3 не буду говорить он тупой я думаю некто не прописывает стили в темплете.

Код PHP:
.overlay{
    background:transparent url(../images/overlay.png) repeat top left;
    position:fixed;
    top:0px;
    bottom:0px;
    left:0px;
    right:0px;
    z-index:100;
}

.box{
    position:fixed;
    top:-200px;
    left:30%;
    right:30%;
    background-color:#fff;
    color:#7F7F7F;
    padding:20px;
    border:2px solid #003300;
    -moz-border-radius: 10px;
    -webkit-border-radius:10px;
    -khtml-border-radius:10px;
    -moz-box-shadow: 0 1px 5px #333;
    -webkit-box-shadow: 0 1px 5px #333;
    z-index:101;
}

a.boxclose{
    float:right;
    width:26px;
    height:26px;
    margin-top:-30px;
    margin-right:-30px;
    cursor:pointer;
}

.box h1{
	text-align:center;
    border-bottom: 2px solid #003300;
    margin:-20px -20px 0px -20px;
    padding:10px;
    background-color:#336699;
    color:#003366;
    -moz-border-radius:10px 10px 0px 0px;
    -webkit-border-top-left-radius: 10px;
    -webkit-border-top-right-radius: 10px;
    -khtml-border-top-left-radius: 10px;
    -khtml-border-top-right-radius: 10px;
}
ну думаю фон и картинку закрытия блока сами поставити какая вам нужна. Я например закрытие блока вообще убрал.

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

3. Нам нужно чтобы. если есть приглашения дружить либо сообщения, нам высветило наш блок. Значит добавляем кусочек кода в фаил \templates\ваш шаблон\modules\mod_menu.tpl спросите почему именно сюда, и причём тут меню? Я вам отвечу, потому что я не знаю как можно это ещё реализовать нужно чтобы в случае если имеются новые сообщения прогрузился див с ид бокс, к которому перекреплён джейкуери скрипт, во общем знающие люди могут посмеяться, а могут рассказать как это устроить получше.
3.1 заходим в \templates\ваш шаблон\modules\mod_menu.tpl и в самом в самом низу добавляем данный код.

Код PHP:
{* ==================================Сообщения======================================= *}

        {if $newmsg || $usr.is_new_friends}
        <div class="overlay" id="overlay" style="display:none;"></div>
            <div class="box" id="box">
                <h1>Важное сообщение</h1>
                {if $newmsg}
                <div class="usr_friends_query">
                    У Вас есть непрочитанные <a class="has_new" href="/users/{$id}/messages.html">сообщения ({$newmsg})</a>
                </div>
                {/if}
                {if $usr.is_new_friends}
                <div class="usr_friends_query">{$usr.new_friends}</div>
                {/if}
            </div>
        </div>
        {/if}
И оформляем как вам угодно. Ну возможно и туповато, но такова тут нет есть только платный модуль козаностра если я не ошибаюсь.
И кстати библеотека джейкуери уже у нас подключена.
Ну и если кому помогло можете поощрить
Реквизиты для поощрений
Комментарии (32)
͡﴾͡๏̯͡๏﴿ 16 декабря 2011 в 16:05 +1
Демо можно посмотреть?Если я зарегистрируюсь то думаю увижу работу этого хака(приветственное сообщение)
Taurus 16 декабря 2011 в 16:07 +1
Думаю только через пару дней как я перенесу с локальной машины на свой проект.
Darik 16 декабря 2011 в 16:28 +2
нужный хак +1
alex16407 16 декабря 2011 в 16:56 0
Спасибо!
Эдька 16 декабря 2011 в 17:10 0
у козыностры что то подобное есть
Taurus 16 декабря 2011 в 18:20 +1
Что я и написал в описании, но у него платно. Ну у него думаю поудобнее и по симпотичнее, хотя у меня в хорошей ксс обработке тоже очень даже нечего получилось.
Максим Шорин 16 декабря 2011 в 18:36 +3
Я вот и подумал хватит только пользоваться.
Уважаю ! smile
PrazdNik 17 декабря 2011 в 07:06 0
хорошая штука +. Это работает когда юзер на сайте онлайн или всегда, даже когда он зашел на сайт, а тут всплывает это окошко?
Taurus 17 декабря 2011 в 10:52 +1
нееет ну конечно же когда вы залогинетесь и если есть новые сообщения то высветится, а если вы имели ввиду что надо ли обновить страницу, то да, вообщем скрипт при каждой загрузке любой страницы проверяет есть ли у вас сообщения. Надеюсь я ответил на вашь вопрос
PrazdNik 17 декабря 2011 в 21:57 0
ответил, спасибо)
Алексей 17 декабря 2011 в 11:16 0
Спасибо, работает на 5+
Taurus 17 декабря 2011 в 11:18 +2
Ну это самое главное, я много хаков себе сделал, боялся упустить что то. Помог бы кто разобраться как их ввиде модулей или плагинов делать.
Алексей 17 декабря 2011 в 12:05 +2
Выложи ещё какие нибудь хаки интересные. Будем все рады)
Tirpits 21 декабря 2011 в 02:41 0
на 1.9 у меня работает так: выскакивает это окошко блокируя все кнопки сайта и тишина так и висит, вставил кнопку закрытия окна, а она не появляется и все.....конец....
Taurus 21 декабря 2011 в 08:57 0
Она и будет блокировать всё пака не закроется окошко, кнопку закрытия нужно прописать дивом с идентификатором клозе как в ксс(там есть такой класс). И окошко закрыть можно нажатием на либо принять отклонить предложение дружбы либо крестиком на закрытие. С работы приду доработаю и ответ свой и хак.
Tirpits 21 декабря 2011 в 17:50 0
буду ждать, очень нужен это хак
Taurus 21 декабря 2011 в 19:30 0
Увас выводит надпись о предложении дружбы или письме?
Tirpits 22 декабря 2011 в 03:59 0
-да, это окошко появляется (выезжает с верху), (срочное сообщение, у вас 1 письмо...)
не появляется кнопка "закрыть" сообщение...
Александр I 25 декабря 2011 в 09:46 0
На страницу выводится 15 сообщений.
Если пользователю пришло, например 40 сообщений, то он не сможет прочитать сообщения, которые на находятся на стр. 2, 3 и т.д., т.к. нет кнопки "закрыть окно", а на странице ссылки не активны.
Как исправить?
Taurus 25 декабря 2011 в 19:24 0
кнопка закрыть там вообще есть пропишите сылку с класом boxclose (a.boxclose) и разместите в шапке данного окна и тогда всё будет закрываться
Александр I 25 декабря 2011 в 19:30 0
Что прописать в <a href="">?
Taurus 25 декабря 2011 в 19:32 0
не могу вспомнить, я у себя убрал, помоему просто #
Александр I 25 декабря 2011 в 19:39 0
Просто # не катит. Пробовал.
Taurus 25 декабря 2011 в 19:52 0
<a class="box-close" id="box-close"></a>

а такой вариант не прокатит поробуйте. Просто нет времени пака этим заниматься,
Taurus 25 декабря 2011 в 19:53 0
ой вообщем тоже самое только и класс и ид boxclose
Александр I 25 декабря 2011 в 19:55 0
Не, фигня...
Taurus 25 декабря 2011 в 20:00 0
Код PHP:
<script>$(function() {
    $('my_messages').ready(function(){
        $('#overlay').fadeIn('fast',function(){
            $('#box').animate({'top':'200'},500);
        });
    });
    $('#boxclose').click(function(){
        $('#box').animate({'top':'-200px'},500,function(){
            $('#overlay').fadeOut('fast');
        });
    });

});
</script>
если посмотреть на данный код, а именно на вот этот кусочек $('#boxclose').click(function(){ то всё должно выглядеть именно так как я сказал сделайте такую вот ссылку <a id="box-close">Закрыть</a> и пропишите ниже н1 там где авжное сообщение написано. по логики должно сработать и не забывайте сто опера плохо обновляет страницы беря их из кеша попробуйте в мазиле
Taurus 25 декабря 2011 в 20:00 0
Да блин опять ошибся((((( <a id="boxclose">Закрыть</a> вот так вот
Александр I 25 декабря 2011 в 20:17 0
Спасибо. Работает.
Ingvarruss 5 февраля 2012 в 23:43 0
Не пойму. Вроди как всё правильно сделал, но окошко не выезжает.
vitalson9 10 февраля 2012 в 13:04 0
1.9 приглошение на дружбу окошко вылазиет а вот на сообщение не реагирует
Camfrog 6 июля 2012 в 03:55 0
отлично! +1