- Добавляем кнопку блога в минипрофиль.
- Ссылка «Блоги» открывает список блогов.
- Сортировка списка блогов по дате последней записи.
- Удаляем из шапки ссылку «Мой блог».
- Поиск в блогах из стандартной формы поиска в шапке сайта.
- Быстрая цитата для быстрого ответа (если у вас установлен БО Rayden'а).
- Кликабельные аватары.
- Кнопка фотоальбома в минипрофиле блога и кнопка блога в минипрофиле фотогалереи (если у вас установлена phpBB Gallery).
Версия User Blog Mod — 1.0.13.
Версия phpBB — 3.0.7-PL1...3.0.10.
Добавляем в минипрофиль кнопку блога.
Вместо штатной текстовой ссылки на страницах форума делаем симпатичную кнопку, такую же как кнопки ICQ, ЛС, Jabber и прочие.
viewtopic.php
Код: Выделить всё
//=== найти
'U_JABBER' => $user_cache[$poster_id]['jabber'],
//=== добавить после
'U_BLOG' => ($config['user_blog_enable'] && $config['user_blog_links_output_block'] && $poster_id != ANONYMOUS && ($user_cache[$poster_id]['blog_count'] > 0 || $config['user_blog_always_show_blog_url'])) ? blog_url($poster_id) : '',
//=== найти и удалить
if (isset($config['user_blog_enable']) && $config['user_blog_enable'])
{
add_blog_links($poster_id, 'postrow.custom_fields', $user_cache[$poster_id]);
}
Код: Выделить всё
//=== найти
'U_YIM' => self::$user[$user_id]['yim_url'],
//=== добавить после
'U_USER_BLOG_URL' => ($config['user_blog_links_output_block'] && (self::$user[$user_id]['blog_count'] > 0 || $config['user_blog_always_show_blog_url'])) ? blog_url($user_id) : '',
//=== найти и удалить
// add the blog links in the custom fields
if ($user_id != ANONYMOUS)
{
$custom_fields[] = add_blog_links($user_id, '', self::$user[$user_id], false, true, true);
}
Код: Выделить всё
//=== найти
<!-- IF postrow.U_PM or postrow.U_EMAIL or postrow.U_WWW or postrow.U_MSN or postrow.U_ICQ or postrow.U_YIM or postrow.U_AIM or postrow.U_JABBER -->
//=== заменить на
<!-- IF postrow.U_PM or postrow.U_EMAIL or postrow.U_WWW or postrow.U_MSN or postrow.U_ICQ or postrow.U_YIM or postrow.U_AIM or postrow.U_JABBER or postrow.U_BLOG -->
//=== найти
<!-- IF postrow.U_JABBER --><li class="jabber-icon"><a href="{postrow.U_JABBER}" onclick="popup(this.href, 550, 320); return false;" title="{L_JABBER}"><span>{L_JABBER}</span></a></li><!-- ENDIF -->
//=== добавить после
<!-- IF postrow.U_BLOG --><li class="userblog-icon"><a href="{postrow.U_BLOG}" title="{L_BLOG}"><span>{L_BLOG}</span></a></li><!-- ENDIF -->
Код: Выделить всё
//=== найти
<!-- IF replyrow.U_PM or replyrow.U_EMAIL or replyrow.U_WWW or replyrow.U_MSN or replyrow.U_ICQ or replyrow.U_YIM or replyrow.U_AIM -->
//=== заменить на
<!-- IF replyrow.U_PM or replyrow.U_EMAIL or replyrow.U_WWW or replyrow.U_MSN or replyrow.U_ICQ or replyrow.U_YIM or replyrow.U_AIM or replyrow.U_USER_BLOG_URL -->
//=== найти
<!-- IF replyrow.U_JABBER --><li class="jabber-icon"><a href="{replyrow.U_JABBER}" title="{L_JABBER}"><span>{L_JABBER}</span></a></li><!-- ENDIF -->
//=== добавить после
<!-- IF replyrow.U_USER_BLOG_URL --><li class="userblog-icon"><a href="{replyrow.U_USER_BLOG_URL}" title="{L_BLOG}"><span>{L_BLOG}</span></a></li><!-- ENDIF -->
Код: Выделить всё
//=== найти
<!-- IF U_PM or U_EMAIL or U_WWW or U_MSN or U_ICQ or U_YIM or U_AIM -->
//=== заменить на
<!-- IF U_PM or U_EMAIL or U_WWW or U_MSN or U_ICQ or U_YIM or U_AIM or U_USER_BLOG_URL -->
//=== найти
<!-- IF U_JABBER --><li class="jabber-icon"><a href="{U_JABBER}" title="{L_JABBER}"><span>{L_JABBER}</span></a></li><!-- ENDIF -->
//=== добавить после
<!-- IF U_USER_BLOG_URL --><li class="userblog-icon"><a href="{U_USER_BLOG_URL}" title="{L_BLOG}"><span>{L_BLOG}</span></a></li><!-- ENDIF -->
Код: Выделить всё
//=== добавить в конце файла
.userblog-icon, .userblog-icon a { background: url("{T_IMAGESET_PATH}/icon_contact_blog.gif") top left no-repeat; }
ul.profile-icons li.userblog-icon { width: 21px; height: 20px; }
__________________________________________
По умолчанию ссылка «Блоги» открывает страницу с последними и случайными записями и комментариями. Мне эта страница не нравится. Я хочу, чтобы ссылка «Блоги» открывала список блогов. По-моему, так будет логичнее.
Прежде всего устанавливаем плагин «User List» и подключаем его в админке. После установки в левом меню блогов появляется ссылка «Список блогов». Далее сделаем так, чтобы ссылка «Блоги» в шапке сайта действовала как «Список блогов», причём лишний параметр page=userlist в адресной строке у нас появляться не будет.
blog.php
Код: Выделить всё
//=== найти
$cancel = (isset($_POST['cancel'])) ? true : false;
//=== добавить после
if ($page == '' && $mode == '' && $user_id == 0 && $blog_id == 0 && $reply_id == 0 && $category_id == 0)
{
$page = 'userlist';
}
__________________________________________
Сортировка в списке блогов по умолчанию алфавитная. Делаем сортировку в соответствии со стандартом phpBB, по дате последней записи, т. е. самые свежие блоги сверху.
blog/view/userlist.php
Код: Выделить всё
//=== найти
$sort_key = request_var('sk', 't');
//=== заменить на
$sort_key = request_var('sk', 'pt');
__________________________________________
Ссылок на «Мой блог» и так предостаточно: и в левом меню блогов, и в минипрофиле, и в полном профиле, да плюс на любой странице блогов имеется кнопка «Написать». Зачем тогда захламлять шапку лишней ссылкой? Там и без неё тесно. Убираем хлам.
styles/prosilver/template/overall_header.html
Код: Выделить всё
//=== найти
<!-- BEGIN blog_links -->
<li class="{blog_links.CLASS}"><a href="{blog_links.URL}">{blog_links.TEXT}</a></li>
<!-- END blog_links -->
//=== заменить на
<!-- IF U_BLOG --><li class="icon-members"><a href="{U_BLOG}">{L_BLOGS}</a></li><!-- ENDIF -->
__________________________________________
Если мы открываем страницу блога, а затем пытаемся что-то найти из формы поиска в шапке, то поиск ведётся почему-то не в блогах, а в форумах. Нелогично, да? Здравый смысл говорит нам, что когда мы находимся в блогах, то и поиск должен вестись в блогах. То же самое относится и к фотогалерее, и к базе знаний, и к любому другому моду, представляющему собой раздел сайта. Исправим это.
(В идеале, возможно, поиск из шапки должен производиться по всему сайту целиком, включая форумы, блоги, фотогалерею и прочее. Но это будет уже совсем другой мод.)
styles/prosilver/template/overall_header.html
Код: Выделить всё
//=== найти
<!-- IF S_DISPLAY_SEARCH and not S_IN_SEARCH -->
//=== заменить на
<!-- IF S_DISPLAY_SEARCH and not S_IN_SEARCH and not S_IN_BLOG -->
//=== найти
<span class="corners-bottom"><span></span></span></div>
</div>
<div class="navbar">
//=== добавить перед
<!-- IF S_DISPLAY_BLOG_SEARCH and not S_IN_SEARCH and S_IN_BLOG -->
<div id="search-box">
<form action="{U_BLOG_SEARCH}" method="post" id="search">
<fieldset>
<input name="keywords" id="keywords" type="text" maxlength="128" title="{L_SEARCH_KEYWORDS}" class="inputbox search" value="<!-- IF SEARCH_WORDS-->{SEARCH_WORDS}<!-- ELSE -->{L_SEARCH_BLOGS}…<!-- ENDIF -->" onclick="if(this.value=='{LA_SEARCH_BLOGS}…')this.value='';" onblur="if(this.value=='')this.value='{LA_SEARCH_BLOGS}…';" style="width: 130px" />
<input class="button2" value="{L_SEARCH}" type="submit" /><br />
<a href="{U_BLOG_SEARCH}" title="{L_SEARCH_ADV_EXPLAIN}">{L_SEARCH_ADV}</a> {S_SEARCH_HIDDEN_FIELDS}
</fieldset>
</form>
</div>
<!-- ENDIF -->
Код: Выделить всё
//=== найти
'S_HIDDEN_FIELDS' => $s_hidden_fields,
//=== добавить после
'S_IN_BLOG' => true,
styles/prosilver/template/blog/left_menu.html
Код: Выделить всё
//=== найти и удалить
<!-- IF S_DISPLAY_BLOG_SEARCH -->
<div class="post bg1">
<div class="inner">
<span class="corners-top"><span></span></span>
<div class="left_menu_title">{L_SEARCH_BLOGS}</div>
<form id="blog_searchform" method="post" action="{U_BLOG_SEARCH}">
<fieldset>
<input name="keywords" id="blog_keywords" type="text" maxlength="128" title="{L_SEARCH_KEYWORDS}" class="inputbox search" style="width: 140px;" value="<!-- IF SEARCH_WORDS-->{SEARCH_WORDS}<!-- ELSE -->{L_SEARCH_MINI}<!-- ENDIF -->" onclick="if(this.value=='{LA_SEARCH_MINI}')this.value='';" onblur="if(this.value=='')this.value='{LA_SEARCH_MINI}';" />
<input class="button2" value="{L_SEARCH}" type="submit" /><br />
{S_HIDDEN_FIELDS}
</fieldset>
</form>
<div style="padding: 2px;"><a href="{U_BLOG_SEARCH}" title="{L_SEARCH_ADV_EXPLAIN}">{L_SEARCH_ADV}</a></div>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<!-- ENDIF -->
__________________________________________
Если на вашей конференции установлена модификация быстрого ответа авторства Rayden'а, то правильно будет распространить её действие и на блоги. Итак, сделаем кнопку «Быстрая цитата» (цитата выделенного текста) и кликабельные ники (вставка ника в форму быстрого ответа). Смайлики и ББ-коды делать не будем, чтобы не захламлять блоги.
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
Код: Выделить всё
//=== найти (только первое вхождение, строка 137)
<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 -->
Код: Выделить всё
//=== найти (только второе вхождение, строка 1180)
'USER_FULL' => self::$user[$user_id]['username_full'],
//=== добавить после
'USER_QUOTE' => addslashes(self::$user[$user_id]['username']),
__________________________________________
Если мы сделали вышеописанные изменения для быстрого ответа, то в минипрофилях комментариев у нас теперь нет ссылок на профили пользователей. Исправим это: сделаем аватары ссылками на профили — точно так же, как это сделано в viewtopic.php.
styles/prosilver/template/blog/view_blog.html
Код: Выделить всё
//=== найти
<!-- IF replyrow.AVATAR -->
{replyrow.AVATAR}<br />
<!-- ENDIF -->
//=== заменить на
<!-- IF replyrow.AVATAR -->
<!-- IF replyrow.U_USERPROFILE and not S_IS_BOT --><a href="{replyrow.U_PROFILE}">{replyrow.AVATAR}</a><!-- ELSE -->{replyrow.AVATAR}<!-- ENDIF --><br />
<!-- ENDIF -->
Код: Выделить всё
//=== найти
<!-- IF AVATAR -->
{AVATAR}<br />
<!-- ENDIF -->
//=== заменить на
<!-- IF AVATAR -->
<!-- IF U_USERPROFILE and not S_IS_BOT --><a href="{U_USERPROFILE}">{AVATAR}</a><!-- ELSE -->{AVATAR}<!-- ENDIF --><br />
<!-- ENDIF -->
Код: Выделить всё
//=== найти
'U_PROFILE' => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=viewprofile&u=$user_id"),
//=== добавить после
'U_USERPROFILE' => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=viewprofile&u=$user_id"),
Продолжение, касающееся интеграции phpBB Gallery 1.1.5 и User Blog Mod, см. там.
__________________________________________
__________________________________________
Транслитерация ссылок
Сворачивание архива записей
Информация о блогах и комментариях к порталу на основе board3 Portal
Отображение вложений-изображений в "последних записях", в "последних комментариях" и в "популярных записях"
Добавляем кнопки дневников в мини-профили фотогалереи (phpBB Gallery).
Добавляем кнопки фотоальбомов в мини-профили дневников.
Fix для опции "Прямое перенаправление"
Плагины
Simple Points (на русском)
User Blog Gallery of Attachments
User Blog Gallery
Стили для блогов
greenLizard и Anime-Tico
Anime-Tico_Pthelovod
Anime-Tico 04.2013 Pthelovod
Blogger Clone 04.2013 Pthelovod
coffeedesk