1

私は Magento サイトを公開する予定で、クライアントから土壇場でリクエストがありました。彼らは英国を拠点とするメーカーであり、世界中のサプライチェーンと競争したくないので、望んでいます。

  1. 北米から発信された IP を持つすべてのユーザーは、理想的にはリダイレクト メッセージを使用して、まったく別の Web サイト (Magento 以外、私とは関係ありません) にリダイレクトされます。
  2. 北米、英国、アイルランド以外の IP を持つすべてのユーザーは、サイトを表示できますが、価格とカートが無効になっているため、価格が表示されず、購入できません。
  3. イギリスとアイルランドは通常通り営業しています。

私はこれにアプローチするための最良の方法を見つけようとしています。私は 3 つの選択肢を認識しています。

  • .HTACCESS

私は、開発者が .htaccess に IP の膨大なリストを設定する前にストアに取り組んだことがあります (主にセキュリティ上の問題として中国とロシアをブロックしています)。同様のことを行うことができ、ユーザーを USA IP にリダイレクトしてから、環境変数をそのように設定することができます。

.htaccess からカスタム グローバルを設定する方法

テンプレートでアクセスして、カートへの追加と価格マークアップを表示しないようにすることができます。

長所:比較的簡単

短所:ひどい。IP のリストはハードコーディングされ、価格などを表示する/表示しない条件付きコードは、モジュールではなくテンプレート ベースになります。さらに、「あなたは米国のストアに転送されています」というリクエストは、この方法では処理できませんでした.

  • 市販モジュールによる店舗切替

別のオプションは、リクエストを処理するために次の商用モジュールをカスタマイズ/構成することです。

http://www.mageworx.com/store-and-currency-auto-switcher-magento-extension.html

これには、新しいストアではなく、新しい Web サイトのセットアップが必要になると考えています (現在のインストールには、1 つの Web サイトと 2 つのストアがあり、それぞれに 1 つのストア ビューがあります)。新しい Web サイトには独自のテーマがあり、カートや価格情報は表示されません。

長所: IP はハードコーディングされておらず、MaxMind GeoIP データベースを使用します。モジュールベース。
短所:ここでも、価格を表示するかどうかのコードはテンプレート ベースです。また、これにより、ユーザーに多くの管理オーバーヘッドが追加されます。余分な Web サイト、余分なストア ビューが複雑になります。このモジュールの機能の 99% を使用していません。

  • それを処理するためのカスタム モジュール

これが理想的なソリューションであることはわかっていますが、アプリ/コードよりもアプリ/デザインの方がずっと満足しています。私はモジュールを構築する方法を知っており、以前に非常に小さなモジュールを構築したことがありますが.... Alan Storm のブログ投稿に基づいています。

http://magento-quickies.tumblr.com/post/32402056167/magento-startup-events

controller_front_init_beforeこのイベントを使用して、とにかく製品ビュー テンプレートで使用される isSaleable() メソッドに関連するクラスを拡張するオブザーバーを作成することを想像しています。もしかして??

長所: これは正しい方法です。管理オーバーヘッドはありません。無効化/有効化が簡単。

これに関する提案、ポインタ、またはリンクは大きな助けになります。ありがとう。

4

1 に答える 1

4

これが、あなたが「理想的なソリューション」と呼んだもののキックオフです。

MagnetoConnectまたはGitHubから無料の GeoIP 拡張機能を入手してください。次に、任意のテンプレートで次を使用します。

$geoIP = Mage::getSingleton('geoip/country');
...
<?php if($geoIP->isCountryAllowed()) ?>
    the block of code you want to display only for selected countries
<?php endif ?>

詳細については、こちらの記事を参照してください。

ご不明な点がございましたら、お気軽にお尋ねください。

于 2012-12-07T11:25:41.733 に答える