web-dev-qa-db-ja.com

ログインブロックマークアップを変更するにはどうすればよいですか?

「新しいアカウントを作成」/「パスワードをお忘れですか?」のソースの順序を変更したいリンクと[送信]ボタンをクリックすると、[送信]ボタンが最初になります。

screenshot

この機能を使用して、ログインブロックの特定の内容を変更できます。

function THEMENAME_form_user_login_block_alter(&$form, &$form_state){
  $item = array();
  if (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)) {
    $items[] = l(t('Create new account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'))));
  }
  $items[] = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('If you forgot your password, click to request a new password via e-mail.'))));
  $form['links']['#markup'] = theme('item_list', array('items' => $items));
}

そして、このテンプレートは変更をピックアップし、フォームの周りのマークアップ変更を可能にしますが、フォームを1つの変数に出力するだけです。 $ content変数を変更し、各要素を個別に出力して、アイテムの場所を交換するにはどうすればよいですか?

block--user--login.tpl.php

<div id="user-login-top">
  <?php print render($title_prefix); ?>
  <?php if ($block->subject): ?>
    <h2<?php print $title_attributes; ?>><?php print $block->subject ?></h2>
  <?php endif;?>
 <?php print render($title_suffix); ?>
</div>
<div id="user-login-block" class="block block-<?php print $block->module ?>">
  <div class="content"<?php print $content_attributes; ?>>
    <?php print $content ?>
  </div>
</div>
<div id="user-login-bottom" class="block-bottom"></div>

この例 はFirebugからストレートマークアップを使用し、機能しますが、すでにマークアップを含む変数を出力することでこれを行うよりクリーンな方法があり、「新しいアカウントの作成」は削除されません。 "サイト登録が制限されている場合のオプション。

5
krisbulman

次のようにリンクの重みを変更できます。

$form['links']['#weight'] = 10000;

今それは送信ボタンの後にあるはずです:)

8
Marius Ilie