Очень часто на друпаловских сайтах вижу статьи к комментариями, заголовки у которых обрезаны очень неприлично. Например, если комментарий начинается с "Хочу поделиться опытом", то в заголовке остается только "Хочу". Конечно, если только автор оставляет заголовок пустым. Если он ввел заголовок - все нормально.
Сегодня у меня появилось желание и время разобраться с этим, и полез в код. Заголовок автоматически формируется друпалом с помощью функции truncate_utf8 из файла unicode.inc. Там выходная строка формируется методами, которые не приемлимы для юникодных строк. Решил переписать эту функцию и увековечить ее на страницах интернета. Вот что у меня получилось:
<?php
function truncate_utf8($string, $len, $wordsafe = FALSE, $dots = FALSE) {
$string = drupal_substr($string, 0, $len - ($dots ? 4 : 0));
if ($wordsafe && ($last_space=mb_strrpos($string, ' ')))
$string = drupal_substr($string, 0, $last_space);
if ($dots)
$string .= ' ...';
return $string;
}
?>
Если у кого-то появится желание потестировать, буду очень рад.
Комментарии
Спасибо огромное! Долгожданная вещь.
Подскажите для новичков - куда помещать ваш код (или вместо чего)?
Очень часто на друпаловских сайтах вижу статьи к комментариями, заголовки у которых обрезаны очень неприлично. Например, если комментарий начинается с "Хочу поделиться опытом", то в заголовке остается только "Хочу".
5 баллов! Сразу обращает внимание, что если бы это был комментарий то он был бы обрезан так: "Короткие". Только "Хочу" с многоточием по-моему неприличнее…
В смысле спасибо за код, пригодится конечно.
Помещать в template.php.
Только не забыть тогда в unicode.inc эту самую функцию отключить
вот это заморочка!
1. Это код нужно поместить в template.php.
2. Как отключить эту функцию в unicode.inc?
Не нужно ничего помещать в template.php!
Надо в файле include/unicode.inc удалить функцию truncate_utf8 и вместо нее вставить функцию truncate_utf8, приведенную выше.
Работает! Спасибо! А можно ли регулировать количество слов или букв?
А почему бы не написать молуль с одним хуком http://api.drupal.org/api/function/hook_comment/5
ну и одной функцией по настройке, судя по последним пожеланиям
Думаю, правильнее будет сообщить о баге "куда следует". Может, и исправят в основной ветке.
Андрей. СПАСИБО ОГРОМНОЕ ЗА ВАШ КОД!!! ЭТО ТО, ЧТО НУЖНО БЫЛО МНЕ УЖЕ БОЛЬШЕ ГОДА. СПАСИБО!
модули писать совсем не умею.
Хочется отметить, что код функции усовершенствовали и включили в Drupal-6.0 RC1.
Drupal 5.7 ругается: Fatal error: Call to undefined function mb_strrpos() in /path_to_/unicode.inc
Почему бы это?