[final] Recent topics for phpBB3 (Темы на стр. сайта)

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
andry1905
phpBB 1.0.0
Сообщения: 4
Стаж: 13 лет 3 месяца

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение andry1905 »

Ребята Спасибо ОГРОМНОЕ всё работает. Всем удачи!!!!!!!!!!!!!!!!
welop
phpBB 1.0.0
Сообщения: 2
Стаж: 13 лет 5 месяцев

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение welop »

скачал версию мода с 11 страницы, но вместо иконки (icon_topic_latest.gif), которая должна вести к последнему сообщению в теме, - квадрат с рамкой, что изменить в recent.php, чтобы иконка вывелась, как указать правильный путь до изображения?

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

'I_LAST_POST'   => $user->img('icon_topic_latest', 'VIEW_LATEST_POST'),
bazabaza
phpBB 1.4.1
Сообщения: 41
Стаж: 14 лет 1 месяц
Благодарил (а): 24 раза

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение bazabaza »

Привет всем! Установил мод, но у меня на главной выводится только 5 сообщений с форума http://www.bus-club.ru/ Хотя в настройках стоит

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

$cfg_nm_topics = 15;			// number of topics to output
В чем может быть дело?


весь код настроек выглядит так

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

/* Config section */
$cfg_ignore_forums = ''; 		// ids of forums you don't want to display, separated by commas or empty
$cfg_only_forums = ''; 			// ids of forums you only want to display, separated by commas or empty
$cfg_nm_topics = 15;			// number of topics to output
$cfg_max_topic_length = 120; 	// max topic length, if more, title will be shortened
$cfg_show_replies = true; 		// show number of replies to topics
$cfg_show_first_post = true;	// show first posts of the recent topics
$cfg_show_attachments = false;	// show attachments in the first posts of recent topics
/* End of config */
Аватара пользователя
Belui
phpBB 1.4.4
Сообщения: 127
Стаж: 16 лет 7 месяцев
Благодарил (а): 28 раз
Поблагодарили: 1 раз

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение Belui »

Вопрос к VladPowers

Подскажи, а как сделать что бы при нажатие на темы - открывался сразу же тот пост, который новый. А то у меня щас при нажатии - открывается самый первый , старый пост страницы, а дальше приходится листать в низ до нового сообщения?
Аватара пользователя
VladPowers
phpBB 1.4.2
Сообщения: 53
Стаж: 21 год 6 месяцев
Откуда: Бузулук 56rus
Благодарил (а): 2 раза
Поблагодарили: 3 раза

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение VladPowers »

Belui, когда генеришь ссылки для топа, сделай чтобы на конце ссылок было http://xxx.xx/viewtopic.php?f=xx&t=xx&view=unread#unread
И точка лазерного прицела на твоём лбу - тоже чья-то точка зрения
C уважением, ВладМощный :)

Правда то, что существуют ангелы, но иногда у них отсутствуют крылья, и мы называем их друзьями.
Аватара пользователя
Belui
phpBB 1.4.4
Сообщения: 127
Стаж: 16 лет 7 месяцев
Благодарил (а): 28 раз
Поблагодарили: 1 раз

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение Belui »

Исправил, теперь хоть последнию страницу открывает из всех страниц, но не сам последний пост. А как сделать что бы сразу на новый пост опускался? Типа когда нажимаешь на значок icon_topic_latest рядом с ником "Перейти к последнему сообщению" ?
Аватара пользователя
sinoptik
phpBB 1.2.0
Сообщения: 11
Стаж: 14 лет 11 месяцев

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение sinoptik »

Перечитал все 59 страниц темы :) было не легко, но готового решения так и не нашёл.

Подскажите, пожалуйста, как вывести значок (тот, который выбирается топик стартером) темы в список? Что надо вставить в recent.php? Полдня просидел, пытаясь по аналогии с разжёванным тут выводом времени сделать, но понял, что всё не так просто.
Аватара пользователя
andromeda68
phpBB 1.4.3
Сообщения: 97
Стаж: 13 лет 11 месяцев
Откуда: Ижевск
Благодарил (а): 22 раза
Поблагодарили: 1 раз

Re: Вывод последних сообщений на главную сайта

Сообщение andromeda68 »

Стер свой пост, ошибка исправлена, спасибо.
Последний раз редактировалось andromeda68 23.09.2013 8:27, всего редактировалось 3 раза.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение Sheer »

Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
andromeda68
phpBB 1.4.3
Сообщения: 97
Стаж: 13 лет 11 месяцев
Откуда: Ижевск
Благодарил (а): 22 раза
Поблагодарили: 1 раз

Кодировка и ссылка на автора

Сообщение andromeda68 »

Взял модифицированный код в этой теме. Форум в папке /forum/ вывожу код на главную сайта.
Кодировка сайта 1251, правил кодировку благодаря постам, у автора только осталось крокозябры.
Помогите заменить у него кодировку и ссылку на автора исправить?
Пациент: http://honey-land.ru/

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

<?php
/** 
*
* @package phpBB3
* @version $Id: recent.php,v 1.1.2 2007/08/21 23:21:39 rxu Exp $
* @copyright (c) 2005 phpBB Group 
* @license http://opensource.org/licenses/gpl-license.php GNU Public License 
*
*/

/**
* @ignore
*/


/* Config section */
$cfg_ignore_forums = '92'; 		// ids of forums you don't want to display, separated by commas or empty
$cfg_only_forums = ''; 			// ids of forums you only want to display, separated by commas or empty
$cfg_nm_topics = 15;			// number of topics to output
$cfg_max_topic_length = 100; 	// max topic length, if more, title will be shortened
$cfg_show_replies = true; 		// show number of replies to topics
$cfg_show_first_post = false;	// show first posts of the recent topics
$cfg_show_attachments = false;	// show attachments in the first posts of recent topics
/* End of config */

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);

//
// Let's prevent caching
//
/*
if (!empty($_SERVER['SERVER_SOFTWARE']) && strstr($_SERVER['SERVER_SOFTWARE'], 'Apache/2'))
{
	header ('Cache-Control: no-cache, pre-check=0, post-check=0');
}
else
{
	header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
}
header('Expires: 0');
header('Pragma: no-cache');
*/
header('Content-type: text/html; charset=Windows-1251');

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('common');

//
// Building URL
//
$board_path = generate_board_url();
$viewtopic_url = $board_path . '/viewtopic.' . $phpEx;
$view_topic_url = $board_path . '/viewtopic.' . $phpEx;

// Fetching forums that should not be displayed
$forums = implode(',', array_keys($auth->acl_getf('!f_read', true)));
$cfg_ignore_forums = (!empty($cfg_ignore_forums) && !empty($forums)) ? $cfg_ignore_forums . ',' . $forums : ((!empty($forums)) ? $forums : ((!empty($cfg_ignore_forums)) ? $cfg_ignore_forums : ''));

// Building sql for forums that should not be displayed
$sql_ignore_forums = (!empty($cfg_ignore_forums)) ? ' AND t.forum_id NOT IN(' . $cfg_ignore_forums .') ' : '';

// Building sql for forums that should only be displayed
$sql_only_forums = (!empty($cfg_only_forums)) ? ' AND t.forum_id IN(' . $cfg_only_forums .') ' : '';

// Fetching topics of public forums
$sql = 'SELECT t.*,
	p.post_id, p.post_text, p.bbcode_uid, p.bbcode_bitfield, p.post_attachment, p.post_approved
	FROM ' . TOPICS_TABLE . ' AS t, ' . POSTS_TABLE . ' AS p, ' . FORUMS_TABLE . " AS f
	WHERE t.forum_id = f.forum_id
		$sql_ignore_forums
		$sql_only_forums 
		AND p.post_id = t.topic_first_post_id
		AND t.topic_moved_id = 0
	ORDER BY t.topic_last_post_id DESC LIMIT $cfg_nm_topics";

$result = $db->sql_query($sql);

$recent_topics = $db->sql_fetchrowset($result);

//
// BEGIN ATTACHMENT DATA
//
if($cfg_show_first_post && $cfg_show_attachments)
{
	$attach_list = $update_count = array();
	foreach ($recent_topics as $post_attachment)
	{
		if ($post_attachment['post_attachment'] && $config['allow_attachments'])
		{
			$attach_list[] = $post_attachment['post_id'];

			if ($post_attachment['post_approved'])
			{
				$has_attachments = true;
			}
		}
	}

	// Pull attachment data
	if (sizeof($attach_list))
	{
		if ($auth->acl_get('u_download') )
		{
			$sql_attach = 'SELECT *
				FROM ' . ATTACHMENTS_TABLE . '
				WHERE ' . $db->sql_in_set('post_msg_id', $attach_list) . '
					AND in_message = 0
				ORDER BY filetime DESC, post_msg_id ASC';
			$result_attach = $db->sql_query($sql_attach);

			while ($row_attach = $db->sql_fetchrow($result_attach))
			{
				$attachments[$row_attach['post_msg_id']][] = $row_attach;
			}
			$db->sql_freeresult($result_attach);
		}
		else
		{
			$display_notice = true;
		}
	}
}
//
// END ATTACHMENT DATA
//


foreach ( $recent_topics as $row )
{
	$topic_title = censor_text($row['topic_title']);
	$topic_title = (utf8_strlen($topic_title) > $cfg_max_topic_length) ? utf8_substr($topic_title, 0, $cfg_max_topic_length) . '&hellip;' : $topic_title;
	$topic_title = str_replace(array("\r\n", "\r", "\n"), '<br />', $topic_title);
	$topic_title = addslashes($topic_title);
	$user_colour = ($row['topic_last_poster_colour']) ? ' style="color:#' . $row['topic_last_poster_colour'] . '" class="username-coloured"' : '';	

	// Replies
	$replies = ($auth->acl_get('m_approve', $row['forum_id'])) ? $row['topic_replies_real'] : $row['topic_replies'];

	//         font color="#FF0033"
	if ($replies == 0)
	{
		$color_empty_topic_beg = '';
		$color_empty_topic_end = '';
	}
	else
	{
		$color_empty_topic_beg = '';
		$color_empty_topic_end = '';
	}

	// Instantiate BBCode if need be
	if ($row['bbcode_bitfield'] !== '')
	{
		$bbcode = new bbcode(base64_encode($row['bbcode_bitfield']));
	}

	$message = $row['post_text'];

	// Parse the message
	$message = censor_text($message);

	// Second parse bbcode here
	if ($row['bbcode_bitfield'])
	{
		$bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
	}

	$message = str_replace("\n", '<br />', $message);

	// Always process smilies after parsing bbcodes
	$message = smiley_text($message);
	
	// Parse attachments
	if ($cfg_show_first_post && $cfg_show_attachments && !empty($attachments[$row['post_id']]))
	{
		parse_attachments($row['forum_id'], $message, $attachments[$row['post_id']], $update_count);
	}
	
	$message = str_replace(array("\r\n", "\r", "\n"), '<br />', $message);
	$message = addslashes($message);
	$message = str_replace('./', $board_path . '/', $message);
	$tags = array('dl', 'dt', 'dd');
	$message = strip_selected_tags($message, $tags);
	
	$template->assign_block_vars('topicrow', array(
		'NEWEST_POST_IMG'		=> $user->img('icon_topic_newest', 'VIEW_NEWEST_POST'),
		'LAST_POST_IMG' 		=> $user->img('icon_topic_latest', 'VIEW_LATEST_POST'),
		'U_NEWEST_POST'			=> $view_topic_url . '?f=' . $row['forum_id'] . '&t=' . $row['topic_id'] . '&view=unread#unread',
		'U_TOPIC' 			=> $viewtopic_url . '?f=' . $row['forum_id'] . '&t=' . $row['topic_id'] . '&view=unread#unread',
		'U_TOPIC_AUTHOR'		=> get_username_string('profile', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),
		'LAST_POST_AUTHOR_COLOUR'	=> get_username_string('colour', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),
		'LAST_POST_AUTHOR_FULL'		=> get_username_string('full', $row['topic_last_poster_id'], addslashes($row['topic_last_poster_name']), $row['topic_last_poster_colour']),
		'TOPIC_TITLE' 			=> $color_empty_topic_beg . iconv("UTF-8", "cp1251", $topic_title) . $color_empty_topic_end,
		'LAST_POST_TIME' 		=> $user->format_date($row['topic_last_post_time'],"H:i"),
		'TOPIC_REPLIES'			=> ($cfg_show_replies) ? '<font color="#006600">[' . $replies . ']</font>' : '', 
		'S_HAS_ATTACHMENTS'		=> ($cfg_show_first_post && $cfg_show_attachments && !empty($attachments[$row['post_id']])) ? true : false,
		'POSTER_LAST_POST'    		=> get_username_string('full', $row['topic_last_poster_id'], addslashes($row['topic_last_poster_name']), $row['topic_last_poster_colour']),
//                'POSTER_LAST_POST' 		=> '<font color="#' . $row['topic_last_poster_colour'] . '">' . $last_post_poster . '</font>',
	));

	if ($cfg_show_first_post)
	{
		$template->assign_block_vars('topicrow.first_post_text', array(
			'TOPIC_FIRST_POST_TEXT' => ($cfg_show_first_post) ? iconv("UTF-8", "cp1251", $message) : ''
		));
	}

	// Display not already displayed Attachments for this post, we already parsed them. ;)
	if ($cfg_show_first_post && $cfg_show_attachments && !empty($attachments[$row['post_id']]))
	{
		foreach ($attachments[$row['post_id']] as $attachment)
		{
			$attachment = str_replace(array("\r\n", "\r", "\n"), '<br />', $attachment);
			$attachment = str_replace('"./', '"' . $board_path . '/', $attachment);
			$tags = array('span', 'dt', 'dd');
			$attachment = strip_selected_tags($attachment, $tags);

			$template->assign_block_vars('topicrow.first_post_text.attachment', array(
				'DISPLAY_ATTACHMENT'	=>  iconv("UTF-8", "cp1251", $attachment))
			);
		}
	}

}
$db->sql_freeresult($result);
		
// Load template
$template->set_filenames(array(
	'body' => 'recent_body.html')
);


// Output
$template->display('body');

/**
* Works like PHP function strip_tags, but it only removes selected tags.
* Example: * strip_selected_tags('<b>Person:</b> <strong>Larcher</strong>', 'strong') => <b>Person:</b> Larcher
* by Matthieu Larcher 
* http://ru2.php.net/manual/en/function.strip-tags.php#76045
*/
function strip_selected_tags($text, $tags = array())
{
	$args = func_get_args();
	$text = array_shift($args);
	$tags = (func_num_args() > 2) ? array_diff($args,array($text)) : (array)$tags;
	foreach ($tags as $tag)
	{
		while(preg_match('/<'.$tag.'(|\W[^>]*)>(.*)<\/'. $tag .'>/iusU', $text, $found))
		{
			$text = str_replace($found[0],$found[2],$text);
		}
	}

	return preg_replace('/(<('.join('|',$tags).')(|\W.*)\/>)/iusU', '', $text);
}
?>
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение Sheer »

По идее вместо $row['topic_last_poster_name'] нужно iconv('UTF-8', 'cp1251', $row['topic_last_poster_name'])
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
andromeda68
phpBB 1.4.3
Сообщения: 97
Стаж: 13 лет 11 месяцев
Откуда: Ижевск
Благодарил (а): 22 раза
Поблагодарили: 1 раз

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение andromeda68 »

Спасибо большое! Заменил в нескольких местах, заработало даже в IE6.
А адрес на автора где дописать(/forum/)?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение Sheer »

Вроде так

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

		'U_TOPIC_AUTHOR'		=> ''.$board_path.'/'.get_username_string('profile', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']).'',
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
andromeda68
phpBB 1.4.3
Сообщения: 97
Стаж: 13 лет 11 месяцев
Откуда: Ижевск
Благодарил (а): 22 раза
Поблагодарили: 1 раз

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение andromeda68 »

Не получилось, адрес такой же остался(
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: [final] Recent topics for phpBB3 (Темы на стр. сайта)

Сообщение Sheer »

Приаттачь сюда html-шаблон.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

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