Короткие заголовки у комментариев

Прислано: andrews

сб, 08/12/2007 - 15:18

Другие статьи по теме:

Очень часто на друпаловских сайтах вижу статьи к комментариями, заголовки у которых обрезаны очень неприлично. Например, если комментарий начинается с "Хочу поделиться опытом", то в заголовке остается только "Хочу". Конечно, если только автор оставляет заголовок пустым. Если он ввел заголовок - все нормально.

Сегодня у меня появилось желание и время разобраться с этим, и полез в код. Заголовок автоматически формируется друпалом с помощью функции truncate_utf8 из файла unicode.inc. Там выходная строка формируется методами, которые не приемлимы для юникодных строк. Решил переписать эту функцию и увековечить ее на страницах интернета. Вот что у меня получилось:

<?php
function truncate_utf8($string$len$wordsafe FALSE$dots FALSE) {

  
$string drupal_substr($string0$len - ($dots 0));

  if (
$wordsafe && ($last_space=mb_strrpos($string' ')))
    
$string drupal_substr($string0$last_space);

  if (
$dots)
    
$string .= ' ...';

  return 
$string;
}
?>

Если у кого-то появится желание потестировать, буду очень рад.

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано НовичОК в сб, 08/12/2007 - 20:57.

Спасибо огромное! Долгожданная вещь.
Подскажите для новичков - куда помещать ваш код (или вместо чего)?


Опубликовано Гость (гостевой логин) в вс, 09/12/2007 - 02:02.

Очень часто на друпаловских сайтах вижу статьи к комментариями, заголовки у которых обрезаны очень неприлично. Например, если комментарий начинается с "Хочу поделиться опытом", то в заголовке остается только "Хочу".

5 баллов! Сразу обращает внимание, что если бы это был комментарий то он был бы обрезан так: "Короткие". Только "Хочу" с многоточием по-моему неприличнее… :)

В смысле спасибо за код, пригодится конечно.


Опубликовано Гость (гостевой логин) в вс, 09/12/2007 - 02:04.

Помещать в template.php.


Опубликовано dracs в вс, 09/12/2007 - 08:20.

Только не забыть тогда в unicode.inc эту самую функцию отключить


Опубликовано НовичОК в пн, 10/12/2007 - 07:18.

вот это заморочка!
1. Это код нужно поместить в template.php.
2. Как отключить эту функцию в unicode.inc?


Опубликовано andrews в пн, 10/12/2007 - 10:04.

Не нужно ничего помещать в template.php!
Надо в файле include/unicode.inc удалить функцию truncate_utf8 и вместо нее вставить функцию truncate_utf8, приведенную выше.


Опубликовано НовичОК в пн, 10/12/2007 - 13:50.

Работает! Спасибо! А можно ли регулировать количество слов или букв?


Опубликовано andypost@drupal.org в пн, 10/12/2007 - 14:57.

А почему бы не написать молуль с одним хуком http://api.drupal.org/api/function/hook_comment/5
ну и одной функцией по настройке, судя по последним пожеланиям


Опубликовано НовичОК в пн, 10/12/2007 - 20:01.

Андрей. СПАСИБО ОГРОМНОЕ ЗА ВАШ КОД!!! ЭТО ТО, ЧТО НУЖНО БЫЛО МНЕ УЖЕ БОЛЬШЕ ГОДА. СПАСИБО!

:( модули писать совсем не умею.


Опубликовано andrews в вт, 11/12/2007 - 14:30.

Думаю, правильнее будет сообщить о баге "куда следует". Может, и исправят в основной ветке.


Опубликовано andrews в сб, 22/12/2007 - 19:56.

Хочется отметить, что код функции усовершенствовали и включили в Drupal-6.0 RC1.


Опубликовано Resistant в пн, 10/03/2008 - 00:31.

Drupal 5.7 ругается: Fatal error: Call to undefined function mb_strrpos() in /path_to_/unicode.inc

Почему бы это?


Новое на сайте