[AJAX mod here] Я так поннимаю:
Код: Выделить всё
#
#-----[ OPEN ]------------------------------------------
#
recent.php
#
#-----[ FIND ]------------------------------------------
#
$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;
#
#-----[ REPLACE WITH ]------------------------------------------
#
$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 . '/topic';
$viewpost_url = $board_path . '/post';
#
#-----[ FIND ]------------------------------------------
#
'U_TOPIC' => $viewtopic_url . '?' . POST_TOPIC_URL . '=' . $row['topic_id'],
#
#-----[ REPLACE WITH ]------------------------------------------
#
'U_TOPIC' => $viewtopic_url . $row['topic_id'] . '.html',
Добавлено спустя 4 минуты 6 секунд:
Огромное спасибо! У мня все получилось!
Такой еще вопрос - как там прогресс с AJAX апгрейдом мода?
Добавлено спустя 2 часа 6 минут 43 секунды:
AJAX Recent Mod Beta
Ладно. Тк аякс-версия данного мода что-то застопорилась, пришлось изучать аякс и писать свою. Моя первая поделка на аякс.
Файл
recent_ajax.js (кидаем в корень форума)
Код: Выделить всё
var xmlObj = null;
function recent() {
if(window.XMLHttpRequest){
xmlObj = new XMLHttpRequest();
}
else if(window.ActiveXObject){
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
return;
}
xmlObj.onreadystatechange = process
xmlObj.open ('GET', "recent.php", true);
xmlObj.send ( null );
}
function process(){
if(xmlObj.readyState == 4){
document.getElementById("output").innerHTML = xmlObj.responseText ;
}
}
Файл
recent_body.tpl
Код: Выделить всё
<!-- BEGIN topicrow -->
<li><a href="{topicrow.U_TOPIC}">{topicrow.TOPIC_TITLE}</a></li>
<!-- END topicrow -->
На странице, где будет сам список:
Код: Выделить всё
#
#--- [ Find ] ---
#
</head>
#
#--- [ Before, add ] ---
#
<script type="text/javascript" src="recent_ajax.js"></script>
#
#--- [ Find ] ---
#
<body
#
#--- [ In line, find ] ---
#
body
#
#--- [ After, add ] ---
#
onLoad="recent()"
Сообственно, сам список последних тем:
Кнопка обновления списка:
Код: Выделить всё
<a onclick="recent()">Update Recent Topics</a>
В двух словах обьясняю принцип работы. Сначала загружается весь документ, потом берется содержимое файла recent.php (
body onLoad="recent()" ) и заменяет содержимое блока с
id="output" на то, что в файле ресент.пхп. В случае, если ЖаваСкрипты отключены, то будет показываться содержимое по умолчанию (в данном случае
<li>Default</li>). Этот момент можно заменить на что угодно, например на сообщение "Включите Жабоскрипты" или на рекламу, что, мо моему, значительный плюс по сравнению с предыдущей версией, которая невалидна и не выдает ничего в случае неисправности. Если жаваскрипты включены, то будет создана конструкция след вида:
Код: Выделить всё
<ul id="recent_output">
<li><a href="{LINK}">{NAME}</a></li>
<li><a href="{LINK}">{NAME}</a></li>
<li><a href="{LINK}">{NAME}</a></li>
<li><a href="{LINK}">{NAME}</a></li>
<li><a href="{LINK}">{NAME}</a></li>
</ul>
Внешний вид этой конструкции очень легко изменяется с помощью ксс:
ul#recent_output{background:green}.
Дальше. У нас есть кнопка обновления списка
<a onclick="recent()">Update Recent Topics</a>. Вы можете заменить тег А на Див, Спан, Буттон, или что-то другое - неважно. При клике на него снова изменяется содержимое блокас
id="output" на то, что в файле ресент.пхп, без перезагрузки всей страницы. Текст может быть заменен на красивый рисунок, или еще чет. Главное - суть.
Итого, этот вариант позволяет сделать меню последних тем с обновлением при нажатии кнопки, размещенной в любом другом месте.
Добавлено спустя 9 минут 40 секунд:
Я еще полажу, поэкспериментирую и, может, самообновляющуюся сделаю...
Добавлено спустя 1 час 21 минуту 49 секунд:
AJAX Recent Mod Beta. TimeOut Addon
auto_recent_ajax.js (в корне форума)
Код: Выделить всё
var info = document.getElementById("recent_timer");
var timer;
function auto_recent() {
timer = setInterval(function() {
var cur = parseInt(info.innerHTML);
if(cur == '0') {
recent();
cur = 30; // Time of Update
}
else cur--;
info.innerHTML = cur;
},1000);
}
Строка 8 - это количество секунд, которые проходят между автообновлениями.
Изменения
после установки предыдущего мода Аякс:
Код: Выделить всё
#
#--- [ Open ] ---
#
overall_footer.tpl
#
#--- [ Find ] ---
#
</body>
#
#--- [ Before, Add ] ---
#
<script type="text/javascript" src="auto_recent_ajax.js"></script>
#
#--- [ Open ] ---
#
overall_header.tpl
#
#--- [ Find ] ---
#
<body
#
#--- [ In line, find ] ---
#
onload="recent();"
#
#--- [ In line, replace ] ---
#
onload="auto_recent();"
В любом месте можно вставить следующий код, который будет показывать, сколько секунд осталось до следующего автообновления:
Добавлено спустя 1 минуту 55 секунд:
Вроде все написал. У меня на Локалхосте работает.
Если что - извините за ошибки. Щас 5 часов утра, мог где-то сбиться...
Добавлено спустя 7 часов 17 минут 48 секунд:
Может быть ошибка в кодировке. Русские буквы будут отображаться знаками вопроса. Тогда:
Код: Выделить всё
#
#--- [ Open ] ---
#
recent.php
#
#--- [ Find ] ---
#
//
// Let's prevent caching
//
#
#--- [ Before, Add ] ---
#
header ('Content-type: text/html; charset=windows-1251');