- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Уважаемые.
Нужен самостоятельный скрипт вывода последних тем IPB 3.1!
То есть не модуль для какого-то движка, а именно маленький скриптик, который делает выборку из БД и выводит в нужном мне виде.
У кого есть похожий скрипт, поделитесь пожалуйста. Спасибо!
mr.Cent добавил 11.10.2010 в 16:20
Точнее у меня есть некий скрипт, который работает на основе стандартного хука IPB. Но зараза выводит только последние темы. То есть должна быть создана именно тема, чтобы появится в результатах скрипта. А меня интересует, как сделать вывод именно тем, в которых оставлено сообщение.
<?php
/* Настройки */
/* ========================================================================== */
// Путь к форуму
if (!defined('IPBNETRU_IPB3_ROOT')) {
define('IPBNETRU_IPB3_ROOT', '/lalala/forum/');
}
// Количество тем
if (!defined('IPBNETRU_RECENT_TOPICS_COUNT')) {
define('IPBNETRU_RECENT_TOPICS_COUNT', 8);
}
/* Инициализация */
/* ========================================================================== */
define('IPB_THIS_SCRIPT', 'public');
define('IPS_PUBLIC_SCRIPT', 'index.php');
require_once IPBNETRU_IPB3_ROOT.'/initdata.php';
require_once IPS_ROOT_PATH.'sources/base/ipsRegistry.php';
ipsRegistry::init();
/* Функции */
/* ========================================================================== */
/**
* Возвращает указанное количество последних тем.
*
* @param int $count
*
* @return string
*/
function ipbnetruGetCustomRecentTopics($count = 5) {
$topicIDs = array();
$bvnp = explode(',', ipsRegistry::$settings['vnp_block_forums']);
$classForum = ipsRegistry::getClass('class_forums');
ipsRegistry::getClass('class_localization')->loadLanguageFile('public_topic', 'forums');
// Grab last X data
foreach($classForum->forum_by_id as $forumID => $forumData) {
if (!isset($forumData['can_view_others']) || !$forumData['can_view_others']) {
continue;
}
if ($forumData['password']) {
continue;
}
if ( !ipsRegistry::getClass('permissions')->check('read', $forumData)){
continue;
}
if (is_array($bvnp) && in_array($forumID, $bvnp)) {
continue;
}
$isTrash = ($forumID == ipsRegistry::$settings['forum_trash_can_id']);
if (ipsRegistry::$settings['forum_trash_can_id'] && $isTrash) {
continue;
}
$_topics = $classForum->lastXThaw($forumData['last_x_topic_ids']);
if (is_array($_topics)) {
foreach($_topics as $id => $time) {
$topicIDs[$time] = $id;
}
}
}
// Получаем данные
$topics = array();
if ($topicIDs) {
krsort($topicIDs);
$_topics = array_slice($topicIDs, 0, $count);
if ($_topics) {
ipsRegistry::DB()->build(array(
'select' => 't.tid, t.title, t.title_seo, t.start_date, t.starter_id, t.starter_name',
'from' => array('topics' => 't'),
'where' => 't.tid IN ('.implode(',', array_values($_topics)).')',
'order' => 't.start_date DESC',
'add_join' => array(
array(
'select' => 'm.members_display_name, m.members_seo_name',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=t.starter_id',
'type' => 'left',
),
),
));
ipsRegistry::DB()->execute();
while ($topic = ipsRegistry::DB()->fetch()) {
$topics[$topic['start_date']] = $topic;
}
}
}
// Вывод: создать собственный шаблон
return ipsRegistry::getClass('output')->getTemplate('boards')
->hookRecentTopics2($topics);
}
/* Получение */
/* ========================================================================== */
$html = ipbnetruGetCustomRecentTopics(IPBNETRU_RECENT_TOPICS_COUNT);
// Замена стандартных строк
$html = ipsRegistry::getClass('output')->replaceMacros($html);
// Хуки :)
$html = ipsRegistry::getClass('output')->templateHooks($html);
$html = preg_replace("#<!--hook\.([^\>]+?)-->#", '', $html);
/* Вывод */
/* ========================================================================== */
echo $html;
?>
Попробуйте строчку
заменить на
Тогда, по идее, выведутся темы, упорядоченные по дате последнего сообщения в них.
Нужен самостоятельный скрипт вывода последних тем IPB 3.1!
Точнее у меня есть некий скрипт, который работает на основе стандартного хука IPB. Но зараза выводит только последние темы. То есть должна быть создана именно тема, чтобы появится в результатах скрипта. А меня интересует, как сделать вывод именно тем, в которых оставлено сообщение.
Насколько я понял, тебе нужно вывести темы в которые оставлены последние сообщения?..
Попробуй заменить
'order' => 't.start_date DESC',
на
'order' => 'last_post DESC',
хз, но вроде должно сработать.
siv1987 добавил 11.10.2010 в 17:56
SeoProger, опередил.
Хотя скорее всего еще понадобится поубирать условия where в запросе. Вобщем, если я правильно понял задачу - нужно выполнить запрос к базе
Где ipb_topics - ваша таблица с темами, ограничения WHERE и LIMIT меняются в соответствии с задачей.
Пока ждал ответа, нашел другое решение:
<?php
//======[ОСНОВНЫЕ НАСТРОЙКИ]======
//Префикс таблицы с IPB
$prefix = '';
//Сколько тем выводить
$num = 10;
//Сколько символов оставить в названии темы после урезания
$topic_num_sym = 65;
//Имя папки с картинками текущего скина
$img_path = '1';
//Формат времени
$time = 'H:i';
//Форумы, которые мы не трогаем
$forumexclude = '0';
//Сервер БД на котором висит база форума
$host="localhost";
//Имя БД
$database="lalala";
//Логин БД
$username="lalala";
//Пароль БД
$password="lalala";
//====[Если не знаем PHP - дальше ничего не трогаем :)]=========
$ipb_db = mysql_pconnect($host, $username, $password);
mysql_select_db($database, $ipb_db);
$rd = "SET CHARACTER SET utf8";
IF (!$result = mysql_query($rd)) {
ECHO "ERROR!!!\n";
}
$resultf = mysql_query("SELECT tid, title, description, state, posts, starter_id, last_poster_id, last_post, icon_id, starter_name, last_poster_name, views, topic_hasattach FROM ".$prefix."topics WHERE (forum_id NOT IN ($forumexclude)) ORDER BY last_post DESC LIMIT $num",$ipb_db) or die(mysql_error());
$row_resultf = mysql_fetch_assoc($resultf);
$totalRows_resultf = mysql_num_rows($resultf);
do {
$topicstrip = $row_resultf['title'];
if (strlen($topicstrip) > $topic_num_sym) {
$topicstrip = substr($topicstrip,0,$topic_num_sym);
$topicstrip = $topicstrip."...";
}
$status = ($row_resultf['state'] == "closed") ? "<img src=\"forum/style_images/$img_path/f_closed.gif\" border=\"0\" alt=\"Тема закрыта\">" : "";
$attach = ($row_resultf['topic_hasattach'] == "1") ? "<img src=\"temp/A-Vector/images/files.gif\" border=\"0\" alt=\"В сообщении есть прикрепленные файлы\"> " : "";
$last_date = date($time,$row_resultf['last_post']);
$bt.= "<small class=\"3\">$last_date:</small> <b><a title=\"".$row_resultf['description']."\" href=\"forum/index.php?showtopic=".$row_resultf['tid']."&view=getlastpost\">$topicstrip</a></b><br>";
} while($row_resultf = mysql_fetch_assoc($resultf));
mysql_free_result($resultf);
echo $bt;
return $bt;
?>
Что скажете?
почти то же самое что и советовали