Вывод последних комментариев под краткой новостью в DLE

Тема в разделе 'PHP', создана пользователем Razormane, 1 сен 2011.

  1. Razormane New Member

    Есть такой хак для DLE - Вывод последних комментариев под краткой новостью в DLE

    Пример:
    1310677356_intonews.jpg

    Сам хак:
    Установка:
    1. В файле engine/modules/show.short.php

    найти

    $tpl->compile( 'content' );

    if( $user_group[$member_id['user_group']]['allow_hide'] ) $tpl->result['content'] = str_ireplace( "[hide]", "", str_ireplace( "[/hide]", "", $tpl->result['content']) );
    else $tpl->result['content'] = preg_replace ( "#\[hide\](.+?)\[/hide\]#ims", "<div class=\"quote\">" . $lang['news_regus'] . "</div>", $tpl->result['content'] );

    вставить выше

    if($row['comm_num']>0){
    $newsIDs[] = $row['id'];
    $tpl->set('{comments_here}', '{comments_here:'.$row['id'].'}');
    $tpl->set('[comments_here]','');
    $tpl->set('[/comments_here]','');
    }else{
    $tpl->set('{comments_here}', '');
    $tpl->set_block ("'\\[comments_here\\](.*?)\\[/comments_here\\]'si", '');
    }

    найти

    $tpl->clear();
    $db->free( $sql_result );

    if( $do == "" ) $do = $subaction;
    if( $do == "" and $year ) $do = "date";
    $ban_short = array ();
    unset( $ban_short );

    вставить выше

    if(count($newsIDs) && $lang['tplCommCount']>0 && $lang['tplCommShortNews']!=''){
    if($lang['CommIncludeStandartTemplate']==1){
    $lang['tplCommShortNews'] = file_get_contents($tpl->dir . DIRECTORY_SEPARATOR . 'comments.tpl');
    }
    $queComms = $db->query("SELECT * FROM ".PREFIX."_comments LEFT JOIN ".PREFIX."_users ON ".PREFIX."_comments.user_id = ".PREFIX."_users.user_id WHERE post_id = ".join(' OR post_id = ',$newsIDs)." ORDER by ".PREFIX."_comments.id DESC");
    $lastComms = array();
    $cIDs = array();
    while($row2 = $db->get_row($queComms)){
    if($cIDs[$row2['post_id']]<$lang['tplCommCount']){
    $lastComms[$row2['post_id']][] = $row2;
    $cIDs[$row2['post_id']]++;
    }
    }
    function InsertLastComms($id){
    global $lastComms, $lang, $user_group, $config;
    if(!isset($lastComms[$id])) return '';
    $r = '';
    foreach($lastComms[$id] as $v){
    $r_ = preg_replace ( "#\\[aviable=lastcomments\\](.*?)\\[/aviable\\]#ies", '', $lang['tplCommShortNews'] );
    $r_ = preg_replace ( "#\\[not-group=5\\](.*?)\\[/not-group\\]#ies", '', $r_ );
    $r_ = preg_replace ( "#\\[fast\\](.*?)\\[/fast\\]#ies", '', $r_ );
    if($v['signature']=='') $r_ = preg_replace ( "#\\[signature\\](.*?)\\[/signature\\]#ies", '', $r_ );

    $r .= strtr($r_,array(
    '{post_id}' => $v['post_id'],
    '{author}' => $v['author'],
    '{email}' => $v['email'],
    '{author}' => $v['is_register']?'<a href="/user/'.urlencode($v['name']).'/">'.$v['name'].'</a>':$v['autor'],
    '{name}' => $v['name'],
    '{user_id}' => $v['user_id'],
    '{date2}' => $v['date'],
    '{date}' => date('d.m, H:i', strtotime($v['date'])),

    '{comment}' => $v['text'],
    '{news_title}' => '',
    '{mass-action}' => '',
    '{icq}' => $v['icq']?$v['icq']:'---',
    '{group-name}' => $user_group[$v['user_group']]['group_name'],
    '{news-num}' => $v['news_num'],
    '{comm-num}' => $v['comm_num'],
    '{registration}' => date('d.m.Y', $v['reg_date']),
    '{foto}' => $v['foto']?'uploads/fotos/'.$v['foto']:'/templates/'.$config['skin'].'/images/noavatar.png',
    '{signature}' => $v['signature']
    )).$lang['tplCommShorNewsExplorer'];
    }
    return $r;
    }
    $tpl->result['content'] = preg_replace ( "#{comments_here:(.*?)}#ies", "InsertLastComms('\\1')", $tpl->result['content'] );
    }

    2. В файле language/Russian/website.lng. Данную вставку желательно провести в каждый языковую папку.

    найти

    $lang = array (

    ниже вставить

    'tplCommShortNews' => 'Комментарий: {comment}, от <strong>{name}</strong> ({date})',
    'tplCommShorNewsExplorer' => '<br/>',
    'tplCommCount' => 3,
    'CommIncludeStandartTemplate' => 1,

    tplCommShortNews - строка-шаблон, если вдруг Вы решите не использовать стандартный шаблон comments.tpl.
    tplCommShorNewsExplorer - вставляется после каждого блока комментариев,
    tplCommCount - количество последних комментариев,
    CommIncludeStandartTemplate - 1 использовать стандартный шаблон comments.tpl, 0 не использовать стандартный шаблон.

    3. В файле шаблона shortstory.tpl

    В любое место вставить

    [comments_here]{comments_here}[/comments_here]

    Дело в том что этот хак выводит комментарии снизу вверх, подскажите как сделать чтобы они выводились не снизу вверх, а сверху вниз, т.е. стандартно ?

    Выкладываю собственно и txt файл с описанием установки, на всякий случай.

    Вложения:

  2. RooTM Administrator

    заменить это
    PHP:
    ORDER by ".PREFIX."_comments.id DESC
    на
    PHP:
    ORDER by ".PREFIX."_comments.date DESC
  3. Razormane New Member

    Всё осталось точно также как и раньше, т.е. они выводятся снизу вверх
  4. Razormane New Member

    Связался с разработчиком хака, он объяснил как сделать вывод наоборот(СВЕРХУ ВНИЗ):

    Найти:
    PHP:
    $queComms $db->query("SELECT * FROM ".PREFIX."_comments LEFT JOIN ".PREFIX."_users ON ".PREFIX."_comments.user_id = ".PREFIX."_users.user_id WHERE
    post_id = "
    .join(' OR post_id = ',$newsIDs)." ORDER by ".PREFIX."_comments.id DESC"); 
    Заменить на:
    PHP:
    $queComms $db->query("SELECT * FROM ".PREFIX."_comments LEFT JOIN ".PREFIX."_users ON ".PREFIX."_comments.user_id = ".PREFIX."_users.user_id WHERE
    post_id = "
    .join(' OR post_id = ',$newsIDs)." ORDER by ".PREFIX."_comments.id ASC"); 
    Автор хака: RedRat
    Источник:
  5. proFox New Member

    Razormane, до этого не трудно догадаться...

Поделиться этой страницей