В общем, рылся я, рылся, весь Друпалдоторг перекопал, весь 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);?>
Теперь в блоке "Последние комментарии" выводитс не сабжект комментария, а сам комментарий, который обрезается до первых 80 символов, потом в них находится последний пробел и строка еще раз обрезается до позиции этого пробела.
Кто разбирается в строковых функциях пиэйчпи, тот поймет.
кошмар какой, счас научит проекты корежить....
функция theme_comment_block - копируете в template.php вашей темы, там меняете название на phptemplate_comment_block и правите, что душе угодно - и ничего при обновлении не пропадёт. Кто ж патчит ядро из-за такой ерунды.
Комментарии
Сформулируем по другому:
Тема комментария генерируется автоматицки, насколько я понял. Что подкрутить в файле comment.module, чтобы длина темы была эээ... длиннее?
.
?
да дурак я, сначала написал, потом прочитал вопрос, ответил не в тему
В общем, рылся я, рылся, весь Друпалдоторг перекопал, весь 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 внизу слева — блок "Что пишут?".
Может кому и пригодится сей рецепт
кошмар какой, счас научит проекты корежить....
функция theme_comment_block - копируете в template.php вашей темы, там меняете название на phptemplate_comment_block и правите, что душе угодно - и ничего при обновлении не пропадёт. Кто ж патчит ядро из-за такой ерунды.
О, спасибо. Просто я с Друплом всего пару недель как знаком, многое неведомо
Присоединяюсь - простое для знающих, но очень полезное для начинающих...
п.с. опечатка в изменении строки №263 - они одинаковы.
И ещё - правильно ли я понимаю, что при установки views такие "хаки" не пройдут из-за переоределения упоминаемых функциий?
хех, вот я дурачина-простофиля...
файл comment.module, строка 1661:
$form_values['subject'] = trim(truncate_utf8(decode_entities(strip_tags(check_markup($form_values['comment'], $form_values['format']))), 29, TRUE));
меняем 29 на что душе угодно.