DiWorm
Проверенные
- Сообщения
- 440
- Реакции
- 142
- Баллы
- 5,545
Эта новость - репост моей записи на N(не буду указывать ссылку на оригинал во избежание ;)).
Данный небольшой гайд не имеет большой ценности, но возможно новичкам поможет в их изысканиях.
index.php
/inc/functions.php
Про require в functions.php: я привык к классу для работы с базой и ббкодам сторонних разработчик, копаться в сырцах XenForo мне не хотелось, чтобы найти как у них все работает. Но если вы желаете разобраться, вы можете заменить их на родные классы форума для работы.
Ссылки на используемые мною классы:
class.mysql.php -
nbbc.php -
Плюсы данного метода:
1. Можно выводить как угодно и где угодно(в моем случае - заменив полностью страницу с новостями)
2. Скорость выполнения: Запрос на выборку из базы 10 последних записей занимает 0.0005сек.
Все классы div'ов в коде это отсылка к twitter bootstrap3
Спасибо за внимание.
Данный небольшой гайд не имеет большой ценности, но возможно новичкам поможет в их изысканиях.
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
Спасибо за внимание.
Последнее редактирование: