Я еще раз повторюсь, что редиректит нормально если допустим зашел в тему и написал в конце /last, тогда просто last удаляется и все замечательно, но если ты заходишь через "Последние сообщения" которые выводятся на главной странице форума в тему содержащую больше одной страницы ты не окажешься на последнем сообщении последней страницы, а будешь куковать на первой. Как это исправить я конечно же придумал.
Пишем в htaccess все, что было написано выше и далее заходим в файл engine/forum/sources/components/functions.php, ищем строку:
и меняем содержимое внутри на мой код:
function forum_last ($topic_id, $title, $last_user, $last_date, $password = false, $redirect = false, $fid = false, $access_read = false, $is_category = false, $last_pid = 0)
{
global $forum_config, $f_lang, $_TIME, $member_id, $db;
if ($redirect)
{
return '';
}
//check_access
$row_topic = $db->super_query("SELECT * FROM " . PREFIX . "_forum_topics WHERE tid = $topic_id");
$last_page = @ceil(($row_topic['post'] + 1) / $forum_config['post_inpage']);
$title = stripslashes($title);
$last_date = strtotime($last_date);
$last_date_info = show_date($last_date);
$h_title = $f_lang['topic_last_p'].' '.$title;
if ($forum_config['last_abc'])
{
if (strlen($title) > $forum_config['last_abc'])
{
$title = substr($title, 0, $forum_config['last_abc']).'...';
}
}
if ($password AND md5($password) !== $_COOKIE["dle_forum_{$fid}"])
{
$link_topic = $f_lang['fl_c_forum'];
}
elseif (!check_access($access_read) && !$is_category)
{
$link_topic = $f_lang['fl_c_forum'];
}
elseif ($last_page > 1)
{
if ($forum_config['mod_rewrite']) { $p_sn = "/$last_page#post-{$last_pid}"; } else { $p_sn = "&lastpost=1#post-{$last_pid}"; }
$link_topic = link_topic($topic_id . $p_sn, $title, $h_title);
}
else
{
if ($forum_config['mod_rewrite']) { $p_sn = "/#post-{$last_pid}"; } else { $p_sn = "&lastpost=1#post-{$last_pid}"; }
$link_topic = link_topic($topic_id . $p_sn, $title, $h_title);
}
$last_date_info .= $f_lang['fl_topic'].' '.$link_topic;
$last_date_info .= $f_lang['fl_author'].' '.link_user($last_user);
if (!$last_user or !$last_date){ $last_date_info = $f_lang['fl_nopost']; }
return($last_date_info);
}
Далее по поводу закрыть от индексации, это возможно по моему только если закрывать и тему от индексации тоже, по другому у меня не получилось. Зато придумал как уникализировать титл и дескриптион, возможно конечно не самое лучшее решение, но другого мне в голову так и не пришло. Вообщем долго у меня не получалось правильно сделать пока не догадался через реферальную ссылку попробывать, то есть в ласт можно попасть только через главную страницу форума, вот я этим и воспользовался.
Открываем файл /engine/forum/sources/showtopic.php ищем этот код в самом низу:
else
{
$group_name = $user_group[$member_id['user_group']]['group_name'];
forum_msg($f_lang['f_msg'], $f_lang['topic_read'], 'user_group', $group_name);
}
Далее удаляем все что находится ниже, кроме "?>" и вставляем мой код:
$metatags['title'] = stripslashes($row_topic['title']);
$url_str = $_SERVER["HTTP_REFERER"];
if (preg_match("/forum\/$/", $url_str))
{
$metatags['title'] .= ' » ' . "Последнее сообщение";
$metatags['description'] .= " последнее сообщение";
}
$metatags['title'] .= ' » ' . $forum_config['forum_title'];
// ********************************************************************************
// FORUM BAR
// ********************************************************************************
if ($forum_config['forum_bar'])
{
$forum_bar_array = array_merge($forum_bar_array, $dle_forum->get_forum_bar($forum_id));
}
}
После этого изменения будет уникализироваться титл и описание.
Позакрывал те разделы которые особо важной информации не несут и у них еще описание повторяется с главной страницей, что не есть хорошо. А каждому менять отдельно мне лень. Оставил только главную страницу форума и сами темы с пагинацией.
Модификациями делиться готов, но щас уже поздно и мне хочется спать, тем более кто то меняет форум на другой так, что понту тебе с них?
PS: кому то бы не мешало научиться общаться повежливее и не быть агро-школьником.