2011-07-19 5 views
0

У меня проблема с Drupal 6 и hook_user(). Я создал модуль, который добавляет новые категории в пользовательский узел. Один из них - «адреса». У меня есть эта новая категория, и я могу получить доступ к ней через «Моя учетная запись». Теперь, когда вызывается «форма» op, я собираю все адреса, которые мне нужны. Но я не могу найти способ их темы. Прямо сейчас, у меня есть несколько полей, которые просто сбрасываются на страницу, а не красиво расположены в таблицах. Я знаю «user-profile.tpl.php», но я не могу это изменить, потому что могут быть и другие модули, которые тоже меняют.Drupal 6: тему категории в hook_user()

Есть ли у кого-нибудь идея, как достичь красивой тематической таблицы в категории пользователей?

С уважением Gewürzwiesel

ответ

0

Используйте Drupal 6 в hook_user 'вид' операция. Из документов: «просмотр»: отображаются данные учетной записи пользователя. Модуль должен отформатировать свои пользовательские дополнения для отображения и добавить их в массив $ account-> content.

+0

Просмотр здесь не является проблемой. Я хочу изменить свою форму. Таким образом, операция просмотра не вызывается. Я пропустил, сказав, что;) –

2
// hook_user 
function mymodule_user($op, &$edit, &$account, $category = NULL) { 
    switch ($op) { 
    case 'categories': 
    $output[] = array(
     'name' => 'new_category', 
     'title' => t('new_category'), 
    ); 
    case 'form': 
    if ($category == 'new_category') { 
     $form_state = array(); 
     $form = mymodule_new_category_form($form_state, $account); 
     return $form; 
    } 
    break; 
    } 
} 

function mymodule_new_category_form(&$form_state, $account) { 
    $form = array(); 

    $form['new_category'] = array(
    '#type' => 'fieldset', 
    '#title' => t('new_category'), 
    '#theme' => 'mymodule_new_category_form', 
); 
    $form['new_category']['text1'] = array(
    '#type' => 'textfield', 
    '#title' => t('text1'), 
); 
    $form['new_category']['text2'] = array(
    '#type' => 'textfield', 
    '#title' => t('text2'), 
); 
    $form['new_category']['text3'] = array(
    '#type' => 'textfield', 
    '#title' => t('text3'), 
); 

    return $form; 
} 

// hook_theme 
function mymodule_theme() { 
    return array(
    'mymodule_new_category_form' => array(
     'arguments' => array('form' => NULL), 
    ), 
); 
} 

function theme_mymodule_new_category_form($form) { 
    $rows = array(); 

    foreach (element_children($form) as $form_field_name) { 
    $description = $form[$form_field_name]['#description']; 
    $form[$form_field_name]['#description'] = ''; 

    $title = theme('form_element', $form[$form_field_name], ''); 
    $form[$form_field_name]['#description'] = $description; 
    $form[$form_field_name]['#title'] = ''; 
    $row = array(
     'data' => array(
     0 => array('data' => $title, 'class' => 'label_cell'), 
     1 => drupal_render($form[$form_field_name]) 
    ) 
    ); 
    $rows[] = $row; 
    } 

    $output = theme('table', array(), $rows); 
    $output .= drupal_render($form); 

    return $output; 
} 
Смежные вопросы