- Автор темы
- #1
Добрый день!
Думал как выразить свою благодарность сообществу за годы помощи мне и нашел способ:
Встала задача: выводить новостную ленту на лету с форума (т.к. делать отдельную ленту - лениво) и в связи с переездом и отсутствием адекватных готовых решений, решил написать свой.
index.php
/inc/functions.php
Про require в functions.php: я привык к классу для работы с базой и ббкодам сторонних разработчик, копаться в сырцах XenForo мне не хотелось, чтобы найти как у них все работает. Но если вы желаете разобраться, вы можете заменить их на родные классы форума для работы.
Ссылки на используемые мною классы:
class.mysql.php - Для просмотра ссылки Войдиили Зарегистрируйся
nbbc.php - Для просмотра ссылки Войдиили Зарегистрируйся
Плюсы данного метода:
1. Можно выводить как угодно и где угодно(в моем случае - заменив полностью страницу с новостями)
2. Скорость выполнения: Запрос на выборку из базы 10 последних записей занимает 0.0005сек.
Все классы div'ов в коде это отсылка к twitter bootstrap3
P.S. Если вы прочитали текст и решили его перепостить или написать плагин\модуль, прошу оставлять ссылки на автора работы (меня) сюда на форум или на мой игровой проект: Для просмотра ссылки Войдиили Зарегистрируйся, или мой email dyworm[at]gmail.com
Спасибо за внимание.
Думал как выразить свою благодарность сообществу за годы помощи мне и нашел способ:
Встала задача: выводить новостную ленту на лету с форума (т.к. делать отдельную ленту - лениво) и в связи с переездом и отсутствием адекватных готовых решений, решил написать свой.
index.php
Код:
<?
require_once ('inc/functions.php'); //подключаем функции
news('24', '0', '10'); //задаем параметры - 1. ID категории форума 2. LIMIT вывода, в моем случае 0,10
?>
/inc/functions.php
Код:
<?
require_once ('class.mysql.php');
require_once ('nbbc.php');
function news($cat, $from, $to)
{
$db = new mysql();
if(!$db->IsConnected())
exit("db error");
$q = "SELECT `xf_thread`.`thread_id`, `xf_thread`.`node_id`, `xf_thread`.`title`, `xf_thread`.`reply_count`, `xf_thread`.`view_count`, `xf_thread`.`user_id`, `xf_thread`.`username`, `xf_thread`.`post_date`, `xf_thread`.`first_post_id`, `xf_post`.`message` FROM `xf_thread` LEFT JOIN `xf_post` ON `xf_post`.`thread_id` = `xf_thread`.`thread_id` AND `xf_post`.`post_id` = `xf_thread`.`first_post_id` WHERE `xf_thread`.`node_id` = '{$cat}' ORDER BY `xf_post`.`post_date` DESC LIMIT {$from} , {$to}";
$r = $db->query($q); // ($q, TRUE) для дебага
foreach($r as $obj)
{
$bbcode = new BBCode;
$obj->message = $bbcode->Parse($obj->message);
$obj->posted_date = date("d.m.Y H:i", $obj->posted_date); //приводим дату к человекопонятному формату
echo "<div class='panel panel-default'>";
echo " <div class='panel-heading'><a href='/forum2/index.php?threads/{$obj->thread_id}/'>{$obj->title}</a></div>";
echo " <div class='panel-body'>";
echo " <p>{$obj->message}</p>";
echo " </div>";
echo " <div class='panel-footer'>Дата: {$obj->posted_date} | Автор: <a href='/forum2/index.php?members/{$obj->user_id}/'>{$obj->username}</a> | Просмотров: {$obj->view_count} | Комментариев: {$obj->reply_count}</div>";
echo "</div>";
}
$db->close();
}
?>
Про require в functions.php: я привык к классу для работы с базой и ббкодам сторонних разработчик, копаться в сырцах XenForo мне не хотелось, чтобы найти как у них все работает. Но если вы желаете разобраться, вы можете заменить их на родные классы форума для работы.
Ссылки на используемые мною классы:
class.mysql.php - Для просмотра ссылки Войди
nbbc.php - Для просмотра ссылки Войди
Плюсы данного метода:
1. Можно выводить как угодно и где угодно(в моем случае - заменив полностью страницу с новостями)
2. Скорость выполнения: Запрос на выборку из базы 10 последних записей занимает 0.0005сек.
Все классы div'ов в коде это отсылка к twitter bootstrap3
P.S. Если вы прочитали текст и решили его перепостить или написать плагин\модуль, прошу оставлять ссылки на автора работы (меня) сюда на форум или на мой игровой проект: Для просмотра ссылки Войди
Спасибо за внимание.
Последнее редактирование: