Количество сообщений для определенного поста, а не топика!

У вас есть идея для расширения функциональности phpBB 3.0.x? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Piercer
phpBB 1.2.0
Сообщения: 18
Стаж: 18 лет 4 месяца
Благодарил (а): 2 раза
Поблагодарили: 3 раза

Количество сообщений для определенного поста, а не топика!

Сообщение Piercer »

Приветствую.
Поискал, не обнаружил, задаю вопрос:
- есть, например, тема на форуме с 10-тю фотками в каждом сообщении
- тема отображается, сами понимаете, долго и некрасиво (10 сообщений по умолчанию * 10 фоток = 100 фоток = 3 минуты загрузки)

Требуется: вручную выставить для этой темы кол-во сообщений на странице - "1". И только для этой темы. Например, так реализована функция "Модерация темы" - можно поставить свое кол-во сообщений на странице. Но эта функция реализована для удобства модератора, т.е. только для модерации. А вот как бы сделать так, чтобы можно и для пользователя назначить показывать 1 сообщение на странице?

Еще раз подчеркиваю, что 1 сообщение для конкретной темы, а не для всего раздела форума или ветки форума. Спасибо!

Добавлено спустя 1 минуту 48 секунд:
Попытаюсь поставить мод http://www.phpbb.com/community/viewtopi ... ge+profile - но может быть кто-то другое подскажет?

Добавлено спустя 2 минуты 36 секунд:
Дело в том, что этот мод - Post Per Page - только для юзера. Т.е. не модератор и не админ, а сам юзер вручную может выставлять для себя, какое кол-во сообщений на странице ему показываться будет. А вот как бы для всех определить, причем только для конкретного одного сообщения - хз. Спасибо.
С уважением, Алекс (www.piercer.ru)
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Количество сообщений для определенного поста, а не топик

Сообщение Nekstati »

1. Почему бы не воспользоваться функцией создания миниатюр для вложений?
2. Или почему бы не постить по 1-2-3 фотки в каждом сообщении?
3. Указанный вами мод не годится, он меняет число постов на страницу во всех темах сразу.
4. Сделать-то оно можно, но сложно… Точно не скажу, но, по-моему, такого мода нет.
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 21 год 4 месяца
Благодарил (а): 79 раз
Поблагодарили: 69 раз
Забанен: Бессрочно

Re: Количество сообщений для определенного поста, а не топик

Сообщение MAzZY »

А если взять тот мод и жестко забить в него id темы?
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Количество сообщений для определенного поста, а не топик

Сообщение Палыч »

MAzZY
Думаю, такая тема у него не одна...
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 21 год 4 месяца
Благодарил (а): 79 раз
Поблагодарили: 69 раз
Забанен: Бессрочно

Re: Количество сообщений для определенного поста, а не топик

Сообщение MAzZY »

Ну если их не 100 тыщ, то можно какое-то условие придумать. Хотя как-то это все через не то место реализуется
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: Количество сообщений для определенного поста, а не топик

Сообщение MIT »

Сейчас модик накатаю...

Добавлено спустя 1 час 59 минут 7 секунд:
Re: Количество сообщений для определенного поста, а не топика!
Piercer, вот тебе мод. Надеюсь я правильно понял чего тебе хоцца (а то мне не долго и переврать всё :mrgreen: ).
mod_perPage.txt
Реквизиты для оплаты могу выслать в ЛС ;)

Добавлено спустя 1 минуту 36 секунд:
Re: Количество сообщений для определенного поста, а не топика!
На то как оно работает можно глянуть тут: http://yuri.mittest.ru/viewtopic.php?f=2&t=9

Добавлено спустя 55 секунд:
Re: Количество сообщений для определенного поста, а не топика!
У каждого топика появилась персональная настройка, её можно задавать при создании темы и при редактировании первого поста.

Добавлено спустя 48 секунд:
Re: Количество сообщений для определенного поста, а не топика!
И это значение не может быть больше чем установленное в админке, что бы юзеры не баловались.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: Количество сообщений для определенного поста, а не топик

Сообщение FladeX »

MIT
оперативно :)
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
Piercer
phpBB 1.2.0
Сообщения: 18
Стаж: 18 лет 4 месяца
Благодарил (а): 2 раза
Поблагодарили: 3 раза

Re: Количество сообщений для определенного поста, а не топик

Сообщение Piercer »

И это значение не может быть больше чем установленное в админке, что бы юзеры не баловались.
не найду никак в коде, где эта настройка и установка? в админке где это поле должно появиться плиз! спс
С уважением, Алекс (www.piercer.ru)
Аватара пользователя
Dbonz
phpBB 2.0.0
Сообщения: 231
Стаж: 14 лет 2 месяца
Благодарил (а): 25 раз
Поблагодарили: 25 раз

Re: Количество сообщений для определенного поста, а не топик

Сообщение Dbonz »

MIT писал(а):mod_perPage.txt
MIT
Поставил на чистый 3012.

1. При нажатии на ярлычок "Перейти к последнему сообщению" кидает почему-то на первую страницу темы с ошибкой. Плюс, кодировка на этой странице сбита. Стоит перелистать туда-обратно и ошибка исчезает, кодировка восстанавливается.
2. После отправки сообщения аналогично редиректит на первую страницу темы с такой же ошибкой и сбоем кодировки. Исчезает так же.
3. После установки количество страниц в многостраничных темах многократно увеличилось с прежним количеством постов на странице. Т.е. добавились пустые страницы в темах.

Код ошибки:

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

[phpBB Debug] PHP Warning: in file [ROOT]/viewtopic.php on line 411: Division by zero
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4752: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4754: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4755: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4756: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887) 
Запрос выполнял такой:

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

ALTER TABLE `phpbb_topics` ADD posts_per_page MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT 0
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Количество сообщений для определенного поста, а не топик

Сообщение Татьяна5 »

Dbonz

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

$posts_per_page = ($topic_data['posts_per_page']>0) ? min($config['posts_per_page'], $topic_data['posts_per_page']) : $topic_data['posts_per_page'];
Замените на

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

$posts_per_page = ($topic_data['posts_per_page']>0) ? min($config['posts_per_page'], $topic_data['posts_per_page']) : $config['posts_per_page'];
(не проверяла)
Аватара пользователя
Dbonz
phpBB 2.0.0
Сообщения: 231
Стаж: 14 лет 2 месяца
Благодарил (а): 25 раз
Поблагодарили: 25 раз

Re: Количество сообщений для определенного топика/темы

Сообщение Dbonz »

Волшебно! Сработало. Большое спасибо Татьяна5!

Нашел ещё один баг. При выдаче результата по search.php("Ваши сообщения", "Активные темы" и т.д.) аналогично в многостраничных темах прибавилось пустых страниц.

Т.е. необходимо повторить правку viewforum.php для search.php

В результате имеем:
Скрытый текст
SQL:

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

ALTER TABLE `phpbb_topics` ADD posts_per_page MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT 0
Open viewtopic.php
Find

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

$forum_id = (int) $topic_data['forum_id'];
Add before

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

$posts_per_page = ($topic_data['posts_per_page']>0) ? min($config['posts_per_page'], $topic_data['posts_per_page']) : $config['posts_per_page'];
Find

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

	$start = floor(($topic_data['prev_posts']) / $config['posts_per_page']) * $config['posts_per_page'];
Replace with

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

	$start = floor(($topic_data['prev_posts']) / $posts_per_page) * $posts_per_page;
Find

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

	$start = ($start < 0) ? 0 : floor(($total_posts - 1) / $config['posts_per_page']) * $config['posts_per_page'];
Replace with

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

	$start = ($start < 0) ? 0 : floor(($total_posts - 1) / $posts_per_page) * $posts_per_page;
Find

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

$pagination = generate_pagination(append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id" . ((strlen($u_sort_param)) ? "&$u_sort_param" : '') . (($highlight_match) ? "&hilit=$highlight" : '')), $total_posts, $config['posts_per_page'], $start);
Replace with

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

$pagination = generate_pagination(append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id" . ((strlen($u_sort_param)) ? "&$u_sort_param" : '') . (($highlight_match) ? "&hilit=$highlight" : '')), $total_posts, $posts_per_page, $start);
Find

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

	'PAGE_NUMBER' 	=> on_page($total_posts, $config['posts_per_page'], $start),
Replace with

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

	'PAGE_NUMBER' 	=> on_page($total_posts, $posts_per_page, $start),
Find

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

$sql_limit = $config['posts_per_page'];
Replace with

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

$sql_limit = $posts_per_page;
Find

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

	if ($start + $config['posts_per_page'] > $total_posts)
Replace with

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

	if ($start + $posts_per_page > $total_posts)
Find

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

		$sql_limit = min($config['posts_per_page'], max(1, $total_posts - $start));
Replace with

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

		$sql_limit = min($posts_per_page, max(1, $total_posts - $start));
Find

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

	$last_page = ((floor($start / $config['posts_per_page']) + 1) == max(ceil($total_posts / $config['posts_per_page']), 1)) ? true : false;
Replace with

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

	$last_page = ((floor($start / $posts_per_page) + 1) == max(ceil($total_posts / $posts_per_page), 1)) ? true : false;
Open viewforum.php
Find

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

			'PAGINATION'		=> topic_generate_pagination($replies, $view_topic_url),
Repace with

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

			'PAGINATION'		=> topic_generate_pagination2($replies, $view_topic_url, $row['posts_per_page']),
Open search.php
Find

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

					'PAGINATION'		=> topic_generate_pagination($replies, $view_topic_url),
Repace with

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

					'PAGINATION'		=> topic_generate_pagination2($replies, $view_topic_url, $row['posts_per_page']),
Open posting.php
Find

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

	// Store message, sync counters
Add before

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

	$posts_per_page = 0;
	if ($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id']))
	{
		if (isset($_POST['posts_per_page']))
		{
			$posts_per_page = (int)$_POST['posts_per_page'];
			if ($posts_per_page < 0)
			{
				$error[] = $user->lang['POSTS_PER_PAGE_ERR1'];
			}
			else if ($posts_per_page > $config['posts_per_page'])
			{
				$error[] = $user->lang['POSTS_PER_PAGE_ERR2'];
			}
		}
	}
Find

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

				'post_approved'			=> (isset($post_data['post_approved'])) ? $post_data['post_approved'] : false,
Add after

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

				'posts_per_page'		=> $posts_per_page,
Find

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

// Start assigning vars for main posting page ...
$template->assign_vars(array(
Add after

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

	'SHOW_PPP_OPTION' 		=> ($mode == 'post') || ($post_id == $post_data['topic_first_post_id']),
	'POSTS_PER_PAGE'		=> (($mode == 'post') || ($post_id == $post_data['topic_first_post_id'])) ? ((isset($_POST['posts_per_page'])) ? (int)$_POST['posts_per_page'] : (int)$post_data['posts_per_page']) : false,
Open includes\functions_posting.php
Find

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

				'topic_attachment'			=> (!empty($data['attachment_data'])) ? 1 : 0,
Add after

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

				'posts_per_page'			=> $data['posts_per_page'],
Find

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

				'topic_attachment'			=> (!empty($data['attachment_data'])) ? 1 : (isset($data['topic_attachment']) ? $data['topic_attachment'] : 0),
Add after

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

				'posts_per_page'			=> $data['posts_per_page'],
Open includes\functions_display.php
Find

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

function topic_generate_pagination($replies, $url)
{
	global $config, $user;

	// Make sure $per_page is a valid value
	$per_page = ($config['posts_per_page'] <= 0) ? 1 : $config['posts_per_page'];
Replace with

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

function topic_generate_pagination($replies, $url)
{
	// Make sure $per_page is a valid value
	return topic_generate_pagination2($replies, $url, ($config['posts_per_page'] <= 0) ? 1 : $config['posts_per_page']);
}
function topic_generate_pagination2($replies, $url, $per_page)
{
	global $config, $user;

	// Make sure $per_page is a valid value
	if ($per_page <= 0) $per_page = ($config['posts_per_page'] <= 0) ? 1 : $config['posts_per_page'];
Open styles\prosilver\template\posting_editor.html
Find

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

			<!-- IF S_TYPE_TOGGLE -->
Add before

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

			<!-- IF SHOW_PPP_OPTION -->
			<dl>
				<dt><label for="posts_per_page">{L_POSTS_PER_PAGE}:</label></dt>
				<dd><label for="posts_per_page"><input type="text" name="posts_per_page" id="posts_per_page" size="3" maxlength="3" value="{POSTS_PER_PAGE}" class="inputbox autowidth" /></label></dd>
			</dl>
			<!-- ENDIF -->
Open language\ru\posting.php
Find

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

	'POST_TOPIC_AS'				=> 'Статус создаваемой темы',
Add after

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

	'POSTS_PER_PAGE'		=> 'Сообщений на страницу',
	'POSTS_PER_PAGE_ERR1'		=> 'Количество сообщений должно быть больше нуля (или нуль, для игнорирования параметра)',
	'POSTS_PER_PAGE_ERR2'		=> 'Количество сообщений не может быть больше установленного администратором!',
Ещё в mcp.php при модерации темы выводится глобальная настройка кол-ва сообщений на странице, но это уже чепуха на любителя))
А так, очень полезный мод. Спасибо MITу!
Аватара пользователя
Dbonz
phpBB 2.0.0
Сообщения: 231
Стаж: 14 лет 2 месяца
Благодарил (а): 25 раз
Поблагодарили: 25 раз

Re: Количество сообщений для определенного поста, а не топик

Сообщение Dbonz »

Ещё одна ошибка вылезла…
Дебагер ругается на эту строчку при старте новой темы:

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

	'POSTS_PER_PAGE'		=> (($mode == 'post') || ($post_id == $post_data['topic_first_post_id'])) ? ((isset($_POST['posts_per_page'])) ? (int)$_POST['posts_per_page'] : (int)$post_data['posts_per_page']) : false,
Код ошибки:

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

[phpBB Debug] PHP Notice: in file [ROOT]/posting.php on line 1441: Undefined index: posts_per_page
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4752: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4754: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4755: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4756: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887)
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Количество сообщений для определенного поста, а не топик

Сообщение Татьяна5 »

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

	'POSTS_PER_PAGE'		=> (($mode == 'post') || ($post_id == $post_data['topic_first_post_id'])) ? ((isset($_POST['posts_per_page'])) ? (int)$_POST['posts_per_page'] : (int)$post_data['posts_per_page']) : false,
Заменить на

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

	'POSTS_PER_PAGE'		=> (($mode == 'post') || ($post_id == $post_data['topic_first_post_id'])) ? ((isset($_POST['posts_per_page'])) ? (int)$_POST['posts_per_page'] : (int)$data['posts_per_page']) : false,
Аватара пользователя
Dbonz
phpBB 2.0.0
Сообщения: 231
Стаж: 14 лет 2 месяца
Благодарил (а): 25 раз
Поблагодарили: 25 раз

Re: Количество сообщений для определенного поста, а не топик

Сообщение Dbonz »

Не прокатило…

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

[phpBB Debug] PHP Notice: in file [ROOT]/posting.php on line 1441: Undefined variable: data
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4752: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4754: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4755: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4756: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3887)
Прокатывает, если аналогично config воткнуть, но тогда число из настроек подставляется вместо нолика. Хотя тоже не критично.))
Спасибо!

Вернуться в «Запросы модов для phpBB 3.0.x»