質問: joomlaの登録:不要なフィールドを削除する まず、私はこの質問を認識しています。 https://stackoverflow.com/questions/14799733/remove-name-field-from-joomla-registration-form しかし、その答えのリンクは無効であり、言及されているファイルパスは最新のjoomla(バージョン3.3)には存在しないため、答えはまったく役に立ちません。私が欲しいのは簡単です:joomlaの登録フォームは次のようになります:ユーザーが実際にそれを完了するように、登録プロセスができるだけ簡単であることを確認したいのですが、いくつかの問題があります。 ユーザーの本名を知る必要はありません。 「確認」ボックスは使いたくない。一般的なコンセンサスは、それらは必要ではないということです。 https://ux.stackexchange.com/questions/484/is-a-repeat-password-field-necessary-in-a-signup-page すべてが必要ですが、なぜ必須フィールドにマークを付けるのですか? 確かに、これははるかに優れた登録ページです。\ components\com_users\models\forms\registration.xmlファイルを変更して、フォームを希望どおりに表示しました。しかし、フォームを送信するたびに、検証はまだ欠落しているフィールドを探しているため、名前を指定する必要があることが通知されます。「登録に失敗しました:名前を入力してください。」名前フィールドと2つの確認フィールドのチェックを無効にするにはどうすればよいですか?名前は必須なので、指定したユーザー名に名前を設定します(ユーザー名と名前はデフォルトで同じです)。ユーザーが実際に自分のプロファイルページに実際の名前を設定したい場合afterの登録は可能ですが、必須ではありません。私はこれを間違った方法で行っていますか?いくつかの場所で、コアjoomlaファイルの変更は更新で中断する可能性があるため、適切ではなく、代わりに「オーバーライド」を使用する必要があることを読みました。通常、これらの応答は、オーバーライドに関するjoomlaのページにリンクしているだけであり、それらを使用して要求者が望むことを行う方法についての詳細な説明はありません。私はそれらを理解しようとしましたが、できません。そのため、オーバーライドが適切な方法である場合は、オーバーライドチュートリアルにリンクするだけでなく、それらを使用してこれを実行する方法を説明してください。私はあなたが提供できるどんな助けにも大いに感謝します、私はこれを数時間今理解しようとしています!
回答: 理想的には、これはすべてユーザープラグインで行われます。多くの人がこれを理解しているとは思いませんが、プラグインからフォームを編集できます(コアハックは必要ありません)。同様に、プラグインは、モデルがエントリを保存しようとする前に入力を確認するため、フィールド重複フィールドの一部をモックして、検証に合格させることができます。この「ユーザー」プラグインの機能により、フォームを変更できます。function oncontentprepareform($form, $data) { if (!($form instanceof jform)) { $this->_subject->seterror('jerror_not_a_form'); return false; } // check we are manipulating a valid form, // may also want to check whether this is frontend or admin depending on where all you want to affect // jfactory::getapplication()->isadmin() $name = $form->getname(); if (!in_array($name, array('com_admin.profile', 'com_users.user', 'com_users.profile', 'com_users.registration'))) { return true; } // remove fields on frontend if (!jfactory::getapplication()->isadmin()) { $form->removefield('password2'); $form->removefield('email2'); } return true; } 次に、onuserbeforesave関数を使用して、検証に合格するためにリセットする必要があるフィールドをリセットできます。 (これは完全に必要なわけではない可能性があるため、エラーなしで試して、発生するエラーを確認してください。)function onuserbeforesave($user, $isnew, $new) { $user['password2'] = $user['password1']; }