0

小売業者をサポートするために、シンプルなBTBサイトをセットアップしようとしています(どこかで製品のテキスト/画像と企業ブランドをダウンロードできます)。Joomla1.5.2とVirtuemart1.1.9を使用しています

私たちはそれが完全に安全であることを望んでいます(未登録の視聴者-そして競争-簡単な紹介ページを見て、登録するオプションでログインしてください)。コンテンツはまったくありません。

また、VM登録を使用して新しいユーザーを登録したいと考えています。

virtuemartカテゴリを指すJoomlaメニュー項目を使用してカテゴリ/製品への安全なアクセスを設定し、メニュー項目アクセスを「登録済み」に設定しました。完璧に動作し、ユーザーはログインしておらず、スプラッシュページしか表示されません。ログインすると、すべての製品カテゴリがメニュー項目から利用可能になりました。

しかし、これがユーザー登録を台無しにすることに気づきました。Virtuemarts user regを使用したいので、そのすべてのデータ(アドレス情報など)を収集して戻ってきて手動で入力する必要はありません。

明らかに、virtuemartメニュー項目が「登録済み」アクセスに設定されていると、ユーザーはjoomlaの登録ページにリダイレクトされます(Virtuemartに必要なデータは収集されません)。バックエンドのログインファイル(com_userとmod_user)で見つけたすべての場所に有効なVM登録URLを貼り付けましたが、うまくいきませんでした(初心者の場合はうまくいくとは思いませんでした)。

回避策があるかどうか誰かが知っていますか?またはこれを行うためのより良い方法は?

ありがとうございました。

4

1 に答える 1

0

これを行う場合は、VMコードを微調整する必要があることを絶対に確信できます。ハードルは、VMがスクリプト全体でデフォルトと同じメニュー項目IDを使用することです。そのため、登録用に別のメニュー項目を作成しても、常に最初のメニュー項目にフォールバックします。

これを回避する唯一の方法は、VM関数の小さなハックであり、常にこれを強制的に実行します。以下のコードを、ps_session.phpの459行目あたりの関数getShopItemid()の先頭に配置します。既存のコードはすべてそのままにしておきますが、そのに実行する必要があります。

    /*Hack For multiple VM menu itemids, if there is a page specified, find THAT Itemid */
    global $page;
    if($_REQUEST['Itemid']) {
        $_REQUEST['shopItemid'] = $_REQUEST['Itemid'];
    } elseif($page) {
        $db_hack = new ps_DB;
        $q = "SELECT id FROM #__menu WHERE link='index.php?option=com_virtuemart' AND published=1 AND params like '%page=".$page."%'";
        $db_hack->query( $q );
        if( $db_hack->next_record() ) {
            $_REQUEST['shopItemid'] = $db_hack->f("id");
        }
    }

これが整ったら、少なくともこれを含むJoomlaメニュー項目が必要になります。

option=com_virtuemart&page=shop.registration

データベースにそのメニュー項目がある場合、上記のコードはそのページのメニュー項目を検索し、デフォルトのVMメソッドの代わりにそのメニュー項目を使用します。Joomlaセキュリティは、正しいメニュー項目があるため、期待どおりにトリガーされます。

于 2012-04-30T22:34:39.867 に答える