Мод очень удачный и самый мощный в своем роде, приятное дополнение к форумным темам. Позволит вашим пользователям обзаводиться собственными Дневниками (Блогами), функционал вас порадует, помимо создания обычных записей пользователи смогут
- комментировать свои и чужие записи
- ставить оценки записям (рейтинг в Блогах)
- создавать голосования и опросы в записях
- читать RSS ленты записей
- сделать свой индивидуальный стиль Блога
Вообщем мод не так уж тяжел в установке и настройке, скачиваем и устанавливаем по инструкции
Разумеется, после установки нам надо руссифицировать мод, руссификация ниже Обе папки из архива размещаем в корне форума. Собственно на этом все, сам по себе мод может быть подвергнут множеству доработок на любой вкус, если будут пожелания, то отписываемся в данной темке
Наверняка вы заметили у меня на Портале чудесный блок, в котором отображается частично текст самой последней записи в Блогах, а так же список последних записей и комментариев. Аккуратненько и удобно. Хотелось бы поделиться им с вами. Скачиваем дополнение и устанавливаем по инструкции После установки данной модификации, открыть
Код: Выделить всё
function get_complete_blog_tracking($blog_id, $topic_ids, $global_announce_list = false)
{
global $config, $user, $db;
include($phpbb_root_path . 'blog/includes/constants.php' . $phpEx);
$last_read = array();
if (!is_array($topic_ids))
{
$topic_ids = array($topic_ids);
}
$sql = 'SELECT blog_reply_id, mark_time
FROM ' . BLOGS_REPLY_TRACKS_TABLE . "
WHERE user_id = {$user->data['user_id']}
AND " . $db->sql_in_set('blog_reply_id', $topic_ids);
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$last_read[$row['blog_reply_id']] = $row['mark_time'];
}
$db->sql_freeresult($result);
$topic_ids = array_diff($topic_ids, array_keys($last_read));
if (sizeof($topic_ids))
{
$sql = 'SELECT blog_id, mark_time
FROM ' . BLOGS_TRACKS_TABLE . "
WHERE user_id = {$user->data['user_id']}
AND blog_id " .
(($global_announce_list && sizeof($global_announce_list)) ? "IN (0, $blog_id)" : "= $blog_id");
$result = $db->sql_query($sql);
$mark_time = array();
while ($row = $db->sql_fetchrow($result))
{
$mark_time[$row['blog_id']] = $row['mark_time'];
}
$db->sql_freeresult($result);
$user_lastmark = (isset($mark_time[$blog_id])) ? $mark_time[$blog_id] : $user->data['user_last_blog_mark'];
foreach ($topic_ids as $blog_reply_id)
{
if ($global_announce_list && isset($global_announce_list[$blog_reply_id]))
{
$last_read[$blog_reply_id] = (isset($mark_time[0])) ? $mark_time[0] : $user_lastmark;
}
else
{
$last_read[$blog_reply_id] = $user_lastmark;
}
}
}
return $last_read;
}
function markread_blog_post($mode, $blog_id = false, $blog_reply_id = false, $post_time = 0, $user_id = 0)
{
global $db, $user, $config;
if ($blog_id === false)
{
return;
}
if ($config['load_db_lastread'] && $user->data['is_registered'])
{
$sql = 'UPDATE ' . BLOGS_REPLY_TRACKS_TABLE . '
SET mark_time = ' . (($post_time) ? $post_time : time()) . "
WHERE user_id = {$user->data['user_id']}
AND blog_reply_id = $blog_reply_id";
$db->sql_query($sql);
// insert row
if (!$db->sql_affectedrows())
{
$db->sql_return_on_error(true);
$sql_ary = array(
'user_id' => (int) $user->data['user_id'],
'blog_reply_id' => (int) $blog_reply_id,
'blog_id' => (int) $blog_id,
'mark_time' => ($post_time) ? (int) $post_time : time(),
);
$db->sql_query('INSERT INTO ' . BLOGS_REPLY_TRACKS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
$sql = 'INSERT INTO ' . BLOGS_REPLY_TRACKS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
$db->sql_return_on_error(false);
}
}
return;
}
Код: Выделить всё
function get_complete_blog_tracking($blog_id, $topic_ids, $global_announce_list = false)
{
global $config, $user, $db, $phpbb_root_path, $phpEx;
include($phpbb_root_path . 'blog/includes/constants.' . $phpEx);
$last_read = array();
if (!is_array($topic_ids))
{
$topic_ids = array($topic_ids);
}
$sql = 'SELECT blog_reply_id, mark_time
FROM ' . BLOGS_REPLY_TRACKS_TABLE . "
WHERE user_id = {$user->data['user_id']}
AND " . $db->sql_in_set('blog_reply_id', $topic_ids);
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$last_read[$row['blog_reply_id']] = $row['mark_time'];
}
$db->sql_freeresult($result);
$topic_ids = array_diff($topic_ids, array_keys($last_read));
if (sizeof($topic_ids))
{
$sql = 'SELECT blog_id, mark_time
FROM ' . BLOGS_TRACKS_TABLE . "
WHERE user_id = {$user->data['user_id']}
AND blog_id " .
(($global_announce_list && sizeof($global_announce_list)) ? "IN (0, $blog_id)" : "= $blog_id");
$result = $db->sql_query($sql);
$mark_time = array();
while ($row = $db->sql_fetchrow($result))
{
$mark_time[$row['blog_id']] = $row['mark_time'];
}
$db->sql_freeresult($result);
$user_lastmark = (isset($mark_time[$blog_id])) ? $mark_time[$blog_id] : $user->data['user_last_blog_mark'];
foreach ($topic_ids as $blog_reply_id)
{
if ($global_announce_list && isset($global_announce_list[$blog_reply_id]))
{
$last_read[$blog_reply_id] = (isset($mark_time[0])) ? $mark_time[0] : $user_lastmark;
}
else
{
$last_read[$blog_reply_id] = $user_lastmark;
}
}
}
return $last_read;
}
function markread_blog_post($mode, $blog_id = false, $blog_reply_id = false, $post_time = 0, $user_id = 0)
{
global $db, $user, $config;
if ($blog_id === false)
{
return;
}
if ($config['load_db_lastread'] && $user->data['is_registered'])
{
$sql = 'UPDATE ' . BLOGS_REPLY_TRACKS_TABLE . '
SET mark_time = ' . (($post_time) ? $post_time : time()) . "
WHERE user_id = {$user->data['user_id']}
AND blog_reply_id = $blog_reply_id";
$db->sql_query($sql);
// insert row
if (!$db->sql_affectedrows())
{
$db->sql_return_on_error(true);
$sql_ary = array(
'user_id' => (int) $user->data['user_id'],
'blog_reply_id' => (int) $blog_reply_id,
'blog_id' => (int) $blog_id,
'mark_time' => ($post_time) ? (int) $post_time : time(),
);
$db->sql_query('INSERT INTO ' . BLOGS_REPLY_TRACKS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
$sql = 'INSERT INTO ' . BLOGS_REPLY_TRACKS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
$db->sql_return_on_error(false);
}
}
return;
}
Код: Выделить всё
include($phpbb_root_path . 'portal/block/top10_blogs.'.$phpEx);
Код: Выделить всё
<!-- IF S_DISPLAY_BLOGS -->
<!-- INCLUDE portal/block/top10_blog.html -->
<!-- ENDIF -->
После долгих мучений и поисков, оказалось, что подписки все же есть в дневниках, притом 2 типа - подписка на весь дневник и подписка на отдельную запись. Странно но эти пункты у меня не отображались в стиле и в шаблоне не было этого прописано. Скорее всего это касается всех шаблонов на основе сабсильвер2. Вообщем чтобы решить это недоразумение нужно открыть шаблон блога
Код: Выделить всё
<!-- IF S_WATCH_FORUM_LINK --> • <a href="{S_WATCH_FORUM_LINK}" title="{S_WATCH_FORUM_TITLE}">{S_WATCH_FORUM_TITLE}</a><!-- ENDIF -->
A | ВНИМАНИЕ !!!Может быть так только у меня, а может и нет, но нашел такой баг - после подписки на весь дневник вцелом, нельзя потом от него отписаться. Решение !!! Не знаю какая логика была у автора мода, но все проблемы решаются следущим образом. 1) Нужно зайти в Блоги и кликнуть в левом меню Настройки дневника 2) Найти пункт Подписка по умолчанию и убрать галочки из чекбоксов 3) Нажать Отправить и вы отписаны от всех блогов Решение данной проблемы должно быть еще одно, я буду заниматься его поисками |
От себя добавлю что в блогах на нашем Форуме активирована возможность подписок, гляньте в левое меню при просмотре чьего либо блога. А так же есть возможность читать RSS ленту блогов отдельных авторов
Накопал недавно хороший плагин для блогов - Облако тегов. Суть в том, что при создании новой записи пользователю будет предложено ввести список тегов, наиболее подходящих к данной записи. После установки плагина и ввода первых тегов, в левом меню будет отображаться эдакое облако тегов, притом активных (по нажатии на тег будут показываться записи, ассоциированные с ним). Протестировать данный плагин вы можете у нас на Форуме, первые тестовые теги вбиты. Если кого заинтересовало, то скачиваем архив с плагином Как устанавливать плагины ???
Установка очень проста, в архиве обычно лежит инструкция по установке, в данном случае вам нужно из папки
Давненько обещал выложить сию доработку для Блогов, потестировать ее вы можете в Блогах нашего Форума.
A | Внимание !!!Данную доработку ставить лишь в том случае, если у вас установлена !!! |
Код: Выделить всё
<script type="text/javascript">
// <![CDATA[
var form_name = 'postform';
var text_name = 'message';
// ]]>
</script>
<script type="text/javascript" src="{T_TEMPLATE_PATH}/editor.js"></script>
Код: Выделить всё
<strong>{blogrow.USER_FULL}</strong>
Код: Выделить всё
<!-- IF S_QUICK_REPLY --><a href="#postform" title="{L_QUOTE_USERNAME}" onclick="insert_text('[b]{blogrow.USER_QUOTE}[/b]'); return false;"<!-- IF blogrow.USER_COLOUR --> style="color: {blogrow.USER_COLOUR}"<!-- ENDIF -->><strong>{blogrow.USERNAME}</strong></a><!-- ELSE --><strong>{blogrow.USER_FULL}</strong><!-- ENDIF -->
Код: Выделить всё
<strong>{replyrow.USER_FULL}</strong>
Код: Выделить всё
<!-- IF S_QUICK_REPLY --><strong><a href="#postform" title="{L_QUOTE_USERNAME}" onclick="insert_text('[b]{replyrow.USER_QUOTE}[/b]'); return false;"<!-- IF replyrow.USER_COLOUR --> style="color: {replyrow.USER_COLOUR}"<!-- ENDIF -->>{replyrow.USERNAME}</a></strong><!-- ELSE --><strong>{replyrow.USER_FULL}</strong><!-- ENDIF -->
Код: Выделить всё
<!-- IF replyrow.U_EDIT --><li class="edit-icon"><a href="{replyrow.U_EDIT}" title="{L_EDIT_POST}"><span>{L_EDIT_POST}</span></a></li><!-- ENDIF -->
Код: Выделить всё
<!-- IF S_QUICK_REPLY --><li class="quickquote-icon"><a href="#postform" onclick="if((window.getSelection && window.getSelection().toString() == '') || (document.getSelection && document.getSelection() == '') || (document.selection && document.selection.createRange().text == '')){ alert('{L_NO_SELECTION}'); return false; }else{addquote({replyrow.ID},'{replyrow.USER_QUOTE}'); insert_text('\r\n'); return false; }" title="{L_QUICKQUOTE_TEXT}"><span>{L_QUICKQUOTE_TEXT}</span></a></li><!-- ENDIF -->
Код: Выделить всё
<!-- IF blogrow.U_EDIT --><li class="edit-icon"><a href="{blogrow.U_EDIT}" title="{L_EDIT_POST}"><span>{L_EDIT_POST}</span></a></li><!-- ENDIF -->
Код: Выделить всё
<!-- IF S_QUICK_REPLY --><li class="quickquote-icon"><a href="#postform" onclick="if((window.getSelection && window.getSelection().toString() == '') || (document.getSelection && document.getSelection() == '') || (document.selection && document.selection.createRange().text == '')){ alert('{L_NO_SELECTION}'); return false; }else{addquote({blogrow.ID},'{blogrow.USER_QUOTE}'); insert_text('\r\n'); return false; }" title="{L_QUICKQUOTE_TEXT}"><span>{L_QUICKQUOTE_TEXT}</span></a></li><!-- ENDIF -->
Код: Выделить всё
'USER_FULL' => self::$user[$user_id]['username_full'],
Код: Выделить всё
'USER_QUOTE' => addslashes(self::$user[$user_id]['username']),