Recent Topics
-
- phpBB 1.0.0
- Сообщения: 8
- Стаж: 19 лет 8 месяцев
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
pokoy
в recent_body.tpl
найди
замени на
=)
в recent_body.tpl
найди
Код: Выделить всё
<a href="{topicrow.U_TOPIC}">
Код: Выделить всё
<a href="{topicrow.U_TOPIC}" target="_blank">
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 1.4.0
- Сообщения: 34
- Стаж: 19 лет 9 месяцев
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
Открываем recent.php, ищем и меняем:
Код: Выделить всё
$cfg_nm_topics = 15; // number of topics to output
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- phpBB 1.4.0
- Сообщения: 34
- Стаж: 19 лет 9 месяцев
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
-
- phpBB 1.4.2
- Сообщения: 53
- Стаж: 20 лет 4 месяца
- Откуда: Орёл
Вариант без вызова templates.php Выводит все.
Моя переделка мода Xperta. Работает без вызова templates.php, что сокрашает нагрузку на сервер.
Выводит даты создания и авторов постов. Авторы выводятся не тольк зарегистрированные, но и те, кто писали без регистрации.
Предупреждаю, что адреса формируются для форума с установленным модом Search Engines Friendly Board.
Моя переделка мода Xperta. Работает без вызова templates.php, что сокрашает нагрузку на сервер.
Выводит даты создания и авторов постов. Авторы выводятся не тольк зарегистрированные, но и те, кто писали без регистрации.
Предупреждаю, что адреса формируются для форума с установленным модом Search Engines Friendly Board.
Код: Выделить всё
<?php
// recent.php,v 1.0.4
define('IN_PHPBB', true);
global $board_config, $userdata;
$phpbb_root_path = './';
include('./common.php');
$cfg_ignore_forums = '0';
$cfg_nm_topics = 10;
$cfg_max_topic_length = 50;
$sql = "SELECT t.topic_id, t.topic_title, t.topic_last_post_id, t.topic_replies, p.poster_id, u.user_id, u.username, p.post_time, p.post_username
FROM " . TOPICS_TABLE . " AS t, " . POSTS_TABLE . " AS p, " . FORUMS_TABLE . " AS f, " . USERS_TABLE . " AS u
WHERE t.forum_id = f.forum_id
AND f.auth_read = " . AUTH_ALL . "
AND t.forum_id NOT IN(" . $cfg_ignore_forums .")
AND p.post_id = t.topic_last_post_id
AND t.topic_moved_id = 0
AND u.user_id = p.poster_id
AND u.username = u.username
ORDER BY p.post_id DESC LIMIT $cfg_nm_topics";
if ( !$result = $db->sql_query($sql) ) {
message_die(GENERAL_ERROR, "Could not fetch recent topics information.", '', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
$topic_title = $row['topic_title'];
$topic_title = ( strlen($topic_title) > $cfg_max_topic_length ) ? substr($topic_title, 0, $cfg_max_topic_length) . '…' : $topic_title;
$time_last_topic = create_date('d M G:i', $row['post_time'], $board_config['board_timezone']);
$viewtopic_url = 'http://Ваш сайт/forum/topic' . $row['topic_id'] . '.html';
$last_viewtopic_url = 'http://Ваш сайт/forum/post' . $row['topic_last_post_id'] . '.html#' . $row['topic_last_post_id'];
if ( $row['post_username'] == '' ) {
$name = $row['username'];
}
else {
$name = $row['post_username'];
}
$output = '<a href=' . $last_viewtopic_url . ' target=_blank><img src=http://Ваш сайт/forum/latest_reply.gif alt=Последнее></a><a href=' . $viewtopic_url . ' target=_blank>' . str_replace("'", "\'", $topic_title) . '</a> Ответов-' . $row['topic_replies'] . ',' . $name . ',' . $time_last_topic . '<br>';
echo "document.writeln('$output');\n";
}
?>
Последний раз редактировалось Профессор 13.09.2005 20:05, всего редактировалось 1 раз.
-
- phpBB 1.4.0
- Сообщения: 34
- Стаж: 19 лет 9 месяцев
Профессор
Этот код содержит множество ошибок. Лучше просто отвязать скрипт от шаблона:
Этот код содержит множество ошибок. Лучше просто отвязать скрипт от шаблона:
Код: Выделить всё
<?php
$cfg_ignore_forums = '0'; // id'ы форумов, с которых не будут отображаться последние темы (разделять запятыми).
$cfg_nm_topics = 15; // количество тем для вывода.
$cfg_max_topic_length = 30; // максимальная длина темы, если больше, заголовок будет укорочен.
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
if (!empty($HTTP_SERVER_VARS['SERVER_SOFTWARE']) && strstr($HTTP_SERVER_VARS['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');
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
$server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
$server_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name']));
$server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) : '';
$script_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path']));
$script_name = ($script_name == '') ? $script_name : '/' . $script_name;
$board_path = $server_protocol . $server_name . $server_port . $script_name;
$viewtopic_url = $board_path . '/viewtopic.' . $phpEx;
$sql = "SELECT * FROM " . USERS_TABLE . " WHERE user_id = ". ANONYMOUS;
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Невозможно получить анонимные данные из таблицы пользователей.', '', __LINE__, __FILE__, $sql);
}
$userdata = $db->sql_fetchrow($result);
init_userprefs($userdata);
$sql = "SELECT t.topic_id, t.topic_title, t.topic_last_post_id
FROM " . TOPICS_TABLE . " AS t, " . POSTS_TABLE . " AS p, " . FORUMS_TABLE . " AS f
WHERE t.forum_id = f.forum_id
AND f.auth_read = " . AUTH_ALL . "
AND t.forum_id NOT IN(" . $cfg_ignore_forums .")
AND p.post_id = t.topic_last_post_id
AND t.topic_moved_id = 0
ORDER BY p.post_id DESC LIMIT $cfg_nm_topics";
if ( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Невозможно выбрать информацию о последних темах.", '', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
$topic_title = $row['topic_title'];
if ( count($orig_word) )
{
$topic_title = preg_replace($orig_word, $replacement_word, $topic_title);
}
$topic_title = ( strlen($topic_title) > $cfg_max_topic_length ) ? substr($topic_title, 0, $cfg_max_topic_length) . '…' : $topic_title;
echo '<a href="' . $viewtopic_url . '?' . POST_TOPIC_URL . '=' . $row['topic_id'] . '">';
echo str_replace("'", "\'", $topic_title), "</a><br>";
}
?>
-
- phpBB 1.4.2
- Сообщения: 53
- Стаж: 20 лет 4 месяца
- Откуда: Орёл
Йыс, а что Вы имеете в виду под ошибками?
У меня это вполне нормально работает. Ну разве, что border="0" в тегах img надо поставить.
Кстати, в том варианте, который вы написали выводятся только названия тем, а в предложенной выше модификации выводится все. И имена пользователей (зарегистрированных и не зарегистрированных) и даты и ссылки на последние сообщения.
Потом, у вас темы выводятся при помощи
Понимаю, что фреймы лучше не использовать. Они плохо индексируются, но мне с точки зрения дизайна нужно было, чтобы вывод осуществлялся в строго ограниченную область, которую не растянуло бы по вертикали. К тому же задержка с выводом во фрейм не вызывает тормозов при загрузке всей страницы. Хотя, фрейм является у меня наследием мода Topic Anywhere, который безюожно тормозил. А частично ускорил его работу, но всё равно небольшая задержка оставалась. Мод Xperta вне всякого сомнения работает гораздо быстрее, но я считаю, что его можно улучшить. Одним из способов этого является отказ от использвания templates.php при выводе тем через скрипт на стороннем сайте. Коль можно обойтись без templates, так зачем его вызывать?
Для вывода тем на главной странице сайта я также использую мод Xperta , но делаю это не через script. Я считаю это не экономичным. Завтра помещу здесь свой вариант. Думаю Xpert оценит нововведения и перенесет их в свой мод.
Добавлено спустя 6 минут 4 секунды:
Понимаю, что фреймы лучше не использовать. Они плохо индексируются, но мне с точки зрения дизайна нужно было, чтобы вывод осуществлялся в строго ограниченную область, которую не растянуло бы по вертикали. К тому же задержка с выводом во фрейм не вызывает тормозов при загрузке всей страницы. Хотя, фрейм является у меня наследием мода Topic Anywhere, который безюожно тормозил. А частично ускорил его работу, но всё равно небольшая задержка оставалась. Мод Xperta вне всякого сомнения работает гораздо быстрее, но я считаю, что его можно улучшить. Одним из способов этого является отказ от использвания templates.php при выводе тем через скрипт на стороннем сайте. Коль можно обойтись без templates, так зачем его вызывать?
Для вывода тем на главной странице сайта я также использую мод Xperta , но делаю это не через script. Я считаю это не экономичным. Завтра помещу здесь свой вариант. Думаю Xpert оценит нововведения и перенесет их в свой мод.
У меня это вполне нормально работает. Ну разве, что border="0" в тегах img надо поставить.
Кстати, в том варианте, который вы написали выводятся только названия тем, а в предложенной выше модификации выводится все. И имена пользователей (зарегистрированных и не зарегистрированных) и даты и ссылки на последние сообщения.
Возможно, то что Вы приняли за ошибки является следствием того, что моя модификация мода написана не для простого форума, а с установленным модом Search Engines Friendly Board. Я формирую в список последних тем названия топиков в видеЙыс писал(а):echo '<a href="' . $viewtopic_url . '?' . POST_TOPIC_URL . '=' . $row['topic_id'] . '">';
echo str_replace("'", "\'", $topic_title), "</a><br>";
Это не ошибка, а так надо.topic' . $row['topic_id'] . '.html
Потом, у вас темы выводятся при помощи
Дело в том, что таким образом скрипт не сможет вывести ничего на экран на другом сайте. Хотя, как знать. Я вывожу текст в небольшой фрейм. Может, если фрейм не использовать, то все будет нормально? Мне же нужен вывод именно во фрейм, а echo во фрейм не выводило, а вот черезecho '<a href="' . $viewtopic_url . '?' . POST_TOPIC_URL . '=' . $row['topic_id'] . '">';
все получилось нормально.echo "document.writeln('$output');\n";
Понимаю, что фреймы лучше не использовать. Они плохо индексируются, но мне с точки зрения дизайна нужно было, чтобы вывод осуществлялся в строго ограниченную область, которую не растянуло бы по вертикали. К тому же задержка с выводом во фрейм не вызывает тормозов при загрузке всей страницы. Хотя, фрейм является у меня наследием мода Topic Anywhere, который безюожно тормозил. А частично ускорил его работу, но всё равно небольшая задержка оставалась. Мод Xperta вне всякого сомнения работает гораздо быстрее, но я считаю, что его можно улучшить. Одним из способов этого является отказ от использвания templates.php при выводе тем через скрипт на стороннем сайте. Коль можно обойтись без templates, так зачем его вызывать?
Для вывода тем на главной странице сайта я также использую мод Xperta , но делаю это не через script. Я считаю это не экономичным. Завтра помещу здесь свой вариант. Думаю Xpert оценит нововведения и перенесет их в свой мод.

Добавлено спустя 6 минут 4 секунды:
все получилось нормально.Профессор писал(а):Йыс, а что Вы имеете в виду под ошибками?
У меня это вполне нормально работает. Ну разве, что border="0" в тегах img надо поставить.
Впрочем, у меня убраны вот эти строки.Просто мод вначале был переделан для формирования последних тем на главной странице форума, а там этих строк не требовалось. Потом я стал использвать мод для вывода тем на другой дружественный сайт, а этот кусок не вставил. Как я понимаю, он отвечает за запрет кэширования, но у меня всё нормально работает и без него.if (!empty($HTTP_SERVER_VARS['SERVER_SOFTWARE']) && strstr($HTTP_SERVER_VARS['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');
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
$server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
$server_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name']));
$server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) : '';
$script_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path']));
$script_name = ($script_name == '') ? $script_name : '/' . $script_name;
$board_path = $server_protocol . $server_name . $server_port . $script_name;
$viewtopic_url = $board_path . '/viewtopic.' . $phpEx;
Кстати, в том варианте, который написал Йыс выводятся только названия тем, а в предложенной выше модификации выводится все. И имена пользователей (зарегистрированных и не зарегистрированных) и даты и ссылки на последние сообщения.Возможно, то что Вы приняли за ошибки является следствием того, что моя модификация мода написана не для простого форума, а с установленным модом Search Engines Friendly Board. Я формирую в список последних тем названия топиков в видеЙыс писал(а):echo '<a href="' . $viewtopic_url . '?' . POST_TOPIC_URL . '=' . $row['topic_id'] . '">';
echo str_replace("'", "\'", $topic_title), "</a><br>";Это не ошибка, а так надо.topic' . $row['topic_id'] . '.html
Потом, у вас темы выводятся при помощиДело в том, что таким образом скрипт не сможет вывести ничего на экран на другом сайте. Хотя, как знать. Я вывожу текст в небольшой фрейм. Может, если фрейм не использовать, то все будет нормально? Мне же нужен вывод именно во фрейм, а echo во фрейм не выводило, а вот черезecho '<a href="' . $viewtopic_url . '?' . POST_TOPIC_URL . '=' . $row['topic_id'] . '">';echo "document.writeln('$output');\n";
Понимаю, что фреймы лучше не использовать. Они плохо индексируются, но мне с точки зрения дизайна нужно было, чтобы вывод осуществлялся в строго ограниченную область, которую не растянуло бы по вертикали. К тому же задержка с выводом во фрейм не вызывает тормозов при загрузке всей страницы. Хотя, фрейм является у меня наследием мода Topic Anywhere, который безюожно тормозил. А частично ускорил его работу, но всё равно небольшая задержка оставалась. Мод Xperta вне всякого сомнения работает гораздо быстрее, но я считаю, что его можно улучшить. Одним из способов этого является отказ от использвания templates.php при выводе тем через скрипт на стороннем сайте. Коль можно обойтись без templates, так зачем его вызывать?
Для вывода тем на главной странице сайта я также использую мод Xperta , но делаю это не через script. Я считаю это не экономичным. Завтра помещу здесь свой вариант. Думаю Xpert оценит нововведения и перенесет их в свой мод.

Последний раз редактировалось Профессор 14.09.2005 8:41, всего редактировалось 1 раз.
-
- phpBB 1.4.0
- Сообщения: 34
- Стаж: 19 лет 9 месяцев
Видимо, да.Возможно, то что Вы приняли за ошибки является следствием того, что моя модификация мода написана не для простого форума, а с установленным модом Search Engines Friendly Board.
Вообще, думаю, что для данного мода достаточно приведённого выше мной кода, лишь с указанием того, как сделать вывод с определённого форума.
Думаю, выводить на другой сайт, в большинстве случаев, просто нет надобности. Да и переделать обратно для вывода с помощью тега <script> крайне просто.Потом, у вас темы выводятся при помощи:
echo '<a href="' . $viewtopic_url . '?' . POST_TOPIC_URL . '=' . $row['topic_id'] . '">';
Дело в том, что таким образом скрипт не сможет вывести ничего на экран на другом сайте.
-
- phpBB 1.4.2
- Сообщения: 53
- Стаж: 20 лет 4 месяца
- Откуда: Орёл
Но ведь бывают случаи, когда какие-то сайты готовы разместить список последних тем форума.Йыс писал(а):Думаю, выводить на другой сайт, в большинстве случаев, просто нет надобности.
Или несколько сайтов используют один и тот же общий форум. Но находятся они на разных доменах и у разных хостеров, а потому единую базу данных использовать не могут. Вот тут-то и оптимально использовать скрипт.
А вот выводить последние темы через скрипт на главную страницу форума или портала, на мой взгляд, слишком неэкономично, как в отношении ресурсов сервера, так и в плане скорости загрузки страницы.
-
- phpBB 1.4.2
- Сообщения: 53
- Стаж: 20 лет 4 месяца
- Откуда: Орёл
Вот мои переделки мода для загрузки на главной странице форума или на страницах портала. Как и прошлый раз отмечу, что мод переделан для работы с установленным Search Engines Friendly Board. К тому же я убрал себе автоцензор, чтобы меньше нагрузка была.
Этой строкой вызываем recent.php из index.php или с портала.
Как я уже говорил выше, что Xpertу стоит делать два варианта мода. В одном случае вызов recent.php идет через script со стороннего сайта, а в другом - из самого форума или портала.
Этой строкой вызываем recent.php из index.php или с портала.
Содержание recent.phpinclude('./forum/recent.php');
Содержание recent_body.tpl<?php
// recent.php,v 1.0.4
global $board_config, $userdata;
$cfg_ignore_forums = '0';
$cfg_nm_topics = 10;
$cfg_max_topic_length = 50;
init_userprefs($userdata);
// Load template
$template->set_filenames(array(
'body' => 'recent_body.tpl'));
// Fetching topics of public forums
$sql = "SELECT t.topic_id, t.topic_title, t.topic_last_post_id, t.topic_replies, p.poster_id, u.user_id, u.username, p.post_time, p.post_username
FROM " . TOPICS_TABLE . " AS t, " . POSTS_TABLE . " AS p, " . FORUMS_TABLE . " AS f, " . USERS_TABLE . " AS u
WHERE t.forum_id = f.forum_id
AND f.auth_read = " . AUTH_ALL . "
AND t.forum_id NOT IN(" . $cfg_ignore_forums .")
AND p.post_id = t.topic_last_post_id
AND t.topic_moved_id = 0
AND u.user_id = p.poster_id
AND u.username = u.username
ORDER BY p.post_id DESC LIMIT $cfg_nm_topics";
if ( !$result = $db->sql_query($sql) ) {
message_die(GENERAL_ERROR, "Could not fetch recent topics information.", '', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
$topic_title = $row['topic_title'];
$topic_title = ( strlen($topic_title) > $cfg_max_topic_length ) ? substr($topic_title, 0, $cfg_max_topic_length) . '…' : $topic_title;
$time_last_topic = create_date('d M G:i', $row['post_time'], $board_config['board_timezone']);
if ( $userdata['session_logged_in'] ) {
$viewtopic_url = 'http://dozor.org/forum/viewtopic.php?' . POST_TOPIC_URL . '=' . $row['topic_id'];
$last_viewtopic_url = 'http://dozor.org/forum/viewtopic.php?' . POST_POST_URL . '=' . $row['topic_last_post_id'] . '#' . $row['topic_last_post_id'];
}
else {
$viewtopic_url = 'http://dozor.org/forum/topic' . $row['topic_id'] . '.html';
$last_viewtopic_url = 'http://dozor.org/forum/post' . $row['topic_last_post_id'] . '.html#' . $row['topic_last_post_id'];
}
if ( $row['post_username'] == '' ) {
$name = $row['username'];
}
else {
$name = $row['post_username'];
}
$template->assign_block_vars('topicrow', array(
'U_LAST_POST' => $last_viewtopic_url,
'TOPIC_REPLIES' => $row['topic_replies'],
'U_TOPIC' => $viewtopic_url,
'TOPIC_TITLE' => str_replace("'", "\'", $topic_title),
'TIME' => $time_last_topic,
'USERNAME' => $name));
}
$template->pparse('body');
?>
Работать он, естественно, будет быстрее, чем при вызове из скрипта.<!-- BEGIN topicrow -->
<a href={topicrow.U_LAST_POST}><img src=http://dozor.org/forum/latest_reply.gif alt=Последнее></a><a href={topicrow.U_TOPIC}>{topicrow.TOPIC_TITLE}</a> Ответов-{topicrow.TOPIC_REPLIES}, {topicrow.USERNAME}, {topicrow.TIME}<br>
<!-- END topicrow -->
Как я уже говорил выше, что Xpertу стоит делать два варианта мода. В одном случае вызов recent.php идет через script со стороннего сайта, а в другом - из самого форума или портала.
Сегодня скачала этот замечательный мод.
Давно уже хотелось, чтобы на гл.странице сайта были последние затронутые темы форума.
Файлы необходимые куда надо закачала...
А какой код надо на гл.страницу сайта вставлять?? Подскажите, пожалуйста.
Я пробовала тот, что
Но, видимо, я что-то не правильно поняла, потому что пишет мне ошибку 
Давно уже хотелось, чтобы на гл.странице сайта были последние затронутые темы форума.
Файлы необходимые куда надо закачала...
А какой код надо на гл.страницу сайта вставлять?? Подскажите, пожалуйста.
Я пробовала тот, что
Код: Выделить всё
<?php // recent.php,v 1.0.4
global $board_config, $userdata;
$cfg_ignore_forums = '0';
И т.д.

-
- phpBB 1.4.2
- Сообщения: 53
- Стаж: 20 лет 4 месяца
- Откуда: Орёл
Спасибо большое за Ваш ответ!На самой первой странице этой темы найдите ссылку на оригинал мода. Его пока и ставьте.
Только я не нашла на первой странице код, который надо вставлять на гл.страницу сайта

Если честно, я перечитала все сообщения этой темы... но...

Не могли бы Вы мне, недогадливой такой, дать точный код, который надо вставлять? И, может, еще что-то надо кроме этого делать???
Помогите, пожалуйста.