Длинные комментарии

Здравствуйте!
У меня такой вопрос: как исключить возможность вывода длинных комментариев (верней, длинных слов), чтобы не получилось что-то вроде этого – http://noiq22.w6.ru/?p=3#comment-3
Причём данный глюк будет даже есть поменять тему на стандартную! Понимаю, что мало кому в голову придёт писать такое… но всё же…
Средствами HTML и CSS, как я уже понял, нельзя… А в php я плохо разбираюсь. Есть плагин, который фильтрует комментарий на наличие ненормативной лексики – WP-Noshit, может, изменив его как-то, можно, к примеру, заменить длинные слова на что-то другое? Или, может быть, есть какие-то другие способы решения проблемы?

css

примерно так:

#commentlist li {overflow: auto; width: 150px}

overflow: auto — с гориз. прокруткой, overflow: hidden — просто визуально «обрежется» длинное слово

php

примерно так:

function huge_comstr($s) {
$maximal_word_lenght = 25;
$r = ”;
$ignore_symbols = array("<",">","[","]");
$t = str_replace($ignore_symbols, " ", $s);
foreach(explode(" ", $t) as $p) {
if(strlen($p) > $maximal_word_lenght) {
$sl = strlen($p);
$s = str_replace($p, ‘<q title="’.$p.’">’.substr($p,0,$maximal_word_lenght-4).'[..]’.substr($p,$sl-2,$sl).'</q>’, $s);
// $r .= ‘<q title="’.$p.’">’.substr($p,0,$maximal_word_lenght-4).'[..]’.substr($p,$sl-2,$sl).'</q>’;
}
}
return trim($s);
}
add_filter("comment_text", "huge_comstr");

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

Ух ты!!! Спасибо, sonika, спасибо, CMEPTHuk.

и как этим воспользоватся ? можно поточнее куда воткнуть и тд ? мне нужно чтобы Свежие комментарии и Свежие записи укарачивала до 20-25 символов

Ну про php не скажу, я плохо понимаю.
А css – это в файлике "style.css" активной темы нужно дописать.

про php – вставь в functions.php твоей темы. всё сработает автоматом. но у этого варианта (писал за 15 минут) есть бага, как исправить – думай сам:)

как исправить - думай сам:)

Ты не CMEPTHuk, ты – САДИСТ. 😆

Ты не CMEPTHuk, ты - САДИСТ. :lol:

ыыы. ничуть. хочешь – делай, не хочешь – не делай (непомнюкто)
а как тут ник поменять?…:)

мда херня какаето получается с этим вордпресом… выводит такие длинные строки и не как неурезать… Хоть убирай нафиг Свежие записи и всё.

выводит такие длинные строки и не как неурезать

Глупости говорить изволите, уважаемый. Всё прекрасно можно урезать. Было бы желание.

Мда. знал бы я нормально php я бы и не спрашивал. а когда спрашуеш как а тебе дают код и непонятно куда и как его вставлять….

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

и тишина …. ну вобще чтоли плагинов никаких нету по выводу послежних статейи коментариев с ограничением знаков ?

попробуйтепочитатьветкусначалатамдажекоддавали

я php не так хорошо знаю… как я его воткну незная нормально пхп ?

и тишина =(

Прошу спецов по php помочь с кодом. Хочу укоротить комментарии, которые выводяться в сайдбаре.
Функцию отвечающую за вывод самого коммента нашёл:

 
function wp_widget_recent_comments($args) {
    global $wpdb, $comments, $comment;
    extract($args, EXTR_SKIP);
    $options = get_option('widget_recent_comments');
    $title = empty($options['title']) ? __('Recent Comments') : $options['title'];
    if ( !$number = (int) $options['number'] )
        $number = 5;
    else if ( $number < 1 )
        $number = 1;
    else if ( $number > 15 )
        $number = 15;

    if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
        $comments = $wpdb->get_results("SELECT  comment_content, comment_author, comment_author_url, comment_ID, comment_post_ID FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT $number");
        wp_cache_add( 'recent_comments', $comments, 'widget' );
    }
?>

        <?php echo $before_widget; ?>
            <?php echo '<span class="widget-header">' . $title . '</span>'; ?>
            <ul id="recentcomments"><?php
            if ( $comments ) : foreach ($comments as $comment) :
            echo  '<li class="recentcomments"><a href="'. get_permalink($comment->comment_post_ID) . '#comment-' . $comment->comment_ID . '">' . sprintf(__('%1$s <br /> %2$s'), get_comment_text(), '</a><h1>' . get_the_title($comment->comment_post_ID) . '</h1>') . '</li>';
            endforeach; endif;?></ul>
        <?php echo $after_widget; ?>
<?php
}

Функцию по обрезке возьму отсюда http://maxsite.org/korrektnoe-urezanie-strok-po-slovam-v-php из последнего комментария (спасибо Zmei)

function getPrewText( $text, $maxwords = 30, $maxchar = 300 )
{
$sep = ' '
$words = split( $sep, $text );
$char = iconv_strlen( $text, 'utf-8' );

if ( count( $words ) > $maxwords )
{
$text = join($sep, array_slice($words, 0, $maxwords));
}

if ( $char > $maxchar )
{
$text = iconv_substr( $text, 0, $maxchar, 'utf-8' );
}

return $text;

}

А что дальше делать? Как это смешать одно с другим?:rolleyes:

Anonymous
Отправить
Ответ на: