Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[BETA] Вывод сообщений начиная с указанного

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет
Контактная информация:

[BETA] Вывод сообщений начиная с указанного

Сообщение quazi »

Show messages before

написано по мотивам темы вывод сообщений начиная с указанного и кое-что еще...

мне изначально понравился один из запросов автора. подобное я уже видел на форуме dklab. реализация очень простая - умозрительно я ее выполнил буквально в течение нескольких минут. позже я решил теорию подтвердить практикой. положительный результат незамедлительно проявился.

суть мода:
имеется возможность указывать ссылку на конкретное сообщение в теме. при этом указанное сообщение при переходе по ссылке отображается самым первым, а предыдущие сообщения не отображаются, но появляется ссылка "Читать всю тему", при переходе на которую имеется возможность прочитать всю тему

в коде мода содержатся две строчки, закоментированные четыремя слешами ////
1. если необходимо сохранить подсветку слов (например, вы пришли в тему по ссылке и хотите подсветить слова из поиска удалите первую группу слешей.
2. если необходимо автоматически "проскроллить" шапку (которая обычно занимает до 30% экранного места) - удалите вторую группу слешей

Код: Выделить всё

##############################################################
## MOD Title: Show Messages Before
## MOD Author: quazi < nospam@nomail.com > (quazi) http://domain.tld/
## MOD Description: This mod allows numbering of messages and links to messages that so post starts from this one
## MOD Version: 1.0.0
##
## Installation Level: Easy
## Installation Time: 3 Minutes
## Files To Edit: viewtopic.php, templates/subSilver/viewtopic.tpl, languages/lang_XXX/lang_main.php
## Included Files: n/a
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/
##############################################################
## Author Notes: None
##
##############################################################
## MOD History:
##
##   2006-05-23 - Version 1.0.0
##      - The first public release
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
#
#-----[ OPEN ]------------------------------------------
#

viewtopic.php

#
#-----[ FIND ]------------------------------------------
#

		'U_POST_ID' => $postrow[$i]['post_id'])
	);
}

#
#-----[ REPLACE WITH ]----------------------------------
#

		'U_POST_ID' => $postrow[$i]['post_id'])
	);

	//
	// +Show messages before
	if ( @$start + $i ) {
		$template->assign_block_vars('postrow.show_reply_number', array(
			'REPLY_NUMBER' => (@$start + $i),
			'U_REPLY_NUMBER' => append_sid("viewtopic.$phpEx?"
				. POST_TOPIC_URL . "=$topic_id&start=" . (@$start + $i)
				. "&postdays=$post_days&postorder=$post_order&highlight=$highlight"
				. "#" . $postrow[$i]['post_id']
				),
		));
	}
	// -Show messages before
	//
}

//
// +Show messages before
if ( @$start ) {
	$template->assign_block_vars('show_messages_before', array(
		'L_SHOW_MESSAGES_BEFORE' => $lang['show_messages_before'],
		'U_SHOW_MESSAGES_BEFORE' => append_sid("viewtopic.$phpEx?"
			. POST_TOPIC_URL . "=$topic_id&start=0&postdays=$post_days&postorder=$post_order&highlight=$highlight"
			),
	));
}
// -Show messages before
//

#
#-----[ OPEN ]------------------------------------------
#

templates/subSilver/viewtopic.tpl

#
#-----[ FIND ]------------------------------------------
#

<!-- BEGIN postrow -->

#
#-----[ BEFORE, ADD ]------------------------------------------
#

<!-- BEGIN show_messages_before -->
<td class="row2">&nbsp;</td>
<td class="row2" align="center" height="35"><b><a class="genmed" href="{show_messages_before.U_SHOW_MESSAGES_BEFORE}">{show_messages_before.L_SHOW_MESSAGES_BEFORE}</a></b></td>
<!-- END show_messages_before -->

#
#-----[ FIND ]------------------------------------------
#

        <tr>
                <td width="100%">
                        <span class="postdetails">

#
#-----[ AFTER, ADD ]------------------------------------------
#

			<!-- BEGIN show_reply_number -->
			[<b><a href="{postrow.show_reply_number.U_REPLY_NUMBER}">{postrow.show_reply_number.REPLY_NUMBER}</a></b>]&nbsp;
			<!-- END show_reply_number -->

#
#-----[ OPEN ]------------------------------------------
#

languages/lang_russian/lang_main.php

#
#-----[ FIND ]------------------------------------------
#

?>

#
#-----[ BEFORE, ADD ]------------------------------------------
#

//
// +Show messages before
$lang['show_messages_before'] = 'Читать всю тему';
// -Show messages before
//

#
#-----[ OPEN ]------------------------------------------
#

languages/lang_english/lang_main.php

#
#-----[ FIND ]------------------------------------------
#

?>

#
#-----[ BEFORE, ADD ]------------------------------------------
#

//
// +Show messages before
$lang['show_messages_before'] = 'Read the whole of the topic';
// -Show messages before
//

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Последний раз редактировалось quazi 25.08.2006 9:36, всего редактировалось 2 раза.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет
Поблагодарили: 2 раза
Контактная информация:

Сообщение Xpert »

quazi писал(а):@$start
Я понимаю что так можно писать. Но закрытие вывода об ошибке не есть исправление. :)

Что касается "читать далее", имхо стоит проверять $start % число_сообщений_на_страницу_в_ конфигурации. Тогда можно сделать более четкое различие между постраничным переходом и переходом на пост. Хотя может я что-то не так понял.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 4 месяца
Поблагодарили: 13 раз
Контактная информация:

Сообщение VVVas »

Не ставил, но интересует такой вопрос - читать всю тему можно сделать возвратом на это же сообщение как и просто при переходе на сообщение?
я люблю daft punk | новый sugoi.ru
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет
Контактная информация:

Сообщение quazi »

Xpert писал(а):Но закрытие вывода об ошибке не есть исправление
понимаешь, я ставил сразу на рабочий форум. на тот случай, если переменная $start не будет существовать в момент моего обращения к ней, выведутся предупреждения (в броузер или в лог-файл сайта)

это не совсем ошибка. это всего лишь упрощение.
ведь я мог написать

Код: Выделить всё

if ( isset($start) && ($start + $i) )
if ( ! empty($start) )
в таком контексте я всего лишь "упростил" код.

-----------------------------------------------
"читать дальше" != "читать всю тему"

возможно имело смысл написать "читать сначала". если это многостраничная тема - пейджер корректно отображается даже на границе страниц
например

Код: Выделить всё

тема содержит 18 ответов (то есть 19 сообщений)
Сообщений на страницу установлено в 10

при показе viewtopic.php?t=ХХХ&start=9
пейджер отображается 
На страницу 1, 2  След.

при показе viewtopic.php?t=ХХХ&start=10
пейджер отображается 
На страницу Пред.  1, 2
Xpert писал(а):имхо стоит проверять $start % число_сообщений_на_страницу_в_ конфигурации
разумно
однако я предполагал, что неизвестно заранее как человек захочет читать. если страниц много - можно начать читать непосредственно с указанной страницы (ссылки ведь есть)

пока пошел по простому пути - читать всю тему с самого начала
позже подумаю

VVVas
не совсем понял? можно подробнее и поточнее?
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 4 месяца
Поблагодарили: 13 раз
Контактная информация:

Сообщение VVVas »

При переход по линку "читать всю тему" мы возвращаемся к началу темы, а можно сделать ещё один линк что бы возвращаться к этому же сообщению как в обычном phpbb при ссылке на пост?
я люблю daft punk | новый sugoi.ru
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет
Контактная информация:

Сообщение quazi »

VVVas
а как разделить случаи
1. приход по ссылке с другого сайта
2. простое открытие данной темы
3. возврат к данному сообщению после прочтения всей темы
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет
Контактная информация:

Сообщение quazi »

Xpert писал(а):имхо стоит проверять $start % число_сообщений_на_страницу_в_ конфигурации
я думаю имеет смысл сделать так (на примере)

тема содержит N сообщений
Сообщений на страницу ($board_config['posts_per_page']) установлено в M

при вызове viewtopic.php?t=ХХХ&start=Y
показывать только сообщения
от $start до ( floor($start / $board_config['posts_per_page']) + 1 ) * $board_config['posts_per_page'] - 1

например, если

Код: Выделить всё

N = 25
M = 10
start = 13
то будут показаны только сообщения от 13 до 19, включительно
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет
Контактная информация:

Сообщение quazi »

а вообще-то надо пересмотреть имя параметра
start - это значит с какого сообщения начинать страницу
что еще нельзя использовать из имеющихся
t - id темы
p - id сообщения

может ввести новый параметр (один из pick, message, msg, m, post) ?
например, по смыслу - отобрать указанное сообщение и читать дальше - pick out this message (post) and go on reading

оффтопом:
вообще-то на эту страницу ведут несколько ссылок
якоря (то что после # не в счет - они необходимы только для позиционирования на данное сообщение)

точно так же можно было бы сделать (для второй и третьей ссылок)
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет
Контактная информация:

Сообщение quazi »

поправил первый пост
было

Код: Выделить всё

            ////. "&postdays=$post_days&postorder=$post_order&highlight=$highlight"
            ////. "#" . $postrow[$i]['post_id']
стало

Код: Выделить всё

            . "&postdays=$post_days&postorder=$post_order&highlight=$highlight"
            . "#" . $postrow[$i]['post_id']
бывают глюки при выборе опций (внизу списка постов)
показать сообщения: начиная с новых
Закрыто

Вернуться в «Бета-версии модов для phpBB 2.0.x»