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

[RC] Topiclist FX / Список тем

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Sax
phpBB 1.4.4
Сообщения: 141
Стаж: 10 лет 1 месяц
Благодарил (а): 16 раз

Re: [RC] Topiclist FX / Список тем

Сообщение Sax »

Кто ни будь может рассказать как разбить ссылки-карту на несколько страниц, а то не хочется в бан влететь, да и страница больно длинная уже.

Ещё бы сделать не в один столбик, а хотя бы в два - ссылки.
Аватара пользователя
dndn
phpBB 1.4.4
Сообщения: 125
Стаж: 9 лет 6 месяцев
Откуда: Украина
Благодарил (а): 28 раз
Поблагодарили: 4 раза

Re: [RC] Topiclist FX / Список тем

Сообщение dndn »

Может кого-то устроит такое решение проблемы слишком большого количества тем в списке - отсортировать список по времени последнего поста и ограничить выборку до N записей из каждого форума. Меня во всяком случае более чем устроило... ;)

Например, для списка из 20 тем в includes/acp/acp_topiclist.php найти:

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

				$sql = 'SELECT topic_id, forum_id, topic_title, topic_type, topic_replies
					FROM ' . TOPICS_TABLE . "
					WHERE forum_id=$forum
						AND topic_approved = 1";
заменить на:

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

				$sql = 'SELECT topic_id, forum_id, topic_title, topic_type, topic_replies
					FROM ' . TOPICS_TABLE . "
					WHERE forum_id=$forum
						AND topic_approved = 1
					ORDER BY topic_last_post_time DESC LIMIT 20";
Вместо "LIMIT 20" укажите свое желаемое число.

Если нужно отсортировать по времени создания постов,
вместо "ORDER BY topic_last_post_time"
укажите "ORDER BY topic_time".

Если что не так - пусть гуру меня поправят... Не поверите - первый раз инструкцию пишу! :)

Добавлено спустя 52 минуты 21 секунду:
В связи с вышеизложенным сразу же попутно возник вопрос к гуру phpBB:

Если в такой укороченный список вставить код синхронизации форумов непосредственно перед генерацией topiclist.php - нагрузка на сервер должна уменьшиться?

Добавлено спустя 1 час 9 минут 36 секунд:
Вот примеры форумов, построенных по такому принципу:
http://www.ua-football.com/forum
http://www.footboom.com/forum

Эххххх... если бы Shredder, или кто-нибудь ;) помог вставить код синхронизации всех форумов прямо в topiclist.php :?:
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 10594
Стаж: 11 лет 8 месяцев
Откуда: От Москвы 9 часов на Боинге
Благодарил (а): 1521 раз
Поблагодарили: 1317 раз

Re: [RC] Topiclist FX / Список тем

Сообщение Пчелкин »

Sax писал(а):, а хотя бы в два - ссылки.
[RC] Topiclist FX / Список тем
Shredder
Former team member
Сообщения: 2186
Стаж: 12 лет 9 месяцев
Благодарил (а): 219 раз
Поблагодарили: 550 раз

Re: [RC] Topiclist FX / Список тем

Сообщение Shredder »

spacemann писал(а):только на странице topiclist.php. Посетитель будет заходить на страницу и делать обновление, если ему нужно
Подскажите как это сделать, пожалуйста???
dndn писал(а):Эххххх... если бы Shredder, или кто-нибудь ;) помог вставить код синхронизации всех форумов прямо в topiclist.php :?:
Мне кажется, если это сделать, то форум просто ляжет от нагрузки. Потому что каждый раз, когда кто-то будет заходить на страницу карты, будут выполняться высоконагрузочные запросы. Потому и сделали синхронизацию в админке.
Аватара пользователя
dndn
phpBB 1.4.4
Сообщения: 125
Стаж: 9 лет 6 месяцев
Откуда: Украина
Благодарил (а): 28 раз
Поблагодарили: 4 раза

Re: [RC] Topiclist FX / Список тем

Сообщение dndn »

Shredder
Если ограничить количество тем и форумов, то не только не ляжет, а будет еще как стоять! ;)
Мне допустим достаточно до десятка тем и даже не в каждом форуме, а это вообще не нагрузка - я же приводил примеры форумов, где главная страница именно так построена.
Напротив, от того, что список не обновляется автоматически, мне лично пользы от такого мода - ноль.
Пожалуйста, Вы же можете! :)
Аватара пользователя
maco8024
phpBB 1.4.4
Сообщения: 155
Стаж: 8 лет 9 месяцев
Откуда: Алтай
Благодарил (а): 64 раза
Поблагодарили: 19 раз

Re: [RC] Topiclist FX / Список тем

Сообщение maco8024 »

Уважаемые Гуру, подскажите:
мод стоит давно - проблем не наблюдалось, но недавно (при очередной синхронизации всех форумов) в дебагге обнаружилась ошибка такого содержания:

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

Страница: adm/index.php?i=topiclist&mode=index&f=33&action=generate_all

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

Файл: [ROOT]/includes/acp/acp_topiclist.php
сама ошибка вот в этой строке:

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

$folder_image = '<img src="images/icon_folder_link.gif" alt="' . $user->lang['LINK'] . '" />';
сообщение об ошибке: [PHP Notice]

Undefined index: LINK
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 11 лет 5 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 248 раз

Re: [RC] Topiclist FX / Список тем

Сообщение HAMMER663 »

maco8024 не хватает языковой переменной LINK
Надо всего-лишь добавить ее в соответствующий языковой файл
Аватара пользователя
maco8024
phpBB 1.4.4
Сообщения: 155
Стаж: 8 лет 9 месяцев
Откуда: Алтай
Благодарил (а): 64 раза
Поблагодарили: 19 раз

Re: [RC] Topiclist FX / Список тем

Сообщение maco8024 »

HAMMER663 спасибо, оказывается все просто, добавил в common.php, проблема ушла. :)
Аватара пользователя
sdakasadist
phpBB 2.0.0
Сообщения: 236
Стаж: 8 лет 9 месяцев
Благодарил (а): 62 раза
Поблагодарили: 21 раз

Re: [RC] Topiclist FX / Список тем

Сообщение sdakasadist »

maco8024 не могли бы показать что и куда добавить, буду благодарен.
Изображение
Аватара пользователя
maco8024
phpBB 1.4.4
Сообщения: 155
Стаж: 8 лет 9 месяцев
Откуда: Алтай
Благодарил (а): 64 раза
Поблагодарили: 19 раз

Re: [RC] Topiclist FX / Список тем

Сообщение maco8024 »

sdakasadist
открыть:
language/ru/common.php
добавить:

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

 'LINK'   => 'Ссылка',
Аватара пользователя
sdakasadist
phpBB 2.0.0
Сообщения: 236
Стаж: 8 лет 9 месяцев
Благодарил (а): 62 раза
Поблагодарили: 21 раз

Re: [RC] Topiclist FX / Список тем

Сообщение sdakasadist »

Как исправить, при синхронизации раздела отдельно , то ссылка имеет такой вид сайт.ru/topic4.html , а если сделать Синхронизировать все форумы , то ссылка имеет такой вид сайт.ru/viewtopic.php?f=9&t=446
Изображение
Shredder
Former team member
Сообщения: 2186
Стаж: 12 лет 9 месяцев
Благодарил (а): 219 раз
Поблагодарили: 550 раз

Re: [RC] Topiclist FX / Список тем

Сообщение Shredder »

sdakasadist
Для SEO-мода, вместо первой части кода, указанного здесь (для acp_topiclist.php), нужно добавить вот это:

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

			case "generate_all":
				$url = generate_board_url();
				$sql = 'SELECT forum_id, forum_name
					FROM ' . FORUMS_TABLE . "";
				$result = $db->sql_query($sql);
				while ($row = $db->sql_fetchrow($result))
				{
					$forum = $row['forum_id'];
					$html_content = '<li><b><a href="' . $url . '/forum' . $forum . '.html">' . $row['forum_name'] . '</a></b></li>';
					$html_content .= '<ul>';

					$sql1 = 'SELECT topic_id, forum_id, topic_title, topic_type, topic_replies, topic_approved
						FROM ' . TOPICS_TABLE . '
						WHERE forum_id = ' . $row['forum_id'] . "
						AND topic_approved = 1";
					$result1 = $db->sql_query($sql1);
					while ($row2 = $db->sql_fetchrow($result1))
					{
						$pages = $row2['topic_replies'] / $config['posts_per_page'];
						$pages = (int) $pages;
						if ($pages <= 1)
						{
							$html_content .= '<li><a href="' . $url . '/topic' . $row2['topic_id'] . '.html">' . $row2['topic_title'] . '</a></li>';
						}
						else
						{
							$html_content .= '<li><a href="' . $url . '/topic' . $row2['topic_id'] . '.html">' . $row2['topic_title'] . '</a><br />[ ';
							for ($i=1; $i<=$pages; $i++)
							{
								$html_content .= '<a href="' . $url . '/topic' . $row2['topic_id'] . '-' . $i * $config['posts_per_page'] . '.html">' . ($i+1) . '</a> ';
							}
							$html_content .= ']</li>';
						}
					}
					$db->sql_freeresult($result1);

					$html_content .= '</ul>';

					$w = fopen('../topiclist/' . $row['forum_id'] . '.html', 'w');
					fwrite($w, $html_content);
					fclose($w);
				}
				$db->sql_freeresult($result);
			break;
Аватара пользователя
sdakasadist
phpBB 2.0.0
Сообщения: 236
Стаж: 8 лет 9 месяцев
Благодарил (а): 62 раза
Поблагодарили: 21 раз

Re: [RC] Topiclist FX / Список тем

Сообщение sdakasadist »

Shredder, благодарю , теперь всё отлично!
Изображение
Shredder
Former team member
Сообщения: 2186
Стаж: 12 лет 9 месяцев
Благодарил (а): 219 раз
Поблагодарили: 550 раз

Re: [RC] Topiclist FX / Список тем

Сообщение Shredder »

По поводу автоматической синхронизации:
dndn писал(а):Shredder
Если ограничить количество тем и форумов, то не только не ляжет, а будет еще как стоять! ;)
Мне допустим достаточно до десятка тем и даже не в каждом форуме, а это вообще не нагрузка - я же приводил примеры форумов, где главная страница именно так построена.
Ляжет, ещё как ляжет. И не встанет. Ибо на каждый запрос поисковой системы, которых может быть тысячи в день, будет выполняться куча запросов к БД и генерироваться файлы.

Но можно обойти это, запуская синхронизацию по крону - например, 1 раз в день:

Выполнить следующие запросы к БД (префикс для таблиц, если он у вас отличается от стандартного phpbb_ - подставьте свой, либо выполняйте через STK):

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

INSERT INTO `phpbb_config` (config_name, config_value) VALUES ('topiclist_fx_gc', '86400');
INSERT INTO `phpbb_config` (config_name, config_value, is_dynamic) VALUES ('topiclist_fx_last_gc', '0', 1);
ВНИМАНИЕ: если хотите, чтобы синхронизация выполнялась не раз в сутки, а например раз в час, то смените в первом запросе число 86400 - на 3600. 3600 - это число секунд в часе. Соответственно, если нужен другой интервал - рассчитайте и подставьте своё число прежде, чем выполнять запрос.

Очистить кеш.

Разархивировать и поместить в папку includes следующий файл:
topiclist_fx_sync.zip
(947 байт) 255 скачиваний
ВНИМАНИЕ: Если вы используете SEO-мод, то вместо файла выше закачайте следующий файл:
topiclist_fx_sync_FOR_SEO.zip
(936 байт) 256 скачиваний
Открыть файл cron.php
Найти:

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

}

// Unloading cache and closing db after having done the dirty work.
unlock_cron();
garbage_collection();

exit;
Добавить ПЕРЕД:

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

	case 'topiclist_fx':

		if (time() - $config['topiclist_fx_gc'] <= $config['topiclist_fx_last_gc'])
		{
			break;
		}

		include_once($phpbb_root_path . 'includes/topiclist_fx_sync.' . $phpEx);

		topiclist_fx_sync();

	break;
Открыть includes/functions.php

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

		else if ($time_now - $config['session_gc'] > $config['session_last_gc'])
		{
			$cron_type = 'tidy_sessions';
		}
Добавить после:

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

		else if ($time_now - $config['topiclist_fx_gc'] > $config['topiclist_fx_last_gc'])
		{
			$cron_type = 'topiclist_fx';
		}
max2012
phpBB 2.0.0
Сообщения: 242
Стаж: 9 лет 3 месяца
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: [RC] Topiclist FX / Список тем

Сообщение max2012 »

Альтаир Бергадлер писал(а):В кассу.
Можно ли реализовать сворачивание разделов, если например некоторые просто не интересуют и занимают много свободного пространства.
Хороший вопрос, но так и не нашел ответа на него... неужели никому не нужно это?

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