it-swarm.asia

تعديل نموذج تسجيل المستخدم

أرغب في تصميم نموذج تسجيل المستخدم في Drupal 7 عن طريق إضافة ترميز جديد ، وما إلى ذلك. لا يمكنني معرفة كيفية القيام بذلك.

لقد اتبعت بعض البرامج التعليمية التي تشير إلى أنه يمكنك ببساطة استدعاء hook_theme في template.php ، واستخدام وظيفة السمة المقابلة:

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

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

ولكن هذا لا يفعل أي شيء ، بغض النظر عما أفعله في وظيفة theme_user_register() ، أو عدد المرات التي أمحو فيها ذاكرة التخزين المؤقت.

أي أفكار حول كيفية القيام بذلك في D7؟

7
ebeyrent

اتضح أنني بحاجة إلى مجموعة من التغييرات:

اضطررت إلى تطبيق hook_form_alter() في وحدة نمطية وتعيين النموذج #theme خاصية:

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

ثم في 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']);
}

ثم أضفت user-register.tpl.php مع الترميز المطلوب ، و

<?php echo $rendered; ?> 

لطباعة النموذج.

9
ebeyrent

تعريف وظيفة السمة المقدمة من تنفيذ hook_theme () خطأ:

  • في Drupal 7 ، لم يعد يتم استخدام "وسائط" فهرس الصفيف ؛ يجب عليك استخدام "عنصر العرض" (كما في هذه الحالة) أو "المتغيرات".
  • تتلقى وظيفة السمة حجة مختلفة ، في Drupal 7 ، وهو &$variables ؛ في حالتك ، يجب عليك استخدام $form = $variables['form'] ، بمجرد تحديد وظيفة السمة باستخدام فهرس الصفيف الذي أبلغت عنه في النقطة السابقة. شاهد ما تم فعله في theme_locale_date_format_form () (وظيفة السمة المستخدمة للنموذج المحدد بواسطة locale_date_format_form () ، والتي تم تعريفها في locale_theme () ، أو في theme_status_report () ، والذي تم تعريفه في system_theme () .
3
kiamlaluno

أعتقد أن هذا ممكن دون الحاجة إلى القيام بأي وحدات. يوجد اقتراح موضوعي مدمج لصفحة تسجيل المستخدم وهو صفحة - مستخدم - register.tpl.php

2
Carlos Muñiz

يمكنك استخدام hook_form_alter لتغيير عناصر النموذج وإضافة ترميز مخصص بإضافة عناصر نموذج ترميز. من الممكن أيضًا تعيين وظيفة السمة التي تريد استخدامها والتي يمكن أن تكون وظيفة السمة المخصصة الخاصة بك.

انظر FAPI لمزيد من التفاصيل.

2
googletorp

هنا الوظيفة الدقيقة:

see 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