- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Уважаемые.
Нужен самостоятельный скрипт вывода последних тем 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;
?>
Что скажете?
почти то же самое что и советовали