Кнопка "Мне нравится" (аля ВК)

RomM1

Пользователь
Название: Кнопка "Мне нравится" аля Вк
Автор: RomM1
Описание: Кнопка "Мне нравится" аля Вк, думаю описания не нужно. Единственное - делал через mode, чтобы мод был резиновым. Сделал для постов, дальше сами можете клепать под что вам нужно. Если будут идеи, может и в фулл перейдет.
Cложность установки: Легкая
Время, необходимое для установки: ~ 5 минут

Сделать SQL запрос
Код:
CREATE TABLE `bb_like` (
  `post_id` mediumint(8) NOT NULL,
  `user_id` mediumint(8) NOT NULL,
  `likes` tinyint(1) NOT NULL
) ENGINE=MyISAM  DEFAULT CHARSET=utf8

Открыть ajax.php и найти
PHP:
'change_tor_status' => array('user'),
После добавить
PHP:
'like'              => array('user'),
Найти
PHP:
function index_data()
{
require(AJAX_DIR .'index_data.php');
}
После добавить
PHP:
function like()
{
  require(AJAX_DIR .'like.php');
}
Открыть viewtopic.php и найти
PHP:
}
else
{
$report_img = $report = '';
}
// Report [END]
После добавить
PHP:
$like = DB()->fetch_row("SELECT COUNT(likes) AS count_like FROM bb_like WHERE post_id = ". $postrow[$i]['post_id']);
if ($like['count_like'] == 0) $like = ''; else  $like = $like['count_like'];
Найти
PHP:
'POSTER_JOINED'      => ($bb_cfg['show_poster_joined']) ? $poster_longevity : '',
После добавить
PHP:
'LIKE'              => $like,
Открыть viewtopic.tpl и найти
HTML:
if(data.quote) $('textarea#message').attr('value', $('textarea#message').val() + data.message +' ').focus();
    if(data.message_html){
  $('#view_message').show();
  $('.view-message').html(data.message_html);
  initPostBBCode('.view-message');
var maxH  = screen.height - 490;
$('.view-message').css({ maxHeight: maxH });
}
};
</script>
<!-- ENDIF -->
После вставить
HTML:
<script type="text/javascript">
ajax.like = function (post_id) {
    ajax.exec({
        action: 'like',
        mode:  'post',
        post_id: post_id
    });
};
ajax.callback.like = function (data) {
    $('#like_'+ data.post_id).html(data.html);
}
</script>
Найти
HTML:
<div class="post_body">
<div class="post_wrap">
  <span id="pp_{postrow.POST_ID}">{postrow.MESSAGE}</span>
<span id="pe_{postrow.POST_ID}"></span>
{postrow.ATTACHMENTS}
</div><!--/post_wrap-->
<!-- IF postrow.SIGNATURE -->{postrow.SIGNATURE}<!-- ENDIF -->
<!-- IF postrow.EDITED_MESSAGE --><div class="last_edited">{postrow.EDITED_MESSAGE}</div><!-- ENDIF -->
</div><!--/post_body-->
После вставить
HTML:
<div class="post_like" onclick="ajax.like({postrow.POST_ID});">Мне нравится<span class="post_like_count">&nbsp;<span id="like_{postrow.POST_ID}">{postrow.LIKE}</span></span></div>
Открыть main.css и в конец добавить
HTML:
.post_like {
  background: #FFF;
  color: #2F5879;
  font-size: 10px;
  cursor: pointer;
  padding: 5px 6px;
  margin-top: -26px;
  right: 9px;
  position: absolute;
  white-space: nowrap;
 
  -webkit-border-radius: 3px;
  -khtml-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  overflow: hidden;
}
 
.post_like_count {
  font-weight: bold;
  color: #7295b2;
}
Файл like.php положить в папку ajax
 

Вложения

  • like.rar
    500 байт · Просмотры: 108

RomM1

Пользователь
Explosive, бред, зачем запрещать лайкать свои посты? Или так, показать мастерство пользования PHP?
PHP:
if ($user_id == $userdata['user_id']) $this->ajax_die("Лайкать свои записи - зло!");
 
E

Explosive

Гость
Я даже не тестировал, сразу сюда выложил) Только потом догнал что херню написал. Поэтому и удалил
 

Lange

Пользователь
RomM1, нашёл баг. Когда тему создаёшь, потом ещё сообщение пишешь, то нажимаешь лайк на любой своей записи, лайк появляется только в шапке темы.
Полтергейст какой то, обновил страницу, лайк появился на другой записи, нажал опять лайк в шапке, лайк убрался на другой записи...
 
Сверху