Решение: Как вывести последние темы форума в любой CMS(или просто PHP)

Статус
В этой теме нельзя размещать новые ответы.

biovolk

Участники
Сообщения
14
Реакции
4
Баллы
5,500
Всем привет,

Недавно задавался вопросом как именно выводить последние темы например в вордпрессе, пхп код был найден где-то в интернете, он работал на вывод ВСЕХ последних тем, а вот вывод из определенных разделов - нет.

Немного похимичив получилось подправить этот код, делюсь со всеми

Код:
<?php
        // Ниже укажите имя, пароль и имя бд для подключения.
        $database_host = 'localhost'; // по стандарту это localhost
        $database_username = 'username'; // Имя к БД
        $database_password = 'derpassword'; // Пароль к БД
        $database_db = 'dbname'; // Имя БД

        $forum_url = 'http://****.ru/forum/'; // Укажите тут путь к вашему форуму (независимо от папки в которой он находится)

        $limit = 7; // Укажите лимит на отображение последних тем.

        $forum_ids = '32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,78,79'; // Укажите с каких разделов брать последние темы, либо укажите "ALL" что бы брать со всего форума.

        mysql_connect($database_host, $database_username, $database_password);
        mysql_select_db($database_db);

        $where = '';
        if ($forum_ids != '32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,78,79')
        {
            $where = 'WHERE `node_id` IN ($forum_ids)';
        }

        $sql_forum = "SELECT `title`, `thread_id` FROM `xf_thread` WHERE `node_id` IN (32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,78,79) ORDER BY `last_post_date` DESC LIMIT {$limit}";

        $query_forum = mysql_query($sql_forum);
            while ($topics = mysql_fetch_assoc($query_forum))
            {
                $url_title = str_replace(' ', '-', $topics['title']);
                $url_title = str_replace('.', '', $url_title);
                $url_title = str_replace('?', '', $url_title);
                $url_title = str_replace('/', '-', $url_title);
                $url_title = str_replace('\\', '-', $url_title);
                $url_title = str_replace('"', '-', $url_title);
                echo "<img src='http://******/icsmall.png'>&nbsp;<a href=\"{$forum_url}index.php?threads/{$url_title}.{$topics['thread_id']}/\">{$topics['title']}</a><br>";
            }
        ?>

ну а чтобы выводило со всех разделов, достаточно заменить все ноды(цифры) просто на слово ALL.

Всем удачи

P.S.

Возможно кто-то подскажет где что подписать чтобы выставить лимит для вывода названия темы, т.е. лимит кол-ва символов в названии, чтобы обрезало длинный текст например было : Блаблаблаблаблабла, а с лимитом будет выводить Блабла...
 
Жуть какая-то, а не код. Вообще смотрели, что написали? Условие $where сделали, а вставить в запрос не вставили. Цифры еще какие-то через запятую.

PHP:
<?php
        // Ниже укажите имя, пароль и имя бд для подключения.
        $database_host = 'localhost'; // по стандарту это localhost
        $database_username = 'username'; // Имя к БД
        $database_password = 'derpassword'; // Пароль к БД
        $database_db = 'dbname'; // Имя БД

        $forum_url = 'http://****.ru/forum/'; // Укажите тут путь к вашему форуму (независимо от папки в которой он находится)

        $limit = 7; // Укажите лимит на отображение последних тем.

        $forum_ids = array(
            33, 34, 35, 36, 37, 38, 39, 40 // Укажите с каких разделов брать последние темы
        );

        mysql_connect($database_host, $database_username, $database_password);
        mysql_select_db($database_db);

        $where = '';
        if ($forum_ids && count($forum_ids) > 0)
        {
            $where = 'WHERE `node_id` IN (' . implode(',', $forum_ids) . ')';
        }

        $sql_forum = "SELECT `title`, `thread_id` FROM `xf_thread` {$where} ORDER BY `last_post_date` DESC LIMIT {$limit}";

        $query_forum = mysql_query($sql_forum);
            while ($topics = mysql_fetch_assoc($query_forum))
            {
                $url_title = str_replace(' ', '-', $topics['title']);
                $url_title = str_replace('.', '', $url_title);
                $url_title = str_replace('?', '', $url_title);
                $url_title = str_replace('/', '-', $url_title);
                $url_title = str_replace('\\', '-', $url_title);
                $url_title = str_replace('"', '-', $url_title);
                echo "<img src='http://******/icsmall.png'>&nbsp;<a href=\"{$forum_url}index.php?threads/{$url_title}.{$topics['thread_id']}/\">{$topics['title']}</a><br>";
            }
 
Жуть какая-то, а не код. Вообще смотрели, что написали? Условие $where сделали, а вставить в запрос не вставили. Цифры еще какие-то через запятую.

PHP:
<?php
        // Ниже укажите имя, пароль и имя бд для подключения.
        $database_host = 'localhost'; // по стандарту это localhost
        $database_username = 'username'; // Имя к БД
        $database_password = 'derpassword'; // Пароль к БД
        $database_db = 'dbname'; // Имя БД

        $forum_url = 'http://****.ru/forum/'; // Укажите тут путь к вашему форуму (независимо от папки в которой он находится)

        $limit = 7; // Укажите лимит на отображение последних тем.

        $forum_ids = array(
            33, 34, 35, 36, 37, 38, 39, 40 // Укажите с каких разделов брать последние темы
        );

        mysql_connect($database_host, $database_username, $database_password);
        mysql_select_db($database_db);

        $where = '';
        if ($forum_ids && count($forum_ids) > 0)
        {
            $where = 'WHERE `node_id` IN (' . implode(',', $forum_ids) . ')';
        }

        $sql_forum = "SELECT `title`, `thread_id` FROM `xf_thread` {$where} ORDER BY `last_post_date` DESC LIMIT {$limit}";

        $query_forum = mysql_query($sql_forum);
            while ($topics = mysql_fetch_assoc($query_forum))
            {
                $url_title = str_replace(' ', '-', $topics['title']);
                $url_title = str_replace('.', '', $url_title);
                $url_title = str_replace('?', '', $url_title);
                $url_title = str_replace('/', '-', $url_title);
                $url_title = str_replace('\\', '-', $url_title);
                $url_title = str_replace('"', '-', $url_title);
                echo "<img src='http://******/icsmall.png'>&nbsp;<a href=\"{$forum_url}index.php?threads/{$url_title}.{$topics['thread_id']}/\">{$topics['title']}</a><br>";
            }
код как код, а цифры - номера разделов откуда брать новые темы - читайте внимательно, для всех разделов есть фраза ALL
 
biovolk, не принимайте это лично, я просто исправил ваш код на более лаконичный и правильный (с точки зрения программирования) вариант.
Вместо сравнения с загадочными строками чисел, теперь проверяется, есть ли что-то в массиве $forum_ids, и если есть - тогда выводится из этих разделов. Если нету - тогда берется из всех.
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу