Помощь Вывод последних комментариев DLE FORUM

Тема в разделе "DLE", создана пользователем backzzz, 15 мар 2011.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. backzzz

    backzzz Создатель

    Регистр.:
    17 июл 2010
    Сообщения:
    25
    Симпатии:
    0
    Помогите решить проблему если можно.Есть сайт в нем 3 категории и также на форуме есть эти же категории. Можно ли как выводить в полных новостях на сайте последние записи с форума с этой же категории в которой находиться посетитель.(Чтобы в новости в категории 1 выводились последние записи форума одной категории)
     
  2. acelotuse

    acelotuse

    Регистр.:
    31 мар 2009
    Сообщения:
    312
    Симпатии:
    37
    стандартными инструментами - никак. Надо копаться в файле show.last.php в папке со скриптами форума.
    Первое что приходит в голову, это сделать к примеру в этом файле в коде изменения:
    PHP:
    $result $db->query("SELECT * FROM " PREFIX "_forum_topics LEFT JOIN "PREFIX ."_forum_forums ON "PREFIX ."_forum_topics.forum_id = "PREFIX ."_forum_forums.id {$access_hide} GROUP BY last_date DESC LIMIT ".$forum_config['site_inpage']."");
    тут идет выборка по последней дате. Назначить по последней дате в определенной категории.
     
  3. TwistedAndy

    TwistedAndy Постоялец

    Регистр.:
    17 июл 2009
    Сообщения:
    108
    Симпатии:
    22
    Когда-то подобный функционал реализовывал у себя. Суть сводится к тому, что для каждой новости я добавлял еще одно доп. поле - тема форума.

    Потом шла выборка сообщений в случайном порядке из той темы форума. Результат кешировался. Как следствие это может сильно уникализировать контент.
     
  4. acelotuse

    acelotuse

    Регистр.:
    31 мар 2009
    Сообщения:
    312
    Симпатии:
    37
    В общем, примерно должно быть так.
    Открываешь файл engine/forum/sources/modules/show.last.php
    Удаляешь все вставляешь вот такое (могу допустить кучу ошибок, если что не так, отписывайся) :
    PHP:
    <?php
    if(!defined('DATALIFEENGINE'))
    {
      die(
    "Hacking attempt!");
    }

    @include 
    ENGINE_DIR.'/data/forum_config.php';

    $forum_config['site_inpage'] = '10';
    /// для категории 1
    if ($forum_config['site_inpage'])
    {
        if (!
    $forum_table)
        {
            if (
    $forum_config['hide_forum'])
            {
                
    $access_hide "WHERE "PREFIX ."_forum_forums.access_read regexp '[[:<:]](".$member_id['user_group'].")[[:>:]]'";
            }
            else { 
    $access_hide ""; }
            
    $result $db->query("SELECT * FROM " PREFIX "_forum_topics LEFT JOIN "PREFIX ."_forum_forums ON WHERE main_id=1 "PREFIX ."_forum_topics.forum_id = "PREFIX ."_forum_forums.id {$access_hide} GROUP BY last_date DESC LIMIT ".$forum_config['site_inpage']."");
            while (
    $row $db->get_row ($result))
            {
                if (
    $forum_config['mod_rewrite'])
                {
                    
    $fl_forum "<a href='/forum/forum_{$row['id']}'>{$row['name']}</a>";
                    
    $fl_topic "<a href='/forum/topic_$row[tid]/last#reply'>{$row['title']}</a>";
                    
    $fl_author "<a href='/user/$row[author_topic]/'>{$row['author_topic']}</a>";
                    
    $fl_last_poster "<a href='/user/$row[last_poster_name]/'>{$row['last_poster_name']}</a>";
                }
                else
                {
                    
    $fl_forum "<a href='/?do=forum&showforum={$row['id']}'>{$row['name']}</a>";
                    
    $fl_topic "<a href='/?do=forum&showtopic=$row[tid]&lastpost=1'>{$row['title']}</a>";
                    
    $fl_author "<a href='/?subaction=userinfo&user=$row[author_topic]/'>{$row['author_topic']}</a>";    
                    
    $fl_last_poster "<a href='/?subaction=userinfo&user=$row[last_poster_name]/'>{$row['last_poster_name']}</a>";
                }
                
    $row['last_date'] = strtotime($row['last_date']);
                if (
    date(Ymd$row['last_date']) == date(Ymd$_TIME))
                {
                    
    $show_date $lang['time_heute'].langdate(", H:i"$row['last_date']);
                }
                elseif (
    date(Ymd$row['last_date']) == date(Ymd, ($_TIME 86400)))
                {
                    
    $show_date $lang['time_gestern'].langdate(", H:i"$row['last_date']);
                }
                else
                {
                    
    $show_date langdate($forum_config['timestamp'], $row['last_date']);
                }
                
    $tpl->load_template('forum_last_list.tpl');
                
    $tpl->set('{fl_forum}'$fl_forum);
                
    $tpl->set('{fl_topic}'$fl_topic);
                
    $tpl->set('{fl_post}'$row['post']);
                
    $tpl->set('{fl_views}'$row['views']);
                
    $tpl->set('{fl_author}'$fl_author);
                
    $tpl->set('{fl_last_date}'$show_date);
                
    $tpl->set('{fl_last_poster}'$fl_last_poster);    
                
    $tpl->compile('forum_last_list');
                
    $tpl->clear();
            }
            
    $tpl->load_template('forum_last.tpl');
            
    $tpl->set('{last_list}'$tpl->result["forum_last_list"]);
            
    $tpl->compile('forum_table');
            
    $tpl->clear();    
            
    create_cache ('dlef_show_last'$tpl->result['forum_table']);
        }    
        else
        {
            
    $tpl->result['forum_table'] = $forum_table;
        }
    }
    /// для категории 2
    if ($forum_config['site_inpage'])
    {
        if (!
    $forum_table)
        {
            if (
    $forum_config['hide_forum'])
            {
                
    $access_hide "WHERE "PREFIX ."_forum_forums.access_read regexp '[[:<:]](".$member_id['user_group'].")[[:>:]]'";
            }
            else { 
    $access_hide ""; }
            
    $result $db->query("SELECT * FROM " PREFIX "_forum_topics LEFT JOIN "PREFIX ."_forum_forums ON WHERE main_id=2 "PREFIX ."_forum_topics.forum_id = "PREFIX ."_forum_forums.id {$access_hide} GROUP BY last_date DESC LIMIT ".$forum_config['site_inpage']."");
            while (
    $row $db->get_row ($result))
            {
                if (
    $forum_config['mod_rewrite'])
                {
                    
    $fl_forum2 "<a href='/forum/forum_{$row['id']}'>{$row['name']}</a>";
                    
    $fl_topic2 "<a href='/forum/topic_$row[tid]/last#reply'>{$row['title']}</a>";
                    
    $fl_author2 "<a href='/user/$row[author_topic]/'>{$row['author_topic']}</a>";
                    
    $fl_last_poster2 "<a href='/user/$row[last_poster_name]/'>{$row['last_poster_name']}</a>";
                }
                else
                {
                    
    $fl_forum2 "<a href='/?do=forum&showforum={$row['id']}'>{$row['name']}</a>";
                    
    $fl_topic2 "<a href='/?do=forum&showtopic=$row[tid]&lastpost=1'>{$row['title']}</a>";
                    
    $fl_author2 "<a href='/?subaction=userinfo&user=$row[author_topic]/'>{$row['author_topic']}</a>";    
                    
    $fl_last_poster2 "<a href='/?subaction=userinfo&user=$row[last_poster_name]/'>{$row['last_poster_name']}</a>";
                }
                
    $row['last_date'] = strtotime($row['last_date']);
                if (
    date(Ymd$row['last_date']) == date(Ymd$_TIME))
                {
                    
    $show_date $lang['time_heute'].langdate(", H:i"$row['last_date']);
                }
                elseif (
    date(Ymd$row['last_date']) == date(Ymd, ($_TIME 86400)))
                {
                    
    $show_date $lang['time_gestern'].langdate(", H:i"$row['last_date']);
                }
                else
                {
                    
    $show_date langdate($forum_config['timestamp'], $row['last_date']);
                }
                
    $tpl->load_template('forum_last_list2.tpl');
                
    $tpl->set('{fl_forum2}'$fl_forum);
                
    $tpl->set('{fl_topic2}'$fl_topic);
                
    $tpl->set('{fl_post2}'$row['post']);
                
    $tpl->set('{fl_views2}'$row['views']);
                
    $tpl->set('{fl_author2}'$fl_author);
                
    $tpl->set('{fl_last_date2}'$show_date);
                
    $tpl->set('{fl_last_poster2}'$fl_last_poster);    
                
    $tpl->compile('forum_last_list2');
                
    $tpl->clear();
            }
            
    $tpl->load_template('forum_last2.tpl');
            
    $tpl->set('{last_list2}'$tpl->result["forum_last_list2"]);
            
    $tpl->compile('forum_table2');
            
    $tpl->clear();    
            
    create_cache ('dlef_show_last2'$tpl->result['forum_table2']);
        }    
        else
        {
            
    $tpl->result['forum_table2'] = $forum_table2;
        }
    }
    /// для категории 3
    if ($forum_config['site_inpage'])
    {
        if (!
    $forum_table)
        {
            if (
    $forum_config['hide_forum'])
            {
                
    $access_hide "WHERE "PREFIX ."_forum_forums.access_read regexp '[[:<:]](".$member_id['user_group'].")[[:>:]]'";
            }
            else { 
    $access_hide ""; }
            
    $result $db->query("SELECT * FROM " PREFIX "_forum_topics LEFT JOIN "PREFIX ."_forum_forums ON WHERE main_id=3 "PREFIX ."_forum_topics.forum_id = "PREFIX ."_forum_forums.id {$access_hide} GROUP BY last_date DESC LIMIT ".$forum_config['site_inpage']."");
            while (
    $row $db->get_row ($result))
            {
                if (
    $forum_config['mod_rewrite'])
                {
                    
    $fl_forum3 "<a href='/forum/forum_{$row['id']}'>{$row['name']}</a>";
                    
    $fl_topic3 "<a href='/forum/topic_$row[tid]/last#reply'>{$row['title']}</a>";
                    
    $fl_author3 "<a href='/user/$row[author_topic]/'>{$row['author_topic']}</a>";
                    
    $fl_last_poster3 "<a href='/user/$row[last_poster_name]/'>{$row['last_poster_name']}</a>";
                }
                else
                {
                    
    $fl_forum3 "<a href='/?do=forum&showforum={$row['id']}'>{$row['name']}</a>";
                    
    $fl_topic3 "<a href='/?do=forum&showtopic=$row[tid]&lastpost=1'>{$row['title']}</a>";
                    
    $fl_author3 "<a href='/?subaction=userinfo&user=$row[author_topic]/'>{$row['author_topic']}</a>";    
                    
    $fl_last_poster3 "<a href='/?subaction=userinfo&user=$row[last_poster_name]/'>{$row['last_poster_name']}</a>";
                }
                
    $row['last_date'] = strtotime($row['last_date']);
                if (
    date(Ymd$row['last_date']) == date(Ymd$_TIME))
                {
                    
    $show_date $lang['time_heute'].langdate(", H:i"$row['last_date']);
                }
                elseif (
    date(Ymd$row['last_date']) == date(Ymd, ($_TIME 86400)))
                {
                    
    $show_date $lang['time_gestern'].langdate(", H:i"$row['last_date']);
                }
                else
                {
                    
    $show_date langdate($forum_config['timestamp'], $row['last_date']);
                }
                
    $tpl->load_template('forum_last_list3.tpl');
                
    $tpl->set('{fl_forum3}'$fl_forum);
                
    $tpl->set('{fl_topic3}'$fl_topic);
                
    $tpl->set('{fl_post3}'$row['post']);
                
    $tpl->set('{fl_views3}'$row['views']);
                
    $tpl->set('{fl_author3}'$fl_author);
                
    $tpl->set('{fl_last_date3}'$show_date);
                
    $tpl->set('{fl_last_poster3}'$fl_last_poster);    
                
    $tpl->compile('forum_last_list3');
                
    $tpl->clear();
            }
            
    $tpl->load_template('forum_last3.tpl');
            
    $tpl->set('{last_list3}'$tpl->result["forum_last_list3"]);
            
    $tpl->compile('forum_table3');
            
    $tpl->clear();    
            
    create_cache ('dlef_show_last3'$tpl->result['forum_table3']);
        }    
        else
        {
            
    $tpl->result['forum_table3'] = $forum_table3;
        }
    }
    ?>
    После чего в файле index.php ищешь
    PHP:
    $tpl->set('{forum}'$tpl->result['forum_table']);
    после чего ниже вставляешь:
    PHP:
    $tpl->set('{forum2}'$tpl->result['forum_table2']);
    $tpl->set('{forum3}'$tpl->result['forum_table3']);
    В main.tpl вставляешь такое (номера категорий прописывай свои, но тег форума не трогай:(
    [category=1]{forum}[/category]
    [category=2]{forum2}[/category]
    [category=3]{forum3}[/category]
    Добавляешь в шаблон копии файлов
    forum_last.tpl
    forum_last_list.tpl
    но с названиями:
    forum_last2.tpl
    forum_last_list2.tpl
    forum_last3.tpl
    forum_last_list3.tpl
    В каждом из этих файлов изменяешь названия переменных, согласно номеру в названии файла.
    Т.е. если 2, то внутри файла в переменных {fl_topic} вставляешь двойку чтобы было {fl_topic2}, {fl_views2}, {fl_author2}, то же самое с 3, по такому же принципу.

    Да! Забыл сказать. Цифры 2 и 3 взяты с потолка. Их надо проверять с данными в твоей базе данных. Заходишь в таблицу dle_forum_category и ищешь значение sid рядом с названием твоей категории. Эти три цифры трех категорий надо менять не во всем кода, а только в строчке с запросом. Найди в вышеуказанном коде WHERE main_id=1 и поменяй на свой id категории. То же самое с двумя другими строчками WHERE main_id=2 и WHERE main_id=3.
    ОСТАЛЬНЫЕ ДВОЙКИ И ТРОЙКИ НЕ ТРОГАЙ!!!

    Повторяю, мог ошибиться в коде, так что делай бэкапы файлов, и отписывайся, что, как и почему.
     
Статус темы:
Закрыта.