Усечение темы комментов в блоке "Последние комментарии"

Главные вкладки

Аватар пользователя Azs Azs 20 августа 2007 в 13:16

В каком файле и что подкрутить, чтобы в блоке "Последние комментарии" строка "Тема" отсекалось подлиннее?

Комментарии

Аватар пользователя Azs Azs 20 августа 2007 в 15:53

Сформулируем по другому:

Тема комментария генерируется автоматицки, насколько я понял. Что подкрутить в файле comment.module, чтобы длина темы была эээ... длиннее?

Аватар пользователя Azs Azs 21 августа 2007 в 0:38

В общем, рылся я, рылся, весь Друпалдоторг перекопал, весь comment.module перелопатил, день почти убил, и нихрена не нашел. Каким механизмом модуль формирует, и, что самое интересное, по какому принципу обрезает, строку Subject комментария — не найти.

И сделал я так:

В файле comment.module строка №263 была такая:

<?php $result = db_query_range('SELECT c.nid, c.subject, c.cid, c.timestamp FROM {comments} c INNER JOIN {node} n ON n.nid = c.nid WHERE c.nid IN ('. implode(',', $nids) .') AND n.status = 1 AND c.status = %d ORDER BY c.timestamp DESC', COMMENT_PUBLISHED, 0, $number); ?>

Стала такая:

<?php $result = db_query_range('SELECT c.nid, c.comment, c.cid, c.timestamp FROM {comments} c INNER JOIN {node} n ON n.nid = c.nid WHERE c.nid IN ('. implode(',', $nids) .') AND n.status = 1 AND c.status = %d ORDER BY c.timestamp DESC', COMMENT_PUBLISHED, 0, $number);?>

Строка №281 была такая:

<?php $items[] = l($comment->subject, 'node/'. $comment->nid, NULL, NULL, 'comment-'. $comment->cid) .'
'. t('time ago', array('time' => format_interval(time() - $comment->timestamp)));?>

Стала такая:

<?php $items[] = l(substr($comment->comment, 0, strrpos((substr($comment->comment, 0, 160)), " ")) . ' ...', 'node/'. $comment->nid, NULL, NULL, 'comment-'. $comment->cid) .'
'. t('time ago', array('time' => format_interval(time() - $comment->timestamp)));?>

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

Кто разбирается в строковых функциях пиэйчпи, тот поймет.

Результат на http://benzinych.ru внизу слева — блок "Что пишут?".

Может кому и пригодится сей рецепт Smile

Аватар пользователя jason32 jason32 21 августа 2007 в 11:02

кошмар какой, счас научит проекты корежить....
функция theme_comment_block - копируете в template.php вашей темы, там меняете название на phptemplate_comment_block и правите, что душе угодно - и ничего при обновлении не пропадёт. Кто ж патчит ядро из-за такой ерунды.

Аватар пользователя apple_rom apple_rom 24 августа 2007 в 13:11

Присоединяюсь - простое для знающих, но очень полезное для начинающих...
п.с. опечатка в изменении строки №263 - они одинаковы.

Аватар пользователя apple_rom apple_rom 24 августа 2007 в 14:19

И ещё - правильно ли я понимаю, что при установки views такие "хаки" не пройдут из-за переоределения упоминаемых функциий?

Аватар пользователя Azs Azs 2 декабря 2007 в 14:01

хех, вот я дурачина-простофиля...

файл comment.module, строка 1661:

$form_values['subject'] = trim(truncate_utf8(decode_entities(strip_tags(check_markup($form_values['comment'], $form_values['format']))), 29, TRUE));

меняем 29 на что душе угодно.