1

Тема: Последние комментарии

Подскажите пожалуйста, есть ли в WP 2.5.1 функция, которая выводит последние комментарии, или все-таки надо использовать плагин?

P.S. Recent Comments на WP 2.5.1 не взлетел sad

Спасибо за ответы.

2

Re: Последние комментарии

в functions.php:

if(!function_exists('mdv_recent_comments')) {
function mdv_recent_comments($no_comments = 10, $comment_lenth = 5, $before = '<li>', $after = '</li>', $show_pass_post = false, $comment_style = 0) {
    global $wpdb;
    $request = "SELECT ID, comment_ID, comment_content, comment_author, comment_author_url, post_title FROM $wpdb->comments LEFT JOIN $wpdb->posts ON $wpdb->posts.ID=$wpdb->comments.comment_post_ID WHERE post_status IN ('publish','static') ";
  if(!$show_pass_post) $request .= "AND post_password ='' ";
  $request .= "AND comment_approved = '1' ORDER BY comment_ID DESC LIMIT $no_comments";
  $comments = $wpdb->get_results($request);
    $output = '';
  if ($comments) {
    foreach ($comments as $comment) {
      $comment_author = stripslashes($comment->comment_author);
      if ($comment_author == "")
        $comment_author = "anonymous"; 
      $comment_content = strip_tags($comment->comment_content);
      $comment_content = stripslashes($comment_content);
      $words=split(" ",$comment_content); 
      $comment_excerpt = join(" ",array_slice($words,0,$comment_lenth));
      $permalink = get_permalink($comment->ID)."#comment-".$comment->comment_ID;

      if ($comment_style == 1) {
        $post_title = stripslashes($comment->post_title);
        
        $url = $comment->comment_author_url;

        if (empty($url))
          $output .= $before . $comment_author . ' on ' . $post_title . '.' . $after;
        else
          $output .= $before . "<a href='$url' rel='external'>$comment_author</a>" . ' на ' . $post_title . '.' . $after;
      }
      else {
        $output .= $before . '' . $comment_author . ':  <a href="' . $permalink;
        $output .= '" title="Просмотреть комментарий ' . $comment_author.'">' . $comment_excerpt.'</a>' . $after;
      }
    }
    $output = convert_smilies($output);
  } else {
    $output .= $before . "Ничего нет" . $after;
  }
    echo $output;
}
}

в шаблон:

<?php if (function_exists('mdv_recent_comments')) { ?>
 <ul>
 <?php mdv_recent_comments(); ?>
 </ul>
<?php } ?>

3

Re: Последние комментарии

Смертник! Большое тебе спасибо!

4

Re: Последние комментарии

Чем это отличается от плагина? smile

Едет вебмастер в поезде и слышит: <td></td> … <td></td> … <td></td>
шаблоны Темы

5

Re: Последние комментарии

sonika пишет:

Чем это отличается от плагина? smile

Практически ничем! big_smile

6

Re: Последние комментарии

Обновления свои не будет искать всякий раз, когда надо найти последние комментарии. big_smile (это камушек в огород 2.6RC1)

[signature]Есть ли смысл просить инструкцию по регулировке карбюратора, если не знаешь, в каком из багажников находится двигатель?[/signature]

7 (11-11-2010 07:22:39 отредактировано hsif)

Re: Последние комментарии

помогите пожалуйста разобраться с комментариями, как будет свободное время.
http://pics.kz/s1/52/d4/82/52d48297ef54936aa3fa0a33d2cac115_preview.jpg
Хочу перенести их (как показано на скрине) под сроку поиска, но проблема в том, что в файле sidebar.php виджет "поиск" входит в блок основных виджетов (primary-widget-area), вот хотелось бы туда вклиниться, только как это сделать незнаю, пробовал методом тыка, не получилось.

Код "Последние комменты" шире размера остальных виджетов, подскажите как лучше их отрегулировать, я думаю нужно поместить код в какой-то class, и уже ч/з Style.css регулировать ширину.

Какие 2 параметра нужно задать в Style.css что-бы преобразить имя комментатора и гиперссылки комментария только в сайдбаре (цвет шрифтов, цвет гиперссылок)

Вот если бы еще сделать так чтобы над каждым комментарием отображалось название статьи, то воще круто было-бы

if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ?>
    
            <li id="search" class="widget-container widget_search">
                <?php get_search_form(); ?>
            </li>

            <li id="archives" class="widget-container">
                <h3 class="widget-title"><?php _e( 'Archives', 'twentyten' ); ?></h3>
                <ul>
                    <?php wp_get_archives( 'type=monthly' ); ?>
                </ul>
            </li>

            <li id="meta" class="widget-container">
                <h3 class="widget-title"><?php _e( 'Meta', 'twentyten' ); ?></h3>
                <ul>
                    <?php wp_register(); ?>
                    <li><?php wp_loginout(); ?></li>
                    <?php wp_meta(); ?>
                </ul>
            </li>

        <?php endif; // end primary widget area ?>
            </ul>
        </div><!-- #primary .widget-area -->

<?php if (function_exists('mdv_recent_comments')) { ?>
 <ul>
 <?php mdv_recent_comments(); ?>
 </ul>
<?php } ?>

<?php
    // A second sidebar for widgets, just because.
    if ( is_active_sidebar( 'secondary-widget-area' ) ) : ?>

        <div id="secondary" class="widget-area" role="complementary">
            <ul class="xoxo">
                <?php dynamic_sidebar( 'secondary-widget-area' ); ?>
            </ul>
        </div><!-- #secondary .widget-area -->

<?php endif; ?>

если пытаюсь код вывода вставлять после поиска, то комментарии вообще  не отображаются, подскажите как должен выглядеть код вывода коментариев, чтобы его вставить ч/з панель вордпресс виджеты?

Re: Последние комментарии

hsif пишет:

помогите, пожалуйста, разобраться с комментариями, как будет свободное время.?

Не вижу никаких особых проблем с последними комментариями. Поддержка функции "Последние" входит в дистрибутив движка, поэтому, на мой взгляд, в особых доработках не нуждается.

hsif пишет:

Хочу перенести их (как показано на скрине) под сроку поиска, но проблема в том, что в файле sidebar.php виджет "поиск" входит в блок основных виджетов (primary-widget-area), вот хотелось бы туда вклиниться, только как это сделать незнаю, пробовал методом тыка, не получилось.

В чем проблемы? Входите в административную панель, открываете "Меню" - "Внешний вид" - "Виджеты" и перетаскиваете нужные вам виджеты в колонку, расставляя их в том порядке, какой вам нравится .... для работы с виджетами нет необходимости лезть в файл sidebar,php и "вклиниваться" куда-то ...


hsif пишет:

Код "Последние комменты" шире размера остальных виджетов, подскажите как лучше их отрегулировать, я думаю нужно поместить код в какой-то class, и уже ч/з Style.css регулировать ширину.

Ширина "Последних комментариев" не может быть шире колонки, так как "Последние комментарии" размещаются именно в колонках ... соответственно, нет необходимости регулировать их через файл стилей ....

hsif пишет:

Какие 2 параметра нужно задать в Style.css что-бы преобразить имя комментатора и гиперссылки комментария только в сайдбаре (цвет шрифтов, цвет гиперссылок)

Вот если бы еще сделать так чтобы над каждым комментарием отображалось название статьи, то воще круто было-бы

Один вопрос - зачем? В функции "Последние Комментарии" все это прописано изначально, включая имя комментатора и гиперссылку на название статьи ...

hsif пишет:

если пытаюсь код вывода вставлять после поиска, то комментарии вообще  не отображаются, подскажите как должен выглядеть код вывода коментариев, чтобы его вставить ч/з панель вордпресс виджеты?

Зачем это пытаться делать, если вы уже пользуетесь виджетами? И через панель виджетов не вставляется код вывода "Последних комментариев", а вставляется уже полностью готовый к работе виджет "Последние Комментарии" ... посмотрите внимательно ... и вы увидите среди виджетов прямоугольничек с надписью "Последние комментарии", возьмите его и перетяните мышкой на поле колонки, разместив его чуть ниже виджета "Поиск" .... Вот, и всё ...

На мой взгляд, вы слишком зачем-то усложнили себе жизнь, решив отказаться от пользования виджетами  ... Вернее, вы о существовании виджетов подозреваете, ибо пишите о них здесь, но почему-то при работе над своим сайтов пытаетесь решать все проблемы не перетаскиванием виджетов, а правкой кода ... и судя по всему, у вас это не получается ...

Я, честно говоря, не понимаю, почему бы вам не решать все свои вопросы исключительно через виджеты? Все последние версии движка и все современные шаблоны тем поддерживают виджеты, что позволяет работать над сайтом, избегая постоянного залезания в файлы шаблона с целью их правки ...

9 (11-11-2010 08:35:00 отредактировано hsif)

Re: Последние комментарии

Калиостро, проблема в том, что стандартный виджет WP 3.0 выводит эти самые последние комментарии в следующей форме:
"НИК" к статье "Название статьи"

Код приведенный выше позволяет сделать так:
НИК: "часть текста комментария"

В идеале я хотел сделать так:
"Название статьи"
НИК: "часть текста комментария"

поэтому и мудрю

> Один вопрос - зачем?
Чтобы в файле css задать цвет Имени (Ник), убрать подчеркивание самого текста коммента, чтобы остальные гиперссылки не пострадали. Т.е. хоть как-то выделиться из шаблонного стандарта.

Re: Последние комментарии

hsif пишет:

Калиостро, проблема в том, что стандартный виджет WP 3.0 выводит эти самые последние комментарии в следующей форме:
"НИК" к статье "Название статьи"

Код приведенный выше позволяет сделать так:
НИК: "часть текста комментария"

В идеале я хотел сделать так:
"Название статьи"
НИК: "часть текста комментария"

поэтому и мудрю

Чтобы что-то изменить в форме выводимых комментариев, вы должны найти в папках с дистрибутивом движка файл wp-includes/default-widgets.php и внести в него нужные нам исправления … конкретно, в строчки 597-690 . Только учтите, что при внесении подобных изменений вам придется в дальнейшем отказаться от обновления движка, который обновляется регулярно, так как при любом обновлении движка все, внесенные вами сейчас в виджет, изменения пропадут ... или же потом будет нужно вносить эти изменения в виджет "Последние Комментарии" после каждого обновления движка.

hsif пишет:

Чтобы в файле css задать цвет Имени (Ник), убрать подчеркивание самого текста коммента, чтобы остальные гиперссылки не пострадали. Т.е. хоть как-то выделиться из шаблонного стандарта.

Не получится это сделать только через шаблонный файл .css, так как в нем задается стиль в целом для всей колонки, то есть для всех виджетов колонки сразу, а придется снова править код виджета в движке Да и не нужно все это, на мой взгляд, так как в шаблоне должно быть все-таки какое-то цветовое однообразие ... а так радуга получится, а не шаблон - тут один цвет, там другой .... hmm

11

Re: Последние комментарии

Посмотрел я этот пи-аш-пи (597-690) это жо.. , попробую всетаки с кодом поиграться, укзазанным CMEPTHukом, или хотябы заключить его в теги и попробовать выровнять ширину

12

Re: Последние комментарии

Использовал всетаки код указанный в посте №2
Люди вроде разобрался более менее, подскажите как увеличить длинну отображаемго на главной коммента (что подправить в этом коде для functions.php) ?

Re: Последние комментарии

hsif пишет:

Использовал всетаки код указанный в посте №2
Люди вроде разобрался более менее, подскажите как увеличить длинну отображаемго на главной коммента (что подправить в этом коде для functions.php) ?

По этому конкретному коду я не знаю. Есть смысл спросить у автора.

А в старом плагине "Последние Комментарии", который использовался до того, как эта функция стала по умолчанию включаться в движок, в коде была строчка:

function cypher_latestcomments($before='', $after='<br><br>', $max_comments=10, $max_chars = 25) {

где первая цифра задавала число выводимых комментариев, а вторая цифра задавала их длину.

14 (12-11-2010 14:45:22 отредактировано CMEPTHuk)

Re: Последние комментарии

Длину отображаемого коммента, говорите? А разве она режется? Очень беглым просмотром ничего антипартийного не заметил :)
Попробуйте поиграть с параметрами "$no_comments = 10, $comment_lenth = 5", вызывайте функцию с нужными вами (если я правильно понял, то автор хотел изменить количество выводимых комментариев)

пс. как же давно тут не был. пароль с трудом восстановил, ух! :)

15 (15-11-2010 08:45:18 отредактировано hsif)

Re: Последние комментарии

CMEPTHuk, с количеством выводимых комментариев проблем нет, сам коммент отображающийся на главной хотел сделать подлиньше, т.к. он отсекается, оставляя начало (но в случае слишком огромного желательно чтоб выводился не полностью, т.е. отрегулировать количество символов)
http://pics.kz/s5/64/2d/85/642d859cf753a73265d1f6dfb52dc642.jpg

Подскажите, если время будет, еще хотел выше заголовок статьи добавить, не знаю какой код добавить.
Спасибо.

16 (15-11-2010 10:17:46 отредактировано CMEPTHuk)

Re: Последние комментарии

так, смотри и следи за мыслью вместе со мной:

function mdv_recent_comments($no_comments = 10, $comment_lenth = 5,
...
$comment_excerpt = join(" ",array_slice($words,0,$comment_lenth));
...
$output .= '" title="Просмотреть комментарий ' . $comment_author.'">' . $comment_excerpt.'</a>' . $after;

функция работает совершенно верно - возвращает ПЯТЬ последних слов разделенных ПРОБЕЛОМ. вызови функцию с параметром, например, 10; или вообще установи дефолтное значение прямо в функции равное, опять-же, десяти (измени на "function mdv_recent_comments($no_comments = 10, $comment_lenth = 10, ...")

17

Re: Последние комментарии

CMEPTHuk, smile)) смотрю в код вижу фигу, спасибо, как это я сам не допер )))

18

Re: Последние комментарии

CMEPTHuk пишет:

в functions.php:

if(!function_exists('mdv_recent_comments')) {
function mdv_recent_comments($no_comments = 10, $comment_lenth = 5, $before = '<li>', $after = '</li>', $show_pass_post = false, $comment_style = 0) {
    global $wpdb;
    $request = "SELECT ID, comment_ID, comment_content, comment_author, comment_author_url, post_title FROM $wpdb->comments LEFT JOIN $wpdb->posts ON $wpdb->posts.ID=$wpdb->comments.comment_post_ID WHERE post_status IN ('publish','static') ";
  if(!$show_pass_post) $request .= "AND post_password ='' ";
  $request .= "AND comment_approved = '1' ORDER BY comment_ID DESC LIMIT $no_comments";
  $comments = $wpdb->get_results($request);
    $output = '';
  if ($comments) {
    foreach ($comments as $comment) {
      $comment_author = stripslashes($comment->comment_author);
      if ($comment_author == "")
        $comment_author = "anonymous"; 
      $comment_content = strip_tags($comment->comment_content);
      $comment_content = stripslashes($comment_content);
      $words=split(" ",$comment_content); 
      $comment_excerpt = join(" ",array_slice($words,0,$comment_lenth));
      $permalink = get_permalink($comment->ID)."#comment-".$comment->comment_ID;

      if ($comment_style == 1) {
        $post_title = stripslashes($comment->post_title);
        
        $url = $comment->comment_author_url;

        if (empty($url))
          $output .= $before . $comment_author . ' on ' . $post_title . '.' . $after;
        else
          $output .= $before . "<a href='$url' rel='external'>$comment_author</a>" . ' на ' . $post_title . '.' . $after;
      }
      else {
        $output .= $before . '' . $comment_author . ':  <a href="' . $permalink;
        $output .= '" title="Просмотреть комментарий ' . $comment_author.'">' . $comment_excerpt.'</a>' . $after;
      }
    }
    $output = convert_smilies($output);
  } else {
    $output .= $before . "Ничего нет" . $after;
  }
    echo $output;
}
}

в шаблон:

<?php if (function_exists('mdv_recent_comments')) { ?>
 <ul>
 <?php mdv_recent_comments(); ?>
 </ul>
<?php } ?>

А Вы не подскажите плиз, как сделать так, чтобы комментарии выводились только определенной статьи? Вывожу комментарии таким вот образом, нужное мне количество:

<?php if (function_exists('mdv_recent_comments')) {mdv_recent_comments(7);} ?>

А вот как туда влепить АЙДИ нужной статьи не знаю, не подскажите?

Заранее спасибо!)