以下に示すように、[ブロックされたユーザー]ページから[ユーザーをブロックする]フィールドセット、ユーザー名のテキストと入力フィールド、および[ユーザーをブロックする]ボタンを削除しようとしています。
私が変更しようとしているコードは、pm_block_userモジュールにあります。
/**
* Formbuilder function to build a simple form to block users.
*/
function pm_block_user_list() {
global $user;
$form['new'] = array(
'#type' => 'fieldset',
'#title' => t('Block a user'),
);
$form['new']['name'] = array(
'#type' => 'textfield',
'#title' => t('Username'),
'#autocomplete_path' => 'messages/user/autocomplete',
'#description' => t('Separate multiple names with commas.'),
'#required' => TRUE,
);
$form['new']['submit'] = array(
'#type' => 'submit',
'#value' => t('Block user'),
'#validate' => array('pm_block_user_block_validate'),
'#submit' => array('pm_block_user_block_submit'),
);
$header = array(
array(
'data' => t('Username'),
'field' => 'u.name',
'sort' => 'asc',
),
array(
'data' => t('Operations'),
),
);
$select = db_select('pm_block_user', 'pmb')->extend('PagerDefault')->extend('TableSort')
->fields('pmb', array('author'))
->condition('pmb.recipient', $user->uid)
->limit(20)
->orderByHeader($header);
// Only show existing users, therefore join users.
$select->innerJoin('users', 'u', 'u.uid = pmb.author');
$rows = array();
foreach ($select->execute() as $row) {
$rows[] = array(
theme('username', array('account' => user_load($row->author))),
l(t('unblock'), 'messages/block/' . $row->author, array('query' => drupal_get_destination())),
);
}
$form['#header'] = $header;
$form['#rows'] = $rows;
return $form;
}
これが私がtemplate.phpで試したコードです フォームから不要な要素を削除するためのこれらの手順 :
function MYMODULE_pm_block_user_list($form) {
unset($form['new']['#title']);
unset($form['new']['#type']);
return drupal_render($form);
}
ただし、このコードは、非表示にしようとしている「ユーザーのブロック」セクションではなく、「ユーザー名/トム/操作/ブロック解除」セクションを非表示にします。
次のコードは私のためにそれを行います:
_function MYMODULE_form_pm_block_user_list_alter(&$form, &$form_state, $form_id) {
unset($form['new']);
}
_
あなたがそれについて知らなかったならば、これは役立つはずです。
また、より一般的な hook_form_alter()
もあります。