Допустим есть Filtered HTML, в нём расстановка сил такая
HTML filter (Escape all tags) Вес 10
URL filter Вес 0
My URL filter Вес -10
На выходе получаем правильную ситуацию (Первый скрин)
Теперь переопределяем действие фильтров
HTML filter (Escape all tags) Вес -10
Вес 0
My URL filter Вес 10
Здесь видно, что URL filter отработал, а мой фильтр остался не удел. Так вот если в HTML filter разрешить тег a то отрабатывать будет и мой фильтр, но по логике вещей должен отрабатывать и без тега, в порядке очереди. Где может быть проблема?
Вложение | Размер |
---|---|
screenshot1.PNG | 44.57 КБ |
screenshot2.PNG | 18.51 КБ |
Комментарии
Прошу не обращать на
<a href="FUCK YOU">
в теле ноды, для наглядности написал. Фильтр преобразует допустим при нахождении в тексте форум в<a href="forum.ru">Наш любимый форум</a>
<?php
function myfilter_filter($op, $delta = 0, $format = -1, $text = '') {
switch ($op) {
case 'list':
return array(0 => t('Convert my word to my link'));
case 'description':
return t('Convert my word to my link');
case 'prepare':
$text = str_replace('Форум','<a href="НАШ ФОРУМ">jhsdkfj</a>',$text);
return $text;
case 'process':
$text = str_replace('Форум','<a href="НАШ ФОРУМ">jhsdkfj</a>',$text);
return $text;
default:
return $text;
}
}
?>
Вот код самого фильтра
Мля... Прошу прощения, перечитал api по фильтру и понял в чем моя ошибка.
Фильтры не должны использовать шаг 'prepare' для чего либо ещё, кроме экранирования символов, иначе это может "закоротить" контроль пользователя над порядком, в котором применяются фильтры.
Убрал обработку фильтра в этом шаге, все заработало.