Автор |
Сообщение |
|
|
Администратор |
|
Стаж: 9 лет 19 дней Сообщения: 1230 Откуда: здешние мы
Стиль: subsilver2
Репутация: 11
перейти на сайт пользователя
Найти темы пользователя
|
Posts merging - Склейка сообщений для phpbb 3.0.xсклеивание сообщений - это размещение комментариев от одного пользователя, идущие друг за другом в течении определённого интервала времени. тест работы мода проводился на версии 3.0.14Как выглядит процесс "склейки" - можно увидеть по скану: Вложение:
Комментарий к файлу: пример работы мода
scan_work.png [ 5.14 КБ | Просмотров: 4305 ]
scan_work.png
Итак, поехали. Сначала необходимо выполнить SQL-запрос: Код: Выделить всё INSERT INTO phpbb_config (config_name, config_value) VALUES('merge_interval', 0); INSERT INTO phpbb_config (config_name, config_value) VALUES('merge_no_forums', 0); INSERT INTO phpbb_config (config_name, config_value) VALUES('merge_no_topics', 0); ALTER TABLE phpbb_posts ADD post_created INT(11) DEFAULT '0' NOT NULL AFTER post_time;
я создал на форуме hello-vitebsk установочный файл db_update.php и провёл запрос с его помощью. если вам так тоже удобнее - скачать пак, распаковать, загрузить в корень сайта (где файл config.php) и сделать запрос по адресу Вложение:
Комментарий к файлу: файл установки
db_update.rar [1.32 КБ]
Скачиваний: 41
Установка через файл проходит успешно, проверка работоспособности форума после запроса не показала никаких ошибок: Вложение:
Комментарий к файлу: sql-запрос
sql.png [ 12.15 КБ | Просмотров: 4305 ]
sql.png
Теперь необходимо загрузить файлы мода: Скачать из файлового архива сайтараспаковать, содержимое папки root загрузить в корень сайта (где файл config.php) Теперь начинаем править файлы: Открыть viewtopic.phpНайти Вставить после найденного Найти Код: Выделить всё 'POST_DATE' => $user->format_date($row['post_time'], false, ($view == 'print') ? true : false), Заменить найденное на Код: Выделить всё 'POST_DATE' => (!$row['post_created']) ? $user->format_date($row['post_time'], false, ($view == 'print') ? true : false) : $user->format_date($row['post_created']), Открыть posting.phpНайти Код: Выделить всё $message_md5 = md5($message_parser->message); Вставить после найденного Код: Выделить всё $addon_for_merge = $message_parser->message; Найти (показана часть строки) Код: Выделить всё $redirect_url = submit_post($mode, $post_data['post_subject'], $post_author_name, $post_data['topic_type'], Вставить перед найденным Код: Выделить всё include($phpbb_root_path . 'includes/posts_merging.' . $phpEx); Открыть includes/acp/acp_board.phpНайти Вставить после найденного Найти Код: Выделить всё 'flood_interval' => array('lang' => 'FLOOD_INTERVAL', 'validate' => 'int', 'type' => 'text:3:10', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']), Вставить после найденного Код: Выделить всё 'merge_interval' => array('lang' => 'MERGE_INTERVAL', 'validate' => 'int', 'type' => 'text:3:4', 'explain' => true, 'append' => ' ' . $user->lang['HOURS']), 'merge_no_forums' => array('lang' => 'MERGE_NO_FORUMS', 'validate' => 'string', 'type' => 'text:5:255', 'explain' => true), 'merge_no_topics' => array('lang' => 'MERGE_NO_TOPICS', 'validate' => 'string', 'type' => 'text:5:255', 'explain' => true), Всё. закончили. Если всё прошло успешно - идём в админку и настраиваем наш мод: Административный раздел - Общие - Размещение сообщений. в поле Интервал выставите значение времени, иначе мод не будет работать. После этого проверяем работу мода.
изменение внешнего вывода надписи "сообщение добавлено..."
редактировать внешний вид можно в языковом файле. language/ru/mods/posts_merging.phpстрока Код: Выделить всё 'MERGE_SEPARATOR' => "\n\n[size=85][color=green]%s спустя %s:[/color][/size]\n", size=85 - размер шрифта color=green - цвет шрифта
возможность уменьшения времени склеивания
к сожалению у меня не получилось. все предложенные варианты в оригинальной теме не сработали.
вывод возможности для пользователя "не склеивать"
Вложение:
Комментарий к файлу: не склеивать с предыдущим
posting_no.png [ 12.34 КБ | Просмотров: 4289 ]
posting_no.png
Открыть includes/post_merging.phpНайти Код: Выделить всё $merge = false; $merge_interval = intval($config['merge_interval']) * 3600; if (($current_time - $merge_post_data['topic_last_post_time']) < $merge_interval) { $merge = true; } Вставить после найденного Код: Выделить всё $do_not_merge=request_var('do_not_merge',false); if($do_not_merge) $merge=false; для стиля subsilver2: Открыть styles/ваш стиль/template/posting_body.htmlНайти Код: Выделить всё <!-- IF S_SIG_ALLOWED --> <tr> <td><input type="checkbox" class="radio" name="attach_sig"{S_SIGNATURE_CHECKED} /></td> <td class="gen">{L_ATTACH_SIG}</td> </tr> <!-- ENDIF --> Вставить после найденного Код: Выделить всё <tr> <td><input type="checkbox" class="radio" name="do_not_merge" /></td> <td class="gen">{L_DO_NOT_MERGE}</td> </tr> для стиля prosilver: Открыть styles/ваш стиль/template/posting_editor.htmlНайти Код: Выделить всё <div class="panel bg3" id="options-panel"> <div class="inner"><span class="corners-top"><span></span></span>
<fieldset class="fields1"> Вставить после найденного Код: Выделить всё <div><label for="do_not_merge"><input type="checkbox" name="do_not_merge" id="do_not_merge"{S_DO_NOT_MERGE} /> {L_DO_NOT_MERGE}</label></div> Открыть language/ru/common.php после (языковые правки) Найти Код: Выделить всё 'YOU_NO_NEW_PM' => 'У вас нет новых личных сообщений.', Вставить после найденного Код: Выделить всё 'DO_NOT_MERGE' => 'Не склеивать с предыдущим', информация взята здесь и здесь.
"не склеивать" в быстром ответе
Открыть viewtopic.phpНайти Код: Выделить всё // Output the posts $first_unread = $post_unread = false; for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i) Вставить перед найденным Код: Выделить всё include($phpbb_root_path . 'includes/posts_merging.' . $phpEx); Открыть (для subsilver2) quickreply_editor.htmlНайти (часть строки) Вставить после найденного Код: Выделить всё <br /><input type="checkbox" class="radio" name="do_not_merge" /> {L_DO_NOT_MERGE} Открыть (для prosilver) quickreply_editor.htmlНайти Код: Выделить всё <div style="width:99%;"><textarea style="height: 9em;" name="message" rows="7" cols="76" tabindex="3" class="inputbox"></textarea> Вставить после найденного Код: Выделить всё <br /><input type="checkbox" class="radio" name="do_not_merge" /> {L_DO_NOT_MERGE}
//Установил и здесь, на сайте. можете сами потестировать. время склеивания - 24 часа.
|
|
трёхголовый белк семейства рептилоидов: "три головы - хорошо, на как же трудно придти к согласию..."
|
|
Posts merging,phpbb 3.0.x,forum,Склейка сообщений
|
|
|
|
Стаж: 7 лет 8 месяцев 27 дней Сообщения: 736
Стиль: prosilver
Репутация: 15
перейти на сайт пользователя
Найти темы пользователя
|
Спасибо, Андрей! Вопрос по времени склейки. С стандартном исполнении мода минимальное время склейки = 1 часу. Хотелось бы понять как она происходит? т.е. Через час после размещенного сообщения начинается склейка? Или это происходит сразу? Что означает этот 1 час? Если я напишу сообщения с интервалом 2 часа, то они не будут склеены? Если я размещаю 3 сообщения и они склеиваются, то сколько будет в счетчике сообщений в профиле? 3 или 1?
|
|
|
|
|
|
|
|
Администратор |
|
Стаж: 9 лет 19 дней Сообщения: 1230 Откуда: здешние мы
Стиль: subsilver2
Репутация: 11
перейти на сайт пользователя
Найти темы пользователя
|
Буду ждать дополнения, в виде галочки на склеивания сообщений
в смысле? при создании темы ничего такого нет. все настройки только в админке. установил мод и здесь. Добавлено спустя 2 минуты 47 секунд:попробовал уменьшение времени - не получилось. оставил так. чисто целые числа (часы) - 1,2,3 и так далее. Добавлено спустя 5 минут 19 секунд:изменение внешнего вида надписи Добавлено спустя 18 минут 34 секунды:проверка окончательная стандартного варианта через быстрый ответ
|
|
трёхголовый белк семейства рептилоидов: "три головы - хорошо, на как же трудно придти к согласию..."
|
|
|
|
|
|
Стаж: 7 лет 8 месяцев 27 дней Сообщения: 736
Стиль: prosilver
Репутация: 15
перейти на сайт пользователя
Найти темы пользователя
|
в смысле? при создании темы ничего такого нет. все настройки только в админке. установил мод и здесь.
Я читал на официальном сайте, что можно доработать мод. Появится галочка при ответе "Не склеивать сообщения" Это нужно, например когда создаешь какое-то важное сообщение и не хочешь что бы оно склеивалось Добавлено спустя 44 секунды:Андрей, а правки для быстрой цитаты не нужно делать, при установки данного мода?
|
|
|
|
|
|
|
|
Администратор |
|
Стаж: 9 лет 19 дней Сообщения: 1230 Откуда: здешние мы
Стиль: subsilver2
Репутация: 11
перейти на сайт пользователя
Найти темы пользователя
|
Я читал на официальном сайте, что можно доработать мод. Появится галочка при ответе "Не склеивать сообщения"
а там написано, как это сделать? я сам вряд ли найду решение.
Андрей, а правки для быстрой цитаты не нужно делать, при установки данного мода?
нет. всё срабатывает и так.
|
|
трёхголовый белк семейства рептилоидов: "три головы - хорошо, на как же трудно придти к согласию..."
|
|
|
|
|
|
Стаж: 7 лет 8 месяцев 27 дней Сообщения: 736
Стиль: prosilver
Репутация: 15
перейти на сайт пользователя
Найти темы пользователя
|
Ок. Спс Добавлено спустя 34 минуты 13 секунд:Работает, Андрей! Единственно у меня строчка была другой. Но я догадался что её на до менять полностью. Код: Выделить всё 'POST_DATE' => (!$row['post_created']) ? $user->format_date($row['post_time'], false, ($view == 'print') ? true : false) : $user->format_date($row['post_created'], false, ($view == 'print') ? true : false), Добавлено спустя 12 минут 46 секунд:Андрей, сейчас попробую сделать "Индивидуальное отключение склейки при написании следующего сообщения..." раз масть поперла По результатам отпишусь. Добавлено спустя 7 минут 58 секунд:Что странно: ни posting_body.html ни posting_editor.html не вижу у себя на хостинге Добавлено спустя 1 минуту 36 секунд:Ага, эти файлы находятся в стиле., т.е styles/prosilver/template Добавлено спустя 21 минуту 23 секунды:Такссс... Сделал всё по инструкции как в этом посту пчелкина: https://www.phpbbguru.net/community/vie ... 60#p398300Все работает! Кроме быстрого ответа. Там как то по-другому сделано нежели тут на этом форуме и у меня Добавлено спустя 6 минут 7 секунд:Только теперь у меня две кнопки "не склеивать сообщение" Блин, как так? Не пойму Добавлено спустя 4 минуты 16 секунд:Разобрался. Надо выполнять инструкцию с этого места: "Индивидуальное отключение склейки при написании следующего сообщения..." в вышеуказанной ссылки.
Вложения: |
skleyka.png [ 23.09 КБ | Просмотров: 3883 ]
skleyka.png
|
|
|
|
|
|
|
|
|
Администратор |
|
Стаж: 9 лет 19 дней Сообщения: 1230 Откуда: здешние мы
Стиль: subsilver2
Репутация: 11
перейти на сайт пользователя
Найти темы пользователя
|
Кроме быстрого ответа. Там как то по-другому сделано нежели тут на этом форуме и у меня
в смысле? у вас модифицированный быстрый ответ? то есть там уже есть выбор, например Сообщать мне о получении ответа? если "да", то надо просто подключить вывод мода как в posting.php в файл viewtopic.php. тогда и в быстром ответе эта функция заработает. видите, сами справились, можно было и не помогать. сегодня у себя поставлю и отпишусь в самой теме как "дополнение"...
|
|
трёхголовый белк семейства рептилоидов: "три головы - хорошо, на как же трудно придти к согласию..."
|
|
|
|
|
|
Стаж: 7 лет 8 месяцев 27 дней Сообщения: 736
Стиль: prosilver
Репутация: 15
перейти на сайт пользователя
Найти темы пользователя
|
Да вот не могу найти, лапачу всю тему, а там 50 с лишним страниц Сейчас тестирую - все ровно. Остались спасибки. Добавлено спустя 1 минуту 13 секунд:P.S. Андрей ты зря мод репутаций поставил, не могу тебе репу поднимать, пока кому-нибудь другому не подниму... Добавлено спустя 3 минуты 21 секунду:Мода тега у меня нет Добавлено спустя 9 минут 51 секунду:Странно, сейчас все работает. По всякому тестировали: http://crimea-your.ru/forum/viewtopic.p ... 317#p44312Короче хз
|
|
|
|
|
|
|
|
Администратор |
|
Стаж: 9 лет 19 дней Сообщения: 1230 Откуда: здешние мы
Стиль: subsilver2
Репутация: 11
перейти на сайт пользователя
Найти темы пользователя
|
Короче хз
так интереснее... Добавлено спустя 20 секунд:проверка склеивания
|
|
трёхголовый белк семейства рептилоидов: "три головы - хорошо, на как же трудно придти к согласию..."
|
|
|
|
|
|
Администратор |
|
Стаж: 9 лет 19 дней Сообщения: 1230 Откуда: здешние мы
Стиль: subsilver2
Репутация: 11
перейти на сайт пользователя
Найти темы пользователя
|
проверка несклеивания в быстром ответе получилось. только не знаю - будут ошибки или нет. если поставите - посмотрите лог ошибок по viewtopic. у меня в одном логе несколько сайтов выводится - жутко неудобно смотреть... Открыть viewtopic.phpНайти Код: Выделить всё // Output the posts $first_unread = $post_unread = false; for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i) Вставить перед найденным Код: Выделить всё include($phpbb_root_path . 'includes/posts_merging.' . $phpEx); Открыть quickreply_editor.htmlНайти (часть строки) Вставить после найденного Код: Выделить всё <br /><input type="checkbox" class="radio" name="do_not_merge" /> {L_DO_NOT_MERGE} попробуйте. как получится - можно увидеть у меня в быстром ответе. под сообщением.
|
|
трёхголовый белк семейства рептилоидов: "три головы - хорошо, на как же трудно придти к согласию..."
|
|
|
|
|
|
Стаж: 7 лет 8 месяцев 27 дней Сообщения: 736
Стиль: prosilver
Репутация: 15
перейти на сайт пользователя
Найти темы пользователя
|
Теперь без склейки Добавлено спустя 22 секунды:Работает, круто! Добавлено спустя 3 часа 41 минуту 40 секунд:А у меня нет такой строчки, Андрей Вот файл: Код: Выделить всё <script type="text/javascript"> // <![CDATA[ function hide_qr(show) { dE('qr_editor_div'); dE('qr_showeditor_div'); if (show && document.getElementById('qr_editor_div').style.display != 'none') { document.getElementsByName('message')[0].focus(); } return true; }
function init_qr() { dE('qr_showeditor_div'); return true; } onload_functions.push('init_qr();'); // ]]> </script> <noscript> <form method="post" action="{U_QR_ACTION}"> <div class="panel" id="qr_ns_editor_div"> <div class="inner"><span class="corners-top"><span></span></span> <h2>{L_QUICKREPLY}</h2> <fieldset class="fields1"> <dl style="clear: left;"> <dt><label for="subject">{L_SUBJECT}:</label></dt> <dd><input type="text" name="subject" id="subject-ns" size="45" maxlength="64" tabindex="2" value="{SUBJECT}" class="inputbox autowidth" /></dd> </dl> <!-- INCLUDE posting_buttons.html --> <div id="message-box-ns"> <textarea style="height: 9em;" name="message" rows="7" cols="76" tabindex="3" class="inputbox"></textarea> </div> </fieldset> <fieldset class="submit-buttons"> {S_FORM_TOKEN} {QR_HIDDEN_FIELDS} <input type="submit" accesskey="s" tabindex="6" name="post" value="{L_SUBMIT}" class="button1" /> <input type="submit" accesskey="f" tabindex="7" name="full_editor" value="{L_FULL_EDITOR}" class="button2" /> </fieldset> <span class="corners-bottom"><span></span></span></div> </div> </form> </noscript> <form id="postform" method="post" action="{U_QR_ACTION}"> <div class="panel" id="qr_editor_div"> <div class="inner"><span class="corners-top"><span></span></span> <h2>{L_QUICKREPLY}</h2> <fieldset class="fields1"> <dl style="clear: left;"> <dt><label for="subject">{L_SUBJECT}:</label></dt> <dd><input type="text" name="subject" id="subject" size="45" maxlength="64" tabindex="2" value="{SUBJECT}" class="inputbox autowidth" /></dd> </dl> <div id="message-box; width:100%;"> <!-- INCLUDE posting_buttons.html --> <div id="smiley-box" style="max-height: 100px; overflow: auto; width:100%; float:right;"> <!-- IF S_SMILIES_ALLOWED and .smiley --> <strong>{L_SMILIES}</strong><br /> <!-- BEGIN smiley --> <a href="#" onclick="insert_text('{smiley.A_SMILEY_CODE}', true); return false;"><img src="{smiley.SMILEY_IMG}" width="{smiley.SMILEY_WIDTH}" height="{smiley.SMILEY_HEIGHT}" alt="{smiley.SMILEY_CODE}" title="{smiley.SMILEY_DESC}" /></a> <!-- END smiley --> <!-- ENDIF --> <!-- IF S_SHOW_SMILEY_LINK and S_SMILIES_ALLOWED--> <br /><a href="{U_MORE_SMILIES}" onclick="popup(this.href, 300, 350, '_phpbbsmilies'); return false;">{L_MORE_SMILIES}</a> <!-- ENDIF --> </div> <div style="width:99%;"><textarea style="height: 9em;" name="message" rows="7" cols="76" tabindex="3" class="inputbox"></textarea> <ul class="nav-main"><li><a href="http://crimea-your.ru/forum/viewtopic.php?f=11&t=669" class="button button-blue" title="Перейти" target="_blank">Помощь по редактированию</a></li></ul></div> </div> </fieldset> <fieldset class="submit-buttons"> {S_FORM_TOKEN} {QR_HIDDEN_FIELDS} <input type="submit" accesskey="s" tabindex="6" name="post" value="{L_SUBMIT}" class="button1" /> <input type="submit" accesskey="f" tabindex="7" name="full_editor" value="{L_FULL_EDITOR}" class="button2" /> </fieldset> <a href="" class="right-box up" onclick="hide_qr(false); return false;" title="{L_COLLAPSE_QR}">{L_COLLAPSE_QR}</a> <span class="corners-bottom"><span></span></span></div> </div> <div class="panel" id="qr_showeditor_div" > <div class="inner"><span class="corners-top"><span></span></span>
<div class="content"> <fieldset class="submit-buttons"> <input type="submit" name="show_qr" tabindex="1" class="button2" value="{L_SHOW_QR}" onclick="hide_qr(true);return false;"/> </fieldset> </div> <span class="corners-bottom"><span></span></span></div> </div> </form>
|
|
|
|
|
|
|
|
Администратор |
|
Стаж: 9 лет 19 дней Сообщения: 1230 Откуда: здешние мы
Стиль: subsilver2
Репутация: 11
перейти на сайт пользователя
Найти темы пользователя
|
код Код: Выделить всё <div style="width:99%;"><textarea style="height: 9em;" name="message" rows="7" cols="76" tabindex="3" class="inputbox"></textarea> <ul class="nav-main"><li><a href="http://crimea-your.ru/forum/viewtopic.php?f=11&t=669" class="button button-blue" title="Перейти" target="_blank">Помощь по редактированию</a></li></ul></div> заменить на (выбор под кнопкой "помощи") Код: Выделить всё <div style="width:99%;"><textarea style="height: 9em;" name="message" rows="7" cols="76" tabindex="3" class="inputbox"></textarea> <ul class="nav-main"><li><a href="http://crimea-your.ru/forum/viewtopic.php?f=11&t=669" class="button button-blue" title="Перейти" target="_blank">Помощь по редактированию</a></li></ul> <br /><input type="checkbox" class="radio" name="do_not_merge" /> {L_DO_NOT_MERGE} </div> или так (выбор несклеивания как у меня): Код: Выделить всё <div style="width:99%;"><textarea style="height: 9em;" name="message" rows="7" cols="76" tabindex="3" class="inputbox"></textarea> <br /><input type="checkbox" class="radio" name="do_not_merge" /> {L_DO_NOT_MERGE}<br /> <ul class="nav-main"><li><a href="http://crimea-your.ru/forum/viewtopic.php?f=11&t=669" class="button button-blue" title="Перейти" target="_blank">Помощь по редактированию</a></li></ul> </div> отступы регулируются <br />...
|
|
трёхголовый белк семейства рептилоидов: "три головы - хорошо, на как же трудно придти к согласию..."
|
|
|
|
|