Всем привет!
Я думаю, что вам всем, а если не всем, то многим известна проблема: пользователи публикуют контент в том формате, в котором им (пользователям) хочется. Иной раз на выходе выглядит это презабавнейше: в рамках одной вьюхи или странички стили тизеров "пляшут" - нода жирным, нода италиком, нода с подчеркиванием, нода с "битым" куском видео (object) и т.д. Выглядит не очень, а все теги не запретишь. Что же делать?
Пишем функцию в template.php:
function ИМЯ ТЕМЫ_preprocess_node(&$vars, $hook) {
// Strip tags from teaser
if ($vars['teaser']) {
$coreteaser = $vars['node']->content['body']['#value'];
if ($coreteaser) {
$teaser = $vars['content'];
$start = strpos($teaser, $coreteaser);
$length = strlen($coreteaser);
$replacement = strip_tags($coreteaser);
$vars['content'] = substr_replace($teaser, $replacement, $start, $length);
}
}
}
Отлично. Поубивали все теги! Верните мне переносы строки и картинки, с3№;%!
Нет проблем, шеф!
Меняем:
$replacement = strip_tags($coreteaser);
на
$replacement = strip_tags($coreteaser, '
');
Нет, все равно фигня какая-то. Прикрепеленные темы и голосования побились!
И снова никаких проблем!
Дописываем:
if(($vars['sticky'])|| ($vars['node']->type == 'poll')) {
//do nothing, leave all tags
}
else {
и в самом конце, после $vars['content'] = substr_replace($teaser, $replacement, $start, $length);
}
}
еще одну }
В сборе получаем:
function ИМЯТЕМЫ_preprocess_node(&$vars, $hook) {
if(($vars['sticky'])|| ($vars['node']->type == 'poll')) {
//do nothing, leave all tags
}
else {
// Strip tags from teaser
if ($vars['teaser']) {
$coreteaser = $vars['node']->content['body']['#value'];
if ($coreteaser) {
$teaser = $vars['content'];
$start = strpos($teaser, $coreteaser);
$length = strlen($coreteaser);
$replacement = strip_tags($coreteaser, '
');
$vars['content'] = substr_replace($teaser, $replacement, $start, $length);
}
}
}}
Комментарии
парсер - лох.
в строчке $replacement = strip_tags($coreteaser, 'тэг1' 'тег2' 'тег3');
Зачем запрещать все теги, если можно разрешить лишь некоторые. Велосипед изобретаете. К тому же, если вы тизеры через вид выводите - это вопрос отмеченной галочки
Никакого велосипеда.
С галками-то понятно, тут вопросов нету. Вопрос - где взять грамотных юзеров и парсера-недибила?
Скажем так - я хочу чтобы на главной странице все тизеры выглядели одинаково.
И не хочу при этом пользоваться вьюсами.
И еще я хочу,чтобы тизеры и полные версии выглядели по-разному: в тизере на морде (автогенерируемом естессно) - только тексты без тегов, внутри, в полной версии - все,что душе угодно.
Разрешая хотя бы болд вы уже рискуете получить крайне неоднородные по виду тизеры.
Что такое "парсер-недибил" :)?