Drupal 6: тема категории в hook_user () - PullRequest
0 голосов
/ 19 июля 2011

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

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

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

Ответы [ 2 ]

2 голосов
/ 25 октября 2012
// 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;
}
0 голосов
/ 19 июля 2011

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

...