Полезная информация


----

Начать новую тему Ответить на тему
АвторСообщение

 Сообщение User Blog Mod phpbb3 (Дневники и Блоги) 2012-08-01

Аватар пользователя

Всем доброго времени суток, это как обычно я, ваш покорный слуга, с очередным полезным анонсом. В одном из анонсов я писал, что считаю только лишь 3 модификации самыми крупными и удачными для наших форумов, Фотогаллерею, Портал и сегодняшний анонс - Дневники(Блоги).

Мод очень удачный и самый мощный в своем роде, приятное дополнение к форумным темам. Позволит вашим пользователям обзаводиться собственными Дневниками (Блогами), функционал вас порадует, помимо создания обычных записей пользователи смогут
  • комментировать свои и чужие записи
  • ставить оценки записям (рейтинг в Блогах)
  • создавать голосования и опросы в записях
  • читать RSS ленты записей
  • сделать свой индивидуальный стиль Блога
И многое многое другое...

Вообщем мод не так уж тяжел в установке и настройке, скачиваем и устанавливаем по инструкции

Разумеется, после установки нам надо руссифицировать мод, руссификация ниже
Вложение :
Комментарий к файлу: Руссификация модификации User Blog Mod
User_Blog_Mod_1.0.13_Ru.zip [27.94 KiB]
Скачиваний: 241

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

Дополнение. Блок с новыми комментариями и записями для Портала

Наверняка вы заметили у меня на Портале чудесный блок, в котором отображается частично текст самой последней записи в Блогах, а так же список последних записей и комментариев. Аккуратненько и удобно. Хотелось бы поделиться им с вами. Скачиваем дополнение и устанавливаем по инструкции
Вложение :
Комментарий к файлу: Дополнение к модификации User Blog Mod
User Blog Mod Addons.rar [52.16 KiB]
Скачиваний: 146

После установки данной модификации, открыть includes/functions.php и найти
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);
 

В нужную php страницу и
   <!-- IF S_DISPLAY_BLOGS -->
      <!-- INCLUDE portal/block/top10_blog.html -->
   <!-- ENDIF -->
 

В нужный шаблон стиля

--------------------- По поводу подписок на дневники --------------------

После долгих мучений и поисков, оказалось, что подписки все же есть в дневниках, притом 2 типа - подписка на весь дневник и подписка на отдельную запись. Странно но эти пункты у меня не отображались в стиле и в шаблоне не было этого прописано. Скорее всего это касается всех шаблонов на основе сабсильвер2. Вообщем чтобы решить это недоразумение нужно открыть шаблон блога left_menu.html и прописать в удобное для себя место код
<!-- IF S_WATCH_FORUM_LINK --> &bull; <a href="{S_WATCH_FORUM_LINK}" title="{S_WATCH_FORUM_TITLE}">{S_WATCH_FORUM_TITLE}</a><!-- ENDIF -->
 

Теперь при просмотре списка записей будет возможность подписаться на весь дневник автора, а если зайти в просмотр конкретной записи - можно подписаться только на нее, вернее на ее комментарии

A ВНИМАНИЕ !!!Может быть так только у меня, а может и нет, но нашел такой баг - после подписки на весь дневник вцелом, нельзя потом от него отписаться.

Решение !!! Не знаю какая логика была у автора мода, но все проблемы решаются следущим образом.
1) Нужно зайти в Блоги и кликнуть в левом меню Настройки дневника
2) Найти пункт Подписка по умолчанию и убрать галочки из чекбоксов
3) Нажать Отправить и вы отписаны от всех блогов

Решение данной проблемы должно быть еще одно, я буду заниматься его поисками



От себя добавлю что в блогах на нашем Форуме активирована возможность подписок, гляньте в левое меню при просмотре чьего либо блога. А так же есть возможность читать RSS ленту блогов отдельных авторов :ya_hoo_oo:

----------- Дополнение. Облаго тегов для блога -----------

Накопал недавно хороший плагин для блогов - Облако тегов. Суть в том, что при создании новой записи пользователю будет предложено ввести список тегов, наиболее подходящих к данной записи. После установки плагина и ввода первых тегов, в левом меню будет отображаться эдакое облако тегов, притом активных (по нажатии на тег будут показываться записи, ассоциированные с ним). Протестировать данный плагин вы можете у нас на Форуме, первые тестовые теги вбиты. Если кого заинтересовало, то скачиваем архив с плагином
Вложение :
Комментарий к файлу: Плагин облака тегов для модификации User Blog Mod
Blog Tags.rar [13.33 KiB]
Скачиваний: 65

Как устанавливать плагины ???
Установка очень проста, в архиве обычно лежит инструкция по установке, в данном случае вам нужно из папки Blog Tags/root/ скопировать все файлы в корень форума, а потом зайти в админку в настройки Блогов, в пункт Плагины и активировать данный плагин. Руссификация уже лежит в нужной папке. Надеюсь вам пригодится

--------------------Дополнение. Быстрая цитата в Блогах и обращение по нику --------------------

Давненько обещал выложить сию доработку для Блогов, потестировать ее вы можете в Блогах нашего Форума.

A Внимание !!!Данную доработку ставить лишь в том случае, если у вас установлена !!!


Вообщем открываем styles/prosilver/template/blog/quick_reply.html и в самый верх кода добавляем
<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>
 

Открываем styles/prosilver/template/blog/view_blog.html и находим
   <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 --> 
 

Открываем styles/prosilver/template/blog/view_blog.html и находим
<!-- 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 --> 
 

Открываем blog/includes/blog_data.php и находим (Находим только второе вхождение, приблизительно 1180 строка)
'USER_FULL'         => self::$user[$user_id]['username_full'],
 

Добавляем после
'USER_QUOTE'      => addslashes(self::$user[$user_id]['username']), 
 

Чистим кеш и радуемся результатам :ya_hoo_oo:


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!

Теги темы
User Blog Mod, User Blog Mod phpbb3 (Дневники и Блоги), блоги phpbb3, дневники phpbb3, мод дневников phpbb3, мод блогов phpbb3
          Вернуться наверх  
 


Аватар пользователя

И это очень странно, но вы точно после правок запускали скрипт ? Обычно такая ошибка кидается если скрипт перед правками запускался


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


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

Да, конечно после, как написано в инструкции(


          Вернуться наверх  
 


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

А может быть Вы знаете какой запрос сделать к базе, чтоб появилась та таблица?


          Вернуться наверх  
 


Аватар пользователя

В блогах у вас есть уже записи ? Если нет - запускаете скрипт - выбираете удаление, запускаете его заново - установка, это может помочь


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


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

во время переустановки вылезла ошибка
Установить плагин архива
SQL ERROR Table 'мой форум.phpbbblogs_plugins' doesn't exist


          Вернуться наверх  
 


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

и форум теперь не работает((( и бэкап не делал... ооооо
SQL ERROR [ mysqli ]

Table 'мой форум.phpbbblogs_plugins' doesn't exist [1146]

Произошла ошибка SQL при выборке на этой странице. Пожалуйста, сообщите администратору, если ошибка будет повторяться.

Гдеж ее взять эту таблицу


          Вернуться наверх  
 


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

Хелп ми, ктонить скажите какой запрос сделать, чтоб создать эту таблицу((


          Вернуться наверх  
 


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

Хотя такая таблица в пхпмойадмин есть phpbb_blogs_plugins


          Вернуться наверх  
 


Аватар пользователя

Заново действия не повторяли ?


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


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

zagarulka писал(а):

Хотя такая таблица в пхпмойадмин есть phpbb_blogs_plugins

НЕ знаю, насколько это правильно, но моих знаний хватило только на это...
-скопировал таблицу phpbb_blogs_plugins к себе на компьтер, поменял в запросе имя на phpbbblogs_plugins и сделал этот запрос в базе, заработало


          Вернуться наверх  
 


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

Теперь сайт работает, в админке настройки дневников есть.
В шапке форума нет))) Что сделать? Все правки заново пройти?


          Вернуться наверх  
 


Аватар пользователя

Я вообще не понимаю как вы моды ставите если изза обычно запроса у вас из шапки исчезают ссылки


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


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

DeaDRoMeO писал(а):

Я вообще не понимаю как вы моды ставите если изза обычно запроса у вас из шапки исчезают ссылки

Я же не ставил его, сделал, как Вы сказали - запустил скрипт он выдал ошибку, ну и все действия потом описывал. Ну жно было после удаления при помощи скрипта все правки заново делать?
А устанавливаю, по инструкциям строго!


          Вернуться наверх  
 


Аватар пользователя

Просто нужно было запустить скрипт несколько раз, правки заново не нужно делать, то что у вас после запуска скрипта начали валиться ошибки - возможно правки не все сделали


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


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

DeaDRoMeO писал(а):

Просто нужно было запустить скрипт несколько раз, правки заново не нужно делать, то что у вас после запуска скрипта начали валиться ошибки - возможно правки не все сделали

НУ и чтобы быть уверенным, что буду делать все правильно))) Вопросик: теперь у меня как и говорил перестал отображаться дневник в шапке, в админке есть, а фактически нету. Если вводить прямую ссылку на дневник то пишет - Вы не имеете необходимых прав доступа для завершения этой операции.
Подскажите, какие мысли у Вас по этому поводу? Что попробовать сделать)) Удалить при помощи скрипта - проверить правки - установить?
Заранее спасибо за ответ


          Вернуться наверх  
 


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

Здравствуйте, такой вопрос, как сделать например в каждой категории вывод списка пользователей, как в ваших дневниках на сайте - Список дневников?


          Вернуться наверх  
 


Аватар пользователя

Пожалуйста Зарегистрируйтесь чтобы увидеть ссылку

Вот это вам нужно ?? Это плагин Userlist -
Пожалуйста Зарегистрируйтесь чтобы увидеть ссылку


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


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

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


          Вернуться наверх  
 


Аватар пользователя

Тобишь в профиль пользователю вывести название его дневника?


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


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

DeaDRoMeO писал(а):

Тобишь в профиль пользователю вывести название его дневника?

Не, категорию в профиль, то-есть например я создал категорию "Персональные дневники", создал там дневник и эта категория отображается в профиле и в списке пользователей. Чтоб было видно в какой категории находится дневник.


          Вернуться наверх  
 
 
Начать новую тему Ответить на тему


Дополнительные возможности

  Похожие темы  Автор  Ответов  Просмотров  Последнее сообщение 
Аватар пользователя User Rank Progression Bar phpbb3
User Rank Progression Bar phpbb3 - модификация для форума phpbb3, показывающая в процентном соотношении прогресс до получения нового звания на форуме

DeaDRoMeO

155

5285

Аватар пользователя

26 дек 2014, 09:26

DeaDRoMeO

Аватар пользователя User reputation points phpbb3 (Репутация)
User reputation points - модификация для phpbb3, организующая на форуме систему репутации пользователя, как графическую так и текстовую

DeaDRoMeO

209

10703

Аватар пользователя

10 окт 2015, 15:25

DeaDRoMeO

Аватар пользователя User reminder phpbb3 (напоминания неактивным)
User reminder - модификация для phpbb3, организующее очень удобную напоминалку неактивным пользователям форума. Массовая отправка напоминаний.

DeaDRoMeO

80

4246

Аватар пользователя

21 сен 2015, 11:38

DeaDRoMeO

Аватар пользователя Email To User On Group Status Change phpbb3
Email To User On Group Status Change - модификация для phpbb3, добавляющая на форум e-mail уведомления пользователям при их добавлении, перемещении, удалении из группы

DeaDRoMeO

0

538

Аватар пользователя

20 июл 2016, 20:08

DeaDRoMeO

Аватар пользователя mChat phpbb3
mChat - модификация для phpbb3, добавляющая на ваш форум удобный чат с расширенным функционалом

DeaDRoMeO

15

749

Аватар пользователя

08 апр 2017, 09:20

белк

Оставить свой комментарий

Поделиться темой с помощью

Ссылки на тему

Прямая ссылка:
BB-код для форумов, сайтов, блогов:
HTML ссылка:
 


Самая неформальная поддержка phpBB :P