Может кто-нибудь указать мне ссылку на массив содержимого Drupal $ account->? - PullRequest
0 голосов
/ 30 ноября 2010

Я копался все утро и не могу найти ни одной ссылки, которая определяет объект учетной записи.

В частности, я хочу изменить пользовательскую функцию hook () другого администратора drupal, чтобы изменить способ ее работы. В настоящее время он представляет собой пары dt / dd без каких-либо классов CSS или пользовательских стилей, и мне нужно иметь возможность разбивать содержимое на темы.

  function acidfree_user($op, &$edit, &$account, $category = NULL) {
    if ($op == 'view') {
    //Pachkov.Sergey.START - MODIFIED BY MHEINZ
      $result = db_query("SELECT nid, title FROM node WHERE nid IN (SELECT nid FROM node WHERE uid=%d 
                         AND type='acidfree') ORDER BY nid desc", $account->uid);

      $i=0;
      $account->content['acidfree-albums'] = array(
        '#type' => 'user_profile_category',
        '#title' => t('Photo albums'),
      );
      while ($item = db_fetch_array($result)) {
        $title_node = $item['title'];
        $nid = $item['nid'];
        $account->content['acidfree-albums'][$i] = array(
                '#title' => t(' '),
                '#value' => l($title_node, "node/{$nid}"),
                '#class' => 'acidfree-albums',
                '#type' => 'user_profile_item',
        );
        $i++;
      }
    }
    //Pachkov.Sergey.END - MODIFIED BY MHEINZ
  }

Ответы [ 2 ]

2 голосов
/ 30 ноября 2010

dt / dd, используемый для отображения массива $account->content, который вы видите в hook_user, взят из шаблона user-profile-item.tpl.php. Используя template_preprocess_user_profile_item в своих модулях или темах, вы можете добавить атрибуты для этих dt / dd.

Если вам нужно изменить один из элементов в массиве $account->content, вы должны использовать hook_profile_alter:

function MODULE_profile_alter(&$account) {
  $account->content['acidfree-albums']['#title'] = t('Awesome photos!');
}
1 голос
/ 30 ноября 2010

Лучшая справка, которую вы можете получить, это

print_r($account->content);

, и для просмотра трассы вашего текущего местоположения (чтобы увидеть, где находится объект) вы можете использовать

debug_print_backtrace();
...