User Blog Mod 1.0.16. Дополнения и изменения

Ссылка «Блоги» открывает список блогов, Сортировка списка блогов по дате последней записи, Удаляем из шапки ссылку «Мой блог», оставляем только ссылку «Блоги», Поиск в блогах из стандартной формы поиска в шапке сайта, Быстрая цитата для быстрого ответа, Д

User Blog Mod 1.0.16. Дополнения и изменения

» » Сообщение:

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

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

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

Быстрая цитата для быстрого ответа

Если на вашей конференции установлена модификация быстрого ответа авторства 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"),

Транслитерируем ссылки и переводим их в нижний регистр

Открыть:

Код: Выделить всё Развернуть
blog/includes/functions.php

Изменить кодировку файла на UTF-8 без BOM

Найти:

Код: Выделить всё Развернуть
if (!defined('IN_PHPBB'))
{
exit;
}

Добавить после:

Код: Выделить всё Развернуть
function translit($string)
{
$string = utf8_strtolower($string);
$chars = array(
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'е' => 'e',
'ж' => 'j', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm',
'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u',
'ф' => 'f', 'х' => 'h', 'ц' => 'ts', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ъ' => 'y',
'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
'ї' => 'i', 'є' => 'ie', 'ў' => 'u', 'ґ' => 'h'
);
return strtr($string, $chars);
}

Найти:

Код: Выделить всё Развернуть
      $replace_page = true; // match everything except the page if this is set to false

Добавить после:

Код: Выделить всё Развернуть
      if (isset($url_data['page'])) $url_data['page'] = translit($url_data['page']);

Найти четырежды (это части строк, названия функций):

Код: Выделить всё Развернуть
utf8_clean_string

Заменить на:

Код: Выделить всё Развернуть
translit

Переводим в нижний регистр имена пользователей

Открыть:

Код: Выделить всё Развернуть
blog/includes/functions.php

Найти (три строки в разных местах):

Код: Выделить всё Развернуть
            $url_data['page'] = urlencode($user->data['username']);
$url_data['page'] = urlencode($extra_data['username']);
$url_data['page'] = urlencode(blog_data::$user[$user_id]['username']);

Заменить соответственно на:

Код: Выделить всё Развернуть
            $url_data['page'] = urlencode(utf8_strtolower($user->data['username']));
$url_data['page'] = urlencode(utf8_strtolower($extra_data['username']));
$url_data['page'] = urlencode(utf8_strtolower(blog_data::$user[$user_id]['username']));

Сворачиваем архив записей

Открыть:

Код: Выделить всё Развернуть
styles\prosilver\template\blog\plugins\archive\archive_body.html

Найти:

Код: Выделить всё Развернуть
                     <span onclick="toggle_month({archiverow.S_ROW_COUNT});" style="cursor: pointer;"><strong><img id="month_image_{archiverow.S_ROW_COUNT}" src="<!-- IF archiverow.S_ROW_COUNT > 0 -->{IMG_PLUS}"  alt="+"<!-- ELSE -->{IMG_MINUS}"  alt="-"<!-- ENDIF --> /> {archiverow.MONTH} {archiverow.YEAR}</strong></span>
<div id="month_{archiverow.S_ROW_COUNT}" <!-- IF archiverow.S_ROW_COUNT > 0 -->style="display: none;"<!-- ENDIF -->>

Заменить на:

Код: Выделить всё Развернуть
                     <span onclick="toggle_month({archiverow.S_ROW_COUNT});" style="cursor: pointer;"><strong><img id="month_image_{archiverow.S_ROW_COUNT}" src="{IMG_PLUS}"  alt="+" /> {archiverow.MONTH} {archiverow.YEAR}</strong></span>
<div id="month_{archiverow.S_ROW_COUNT}" style="display: none;">

Обрезаем заголовки в архиве записей

Открыть:

Код: Выделить всё Развернуть
blog\plugins\archive\functions.php

Найти:

Код: Выделить всё Развернуть
'TITLE'         => censor_text($row['blog_subject']),

Заменить на:

Код: Выделить всё Развернуть
'TITLE'         => utf8_strlen($csub = censor_text($row['blog_subject'])) > 30 ? utf8_substr($csub, 0, 30) . '&hellip;' : $csub,

Отображение вложений-изображений в блоках «последних записях», в «последних комментариях» и в «популярных записях»

Таким образом начинает работать отображение аттачей в "популярных записях" и в двух столбцах "последние записи" и "последние комментарии" по ссылке "Блоги":

Открыть:

Код: Выделить всё Развернуть
/blog/view/main.php

Найти:

Код: Выделить всё Развернуть
      $recent_reply_ids = $blog_data->get_reply_data('recent', 0, array('limit' => $limit, 'category_id' => $category_id));

Добавить после:

Код: Выделить всё Развернуть
      get_attachment_data($recent_blog_ids, $recent_reply_ids, $random_blog_ids);

А так начинает работать отображение аттачей в отдельном блоке "последние записи":

Открыть:

Код: Выделить всё Развернуть
/blog/view/main.php

Найти:

Код: Выделить всё Развернуть
         $sort_by_text = array('t' => $user->lang['POST_TIME'], 'c' => $user->lang['REPLY_COUNT'], 'bt' => $user->lang['BLOG_SUBJECT']);

Добавить после:

Код: Выделить всё Развернуть
         get_attachment_data($ids);

Fix для опции «Прямое перенаправление»

Открыть:

Код: Выделить всё Развернуть
language/ru/mods/blogposting.php

Найти:

Код: Выделить всё Развернуть
?>

Добавить перед:

Код: Выделить всё Развернуть
//Posting, preview ...
$lang = array_merge($lang, array(
'COMMENT_SENDING'               => 'Отправка комментария...',
'COMMENT_PREVIEW_SENDING'         => 'Предпросмотр комментария...',
));

Открыть:

Код: Выделить всё Развернуть
style/sprosilver/template/blogquick_reply.html

Найти:

Код: Выделить всё Развернуть
         <fieldset class="submit-buttons">
<textarea name="message" id="message" rows="6" cols="100" class="inputbox" ></textarea><br /><br />
<input type="hidden" name="subject" value="Re: <!-- BEGIN blogrow(0,0) -->{blogrow.TITLE}<!-- END blogrow -->" />
<input type="submit" name="preview" tabindex="6" value="{L_PREVIEW}" class="button1" onclick="document.getElementById('postform').action += '#preview';" />&nbsp;
<input type="submit" name="post" tabindex="5" value="{L_SUBMIT}" class="button1" accesskey="s" />
{S_FORM_TOKEN}
</fieldset>

Заменить на:

Код: Выделить всё Развернуть
<fieldset class="submit-buttons">
<textarea name="message" id="message" rows="6" cols="100" class="inputbox" ></textarea><br /><br />
<input type="hidden" name="subject" value="Re: <!-- BEGIN blogrow(0,0) -->{blogrow.TITLE}<!-- END blogrow -->" />
<fieldset id="buttons" class="submit-buttons">
<input type="submit" name="post" tabindex="5" value="{L_SUBMIT}" class="button1" accesskey="s" onclick="JavaScriptdocument.getElementById('buttons').style.display='none';document.getElementById('processingsub').style.display='block';" />&nbsp;
<input type="submit" name="preview" tabindex="6" value="{L_PREVIEW}" class="button1" onclick="JavaScriptdocument.getElementById('buttons').style.display='none';document.getElementById('processingpre').style.display='block';document.getElementById('postform').action += '#preview';" />&nbsp;
</fieldset>
<fieldset id="processingsub" class="submit-buttons" style="display:none;">
<input class="button1" type="button" value="{L_COMMENT_SENDING}" disabled="disabled" />
</fieldset>
<fieldset id="processingpre" class="submit-buttons" style="display:none;">
<input class="button1" type="button" value="{L_COMMENT_PREVIEW_SENDING}" disabled="disabled" />
</fieldset>
{S_FORM_TOKEN}
</fieldset>

Открыть:

Код: Выделить всё Развернуть
styles/prosilver/template/blogblog_posting_layout.html

Найти:

Код: Выделить всё Развернуть
   <fieldset class="submit-buttons">
{S_HIDDEN_ADDRESS_FIELD}
{S_HIDDEN_FIELDS}
<input type="submit" tabindex="5" name="preview" value="{L_PREVIEW}" class="button1"<!-- IF not S_PRIVMSGS --> onclick="document.getElementById('postform').action += '#preview';"<!-- ENDIF --> />&nbsp;
<input type="submit" accesskey="s" tabindex="6" name="post" value="{L_SUBMIT}" class="button1" />&nbsp;

</fieldset>

Заменить на:

Код: Выделить всё Развернуть
<fieldset class="submit-buttons">
{S_HIDDEN_ADDRESS_FIELD}
{S_HIDDEN_FIELDS}
<fieldset id="buttons" class="submit-buttons">
<input type="submit" name="post" tabindex="5" value="{L_SUBMIT}" class="button1" accesskey="s" onclick="JavaScriptdocument.getElementById('buttons').style.display='none';document.getElementById('processingsub').style.display='block';" />&nbsp;
<input type="submit" name="preview" tabindex="6" value="{L_PREVIEW}" class="button1" onclick="JavaScriptdocument.getElementById('buttons').style.display='none';document.getElementById('processingpre').style.display='block';document.getElementById('postform').action += '#preview';" />&nbsp;
</fieldset>
</fieldset>
Вложения
Зарегистрируйтесь, чтобы скачать вложения.
блоги, сортировка, мой блог, поиск, кликабельные, ники, аватары, цитата, быстрая цитата, транслитерируем, регистр, архив, обрезать, заголовки, вложения

Подписока на блоги

Admin » » Сообщение:

После долгих мучений и поисков, оказалось, что подписки все же есть в дневниках, притом 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 -->

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


Если возникает ошибка с опросами

Admin » » Сообщение:

Если возникает ошибка с опросами (при голосовании пишет, что выбрано много вариантов) - следует проделать следующие правки:

Открыть:

Код: Выделить всё Развернуть
blog/vote.php

Найти:

Код: Выделить всё Развернуть
    if (sizeof($voted_id) > blog_data::$blog[$blog_id]['poll_max_options'] || blog_data::$blog[$blog_id]['poll_length'] < time())
    {
       trigger_error('TOO_MANY_VOTE_OPTIONS');
    }

Заменить на:

Код: Выделить всё Развернуть
    if (sizeof($voted_id) > blog_data::$blog[$blog_id]['poll_max_options'])
    {
       trigger_error('TOO_MANY_VOTE_OPTIONS');
    }

    if (blog_data::$blog[$blog_id]['poll_length'] != 0)
    {
       if (blog_data::$blog[$blog_id]['poll_length'] < time())
       {
          trigger_error('TOO_MANY_VOTE_OPTIONS');
       }
    }

после чего система должна работать нормально.





Похожие темыКомментарии ПросмотрыПоследнее сообщение
0797Адекватный список User-Agent поиско...
Сообщение от: Admin
06044Основные значения User Agent клиент...
Сообщение от: Admin
0845User-agent мобильных телефонов и пл...
Сообщение от: Admin
01403Дополнения к теме Браузер клиента, ...
Сообщение от: Admin
0677Static Pages v1.0.3, модификция и д...
Сообщение от: Admin