it-swarm-id.com

Mereka formulir pendaftaran pengguna

Saya ingin tema formulir pendaftaran pengguna di Drupal 7 dengan menambahkan markup baru, dll. Saya sepertinya tidak tahu bagaimana melakukannya.

Saya telah mengikuti beberapa tutorial yang menyarankan agar Anda cukup menjalankan hook_theme di template.php, dan menggunakan fungsi tema yang sesuai:

function mytheme_theme(){
  return array(
    'user_register' => array(
      'arguments' => array('form' => NULL),
    ),
  );
}

function mytheme_user_register($form) {
  // print, die, etc
}

Tapi ini tidak melakukan apa-apa, terlepas dari apa yang saya lakukan dalam fungsi theme_user_register(), atau berapa kali saya menghapus cache.

Adakah pemikiran tentang bagaimana melakukan ini di D7?

7
ebeyrent

Ternyata saya perlu kombinasi perubahan:

Saya harus mengimplementasikan hook_form_alter() dalam modul dan mengatur form #theme Properti:

function mymodule_form_user_register_form_alter(&$form, &$form_state, $form_id) {
  $form['#theme'] = 'user_register';
}

Dan kemudian di template.php:

function mytheme_theme($existing, $type, $theme, $path){
  return array(
    'user_register' => array(
      'render element' => 'form',
      'template' => 'templates/user-register',
    ),
  );
}

function mytheme_preprocess_user_register(&$variables) {
  $variables['rendered'] = drupal_render_children($variables['form']);
}

Dan kemudian saya menambahkan user-register.tpl.php dengan markup yang saya inginkan, dan

<?php echo $rendered; ?> 

untuk mencetak formulir.

9
ebeyrent

Definisi fungsi tema yang diberikan dari implementasi hook_theme () salah:

  • Dalam Drupal 7, indeks array "argumen" tidak digunakan lagi; Anda harus menggunakan "elemen render" (seperti dalam kasus ini), atau "variabel."
  • Fungsi tema menerima argumen yang berbeda, dalam Drupal 7, yaitu &$variables; dalam kasus Anda, Anda harus menggunakan $form = $variables['form'], setelah Anda mendefinisikan fungsi tema menggunakan indeks array yang saya laporkan pada poin sebelumnya. Lihat apa yang dilakukan di theme_locale_date_format_form () (fungsi tema yang digunakan untuk formulir yang didefinisikan oleh locale_date_format_form () , yang didefinisikan dalam locale_theme () , atau di theme_status_report () , yang didefinisikan dalam system_theme () .
3
kiamlaluno

Saya pikir ini mungkin tanpa harus melakukan modul apa pun. Ada saran tema bawaan untuk halaman pendaftaran pengguna dan itu adalah halaman - pengguna - register.tpl.php

2
Carlos Muñiz

Kamu bisa menggunakan hook_form_alter untuk mengubah elemen formulir dan menambahkan markup kustom dengan menambahkan elemen form markup. Anda juga dapat mengatur fungsi tema mana yang digunakan yang bisa menjadi fungsi tema kustom Anda sendiri.

Lihat FAPI untuk lebih jelasnya.

2
googletorp

Berikut adalah fungsinya:

@lihat hook_form_FORM_ID_alter

function hook_form_user_login_alter(&$form, &$form_state, $form_id) {
  // Modification for the form with the given BASE_FORM_ID goes here. For
  // example, if BASE_FORM_ID is "node_form", this code would run on every
  // node form, regardless of node type.

  // Add a checkbox to the node form about agreeing to terms of use.
  $form['terms_of_use'] = array(
    '#type' => 'checkbox', 
    '#title' => t("I agree with the website's terms and conditions."), 
    '#required' => TRUE,
  );
}
1
Adam S