Несколько небольших дополнений и изменений для User Blog Mod.

Несколько небольших дополнений и изменений для User Blog Mod. Делала для себя и на свой вкус, но, надеюсь, кому-то ещё пригодится.

  • Добавляем кнопку блога в минипрофиль.
  • Ссылка «Блоги» открывает список блогов.
  • Сортировка списка блогов по дате последней записи.
  • Удаляем из шапки ссылку «Мой блог».
  • Поиск в блогах из стандартной формы поиска в шапке сайта.
  • Быстрая цитата для быстрого ответа (если у вас установлен БО Rayden'а).
  • Кликабельные аватары.


Инструкции даны для стиля Prosilver.
Версия User Blog Mod — 1.0.13.


Добавляем в минипрофиль кнопку блога.



Вместо штатной текстовой ссылки делаем симпатичную кнопку, такую же как кнопки ICQ, ЛС, Jabber и прочие.blog_button

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]);
    } 

blog/includes/blog_data.php

//=== найти

    '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);
    } 

styles/prosilver/template/viewtopic_body.html

//=== найти

    <!-- 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 --> 
styles/prosilver/template/blog/view_blog.html
//=== найти

    <!-- 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 --> 
styles/prosilver/template/blog/left_menu.html
//=== найти

    <!-- 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 --> 
styles/prosilver/theme/blog.css
//=== добавить в конце файла

.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; } 
Эту картинку кладём в папку styles/prosilver/imageset/, название её должно быть icon_contact_blog.gif .icon_contact_blog


Ссылка «Блоги» открывает список блогов.



По умолчанию ссылка «Блоги» открывает страницу с последними и случайными записями и комментариями. Мне эта страница не нравится. Я хочу, чтобы ссылка «Блоги» открывала список блогов. По-моему, так будет логичнее.

Прежде всего устанавливаем плагин «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 --> 


Поиск в блогах из стандартной формы поиска в шапке сайта.

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

(В идеале, возможно, поиск из шапки должен производиться по всему сайту целиком, включая форумы, блоги, фотогалерею и прочее. Но это будет уже совсем другой мод.)

blog_search

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}&hellip;<!-- ENDIF -->" onclick="if(this.value=='{LA_SEARCH_BLOGS}&hellip;')this.value='';" onblur="if(this.value=='')this.value='{LA_SEARCH_BLOGS}&hellip;';" 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 --> 

blog.php

//=== найти

    '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 --> 
blog/includes/blog_data.php
//=== найти (только второе вхождение, строка 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 --> 
styles/prosilver/template/blog/left_menu.html
//=== найти

                    <!-- 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 --> 
blog/includes/blog_data.php
//=== найти

    'U_PROFILE'            => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=viewprofile&amp;u=$user_id"),

//=== добавить после

    'U_USERPROFILE'        => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=viewprofile&amp;u=$user_id"), 


После внесения любых изменений в файлы не забываем зайти в администраторский раздел на вкладку «Стили» и обновить шаблон и тему Prosilver.

Joomla SEF URLs by Artio