2010-09-25 3 views
0

У меня есть модуль фильтра Drupal, выход которого я бы хотел изменить, в зависимости от того, где будет отображаться вывод. В частности, я хочу, чтобы фильтр дал полный вывод для узлов, но обрезал контент для блоков.Как изменить поведение входного фильтра Drupal на основе местоположения вывода

ответ

1

Я не думаю, что это было бы возможно. Достаточно сложно понять, в каком контексте что-то отображается. Это выполнимо, но довольно сложно сделать код самостоятельно. Однако, как работает система фильтров, я не думаю, что это возможно в фильтре для определения контекста отфильтрованного текста. Это просто не сделано для чего-то подобного.

0

Я ОП (но только что зарегистрировал учетную запись).

Мне удалось найти решение/обходной путь. Вот что я сделал:

  1. Создайте block.tpl.php в моем модуле, который является копией из system/block.tpl.php, с константой, добавленной вверху.
  2. Поместите свой файл шаблона во главе темы реестра с помощью hook_theme_registry_alter():
     
    function hook_theme_registry_alter(&$theme_registry) { 
    // using our own block.tpl.php file. 
    $theme_registry['block']['template'] = 'block'; 
    $theme_registry['block']['path'] = drupal_get_path('module', 'module_name'); 
    $theme_registry['block']['type'] = 'module'; 
    $theme_registry['block']['theme path'] = drupal_get_path('module', 'module_name'); 
    $theme_registry['block']['theme paths'] = Array(); 
    }
  3. Проверено на константу при построении выходного фильтра, изменяя по мере необходимости.
  4. Празднование результата.
+0

Собственно, это не работает. Кроме того, он уничтожил КАЖДЫЙ блок, а не только те, где мой фильтр выполнял свою работу ... – Jovean