web-dev-qa-db-ja.com

com_usersコンポーネントのオーバーライド

ユーザー登録コンポーネントを上書きできません。

私の目的は、名前が3つのフィールド(姓、ミドル、姓)に分割され、[ユーザープロファイル]セクションに入力されるため、[名前]フィールドを表示しないことです(これはオーバーライドされたプラグインであり、それに応じて処理されます)。

スケーラビリティをサポートし、アプリケーションのアップグレードを保証してコアファイルを作成するには、オーバーライドがテンプレートオーバーライドによるものであってはなりません。

これまでにテストしたのは、com_usersコンポーネントの変更されたクローンをアップロードしようとしたことです。この場合、com_users\models\formsのName要素を削除し、Zipファイルを作成して、 Extension Manager経由でアップロードしました。
しかし、それでもオーバーライドは機能しませんでした。

何かご意見は?

2
Ju-chan

あなたは実際にプラグインからこれを最も簡単に行うことができます。コアファイルは変更されないため、完全に更新できる必要があります。フォームにフィールドを追加するプロファイルシステム用のプラグインがすでにある可能性があります。それも編集したくないかもしれませんが、ユーザープラグインをコピーして次の関数を設定するのは簡単です:

function onContentPrepareForm($form, $data)
{
    if (!($form instanceof JForm))
    {
        $this->_subject->setError('JERROR_NOT_A_FORM');
        return false;
    }

    // Check we are manipulating a valid form.
    $name = $form->getName();
    if (!in_array($name, array('com_admin.profile', 'com_users.user', 'com_users.profile', 'com_users.registration')))
    {
        return true;
    }

    $form->removeField('name');

    // you can also do checks to just remove fields on the front end or backend
    // if that makes more sense for your application
    if (JFactory::getApplication()->isAdmin()) {
        $form->removeField('captcha');
        $form->removeField('email2');
    }

    return true;
}
4
David Fritsch

コンポーネントファイルに変更を導入すると、それらは次のJoomla!で置き換えられます。更新。

これらは、カスタマイズを可能にする出力オーバーライドです。

出力オーバーライドの理解 - http://docs.joomla.org/Understanding_Output_Overrides

  • コンポーネントの出力タイプとレイアウトのオーバーライド
    • 3.1出力タイプ
    • 3.2レイアウト
    • 3.3レイアウトファイルのコピーまたは作成
    • 3.4サブレイアウトのオーバーライド

ニーズを解決するのに十分でない場合は、(コアコンポーネントファイルを変更するのではなく)新しいコンポーネントを作成する必要があります。

2
Anibal