- Совместимость
- не проверялся на совместимость
- Изменения в БД
- требуются
- Автор
- frost444
- Общественное достояние
- да
Описание: добавляет возможность установки отметок "Мне нравится" у сообщений.
Возможности:
Возможности:
- Внешний вид как у известной социальной сети
- Работа на AJAX
- Всплывающее окно со списком выразивших симпатию
- Инструкция по установке
-
PHP:
Автор мода: frost444 //-----[Обновления]-----\\ |--(00.00.0000) 1) измененный код: --- 2) --- info: (1) --- \\-----[Обновления]-----// ####[ВЫПОЛНИТЬ]-----SQL CREATE TABLE `bb_like_post` ( `lk_post_id` mediumint(11) unsigned NOT NULL DEFAULT '0', `lk_autor_id` mediumint(11) unsigned NOT NULL DEFAULT '0', `lk_user_id` mediumint(11) NOT NULL DEFAULT '0', `lk_time` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`lk_autor_id`,`lk_post_id`,`lk_user_id`,`lk_time`) ); ALTER TABLE `bb_posts` ADD `like_for_post` INT( 10 ) NOT NULL DEFAULT '0'; ALTER TABLE `bb_users` ADD `user_likes` int(11) DEFAULT '0' NOT NULL; ####[КОНЕЦ]-----SQL ####[ОТКРЫТЬ]----- config.php $bb_cfg['like_post'] = array( 'on' => true, 'cache' => 24, //кеш держится в часах 'cache_autor' => 24, //кеш держится в часах ); ####[СОХРАНИТЬ_ФАЙЛ]#### ####[ОТКРЫТЬ]----- init_bb.php -----[найти]----- define('BB_USERS', 'bb_users'); -----[добавить после]----- define('BB_LIKE_POST', 'bb_like_post'); ####[СОХРАНИТЬ_ФАЙЛ]#### ####[ОТКРЫТЬ]----- ajax.php -----[найти]----- 'index_data' => array('guest'), -----[добавить после]----- 'like_post' => array('user'), -----[найти]----- последнюю скобку } -----[добавить перед]----- function like_post() { require(AJAX_DIR .'like_post.php'); } ####[СОХРАНИТЬ_ФАЙЛ]#### ####[ОТКРЫТЬ]----- viewtopic.php -----[найти]----- 'FORUM_ID' => $forum_id, -----[добавить после]----- 'LIKE_POST_ON' => ($bb_cfg['like_post']['on'] && $userdata['session_logged_in']), -----[найти]------ // // Go ahead and pull all data for this topic // // 1. Add first post of topic if it pinned and page of topic not first -----[найти]------ p.*, -----[ниже добавить]------ lk.*, -----[найти]------ LEFT JOIN ". BB_POSTS_HTML ." h ON(h.post_id = p.post_id) -----[ниже добавить]------ LEFT JOIN ". BB_LIKE_POST ." lk ON(lk.lk_post_id = p.post_id) -----[найти]------ // 2. All others posts -----[найти]------ p.*, -----[ниже добавить]------ lk.*, -----[найти]------ LEFT JOIN ". BB_POSTS_HTML ." h ON(h.post_id = p.post_id) -----[ниже добавить]------ LEFT JOIN ". BB_LIKE_POST ." lk ON(lk.lk_post_id = p.post_id) -----[найти]------ $template->assign_block_vars('postrow', array( -----[перед добавить]------ $set_like_post = ($postrow[$i]['poster_id'] <> $userdata['user_id'] && $postrow[$i]['poster_id'] > 0); -----[найти]------ $template->assign_block_vars('postrow', array( -----[ниже добавить]------ 'LIKE_POST' => $postrow[$i]['like_for_post'], 'SET_LIKE_POST' => $set_like_post, 'GET_LIKE_POST' => ($postrow[$i]['like_for_post'] > 0), ####[СОХРАНИТЬ_ФАЙЛ]#### ####[ОТКРЫТЬ]----- includes\ucp\usercp_viewprofile.php -----[найти]------ 'ICQ' => $profiledata['user_icq'], -----[ниже добавить]------ 'LIKES' => ($bb_cfg['like_post']['on']) ? $profiledata['user_likes'] : '', 'LIKES_ON' => $bb_cfg['like_post']['on'], ####[СОХРАНИТЬ_ФАЙЛ]#### ####[ОТКРЫТЬ]----- usercp_viewprofile.tpl -----[найти]------ <var class="ajax-params">{action: "edit_user_profile", id: "user_birthday"}</var> -----[ниже добавить]------ <var class="ajax-params">{action: "edit_user_profile", id: "user_likes"}</var> -----[найти]------ <tr> <th>{L_AGE}:</th> <td><b>{AGE}</b></td> </tr> <!-- ENDIF --> -----[ниже добавить]------ <!-- IF LIKES_ON --> <tr> <th>Лайки:</th> <td id="user_likes"><b class="editable">{LIKES}</b></td> </tr> <!-- ENDIF --> ####[СОХРАНИТЬ_ФАЙЛ]#### ####[ОТКРЫТЬ]----- viewtopic.tpl -----[в самом начале добавить]----- <link rel="stylesheet" href="{TPL_DIR}/popup.css?v={$bb_cfg['css_ver']}" type="text/css"> <!-- IF LIKE_POST_ON --> <link rel="stylesheet" href="{TPL_DIR}/like.css?v={$bb_cfg['css_ver']}" type="text/css"> <script type="text/javascript"> function like_post(post_id, mode, type = 0){ ajax.exec({ action : 'like_post', mode : mode, post_id : post_id, type : type, }); ajax.callback.like_post = function(data) { if(data.like){ $('#post_like_count-'+ data.post_id).html(data.html_count); if (!data.html_list) { $('#post_like_list-'+ data.post_id).removeClass('post_like'); }else{ $('#post_like_list-'+ data.post_id).addClass('post_like'); } $('#post_like_list-'+ data.post_id).html(data.html_list); } if(data.list){ $('#like_post').html(data.html); } }; } </script> <span id="like_post"></span> <!-- ENDIF --> -----[найти]----- <!-- IF postrow.EDITED_MESSAGE --><div class="last_edited">{postrow.EDITED_MESSAGE}</div><!-- ENDIF --> -----[добавить ниже]----- <!-- IF LIKE_POST_ON --> <div class="floatR"> <span class="like_list" style="display:none;" id="likelist-popup-{postrow.POST_ID}"></span> <div id="setlike-{postrow.POST_ID}"> <div class="post_like_wrap fl_r"> <div class="post_like floatL" onclick="like_post({postrow.POST_ID}, 'like');"> <span class="post_like_link floatL">Мне нравится</span> <i class="post_like_icon my_like floatL"></i> <span id="post_like_count-{postrow.POST_ID}" class="post_like_count floatL" >{postrow.LIKE_POST}</span> </div> <div id="post_like_list-{postrow.POST_ID}" class="<!-- IF postrow.GET_LIKE_POST -->post_like <!-- ELSE --><!-- ENDIF -->floatL"> <!-- IF postrow.GET_LIKE_POST --><span class="post_like_count floatR" onclick="like_post({postrow.POST_ID}, 'list');"><b>↑↑</b></span><!-- ELSE --><!-- ENDIF --> </div> </div> </div> </div> <!-- ENDIF --> ####[СОХРАНИТЬ_ФАЙЛ]####