Как правильно вмешаться из одного модуля в вывод темизированной функции другого?

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 17 августа 2010 в 22:34

Пример

В template.php есть такая темизированная функция:

<?php

function THEME_my_module_form($form) {
      
$output .= '<div>';
      
$output .=  drupal_render($form['panes']['customer']);
      
$output .=  drupal_render($form['panes']['cart']);
      
$output .= '</div>';
      return 
$output;
}

?>

Задача: по условию, определяемого в ДРУГОМ модуле показывать/скрывать скажем переменную  $form['panes']['customer'] , т.е тупо делать

<?php

unset($form['panes']['customer']);

?>

Покажите в каком направлении копать Smile

Комментарии

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 18 августа 2010 в 13:40

"xxandeadxx" wrote:
что за условие?

Условие такое: скрывать поле ввода баллов для получения скидки (модуль uc_userpoints) на странице cart/checkout если, скажем, на предыдущей странице /cart пользователь ввёл код купона (предоставляется другим модулем) - чтобы не было двойного дискаунта

Или элегантнее писать правило для Conditional Actions?

PS Иногда кажется, что разобраться до конца в этих хуках да и структуре Друпала просто нереально

Аватар пользователя xxandeadxx xxandeadxx 18 августа 2010 в 16:25

добавляй свой submit callback на форму для ввода кода купона. там устанавливай флаг в сессию. в блоке проверяй флаг, если есть - удаляй unset($form['panes']['customer']) и удаляй флаг.