3

ユーザーが世界のどこにいるかに基づいて、特定のコンテンツ/ノードのみを表示できるようにする必要があります。たとえば、ユーザーが米国出身の場合、ヨーロッパ出身のユーザーとは異なる結果が表示されるはずです。

理想的には、各ノードに表示する領域をタグ付けして、コンテンツが表示されるときに、これらのタグでフィルタリングできるようにします。

また、さまざまなコンテンツの「スクローラー」を使用してコンテンツを表示しますが、これらにも場所に基づいて異なるコンテンツを設定したいと思います。

これをどのように達成するのが最善でしょうか?

4

2 に答える 2

3

ビューを使用し、次のようなクールなモジュールを使用します。

  1. smart_ip http://drupal.org/project/smart_ip&IpGeolocationhttp://drupal.org/project/ip_geolocなどのモジュールを使用する
  2. それらのモジュールページの情報を読んで、正しい軌道に乗るのに役立ちます

基本的に、最初にユーザーの場所を取得する必要があります。これはセッションに保存されます。それができたら、いつでも参照できます。

于 2012-02-21T00:22:45.487 に答える
0

これは古いスレッドであることは知っていますが、Drupalで必ずしも簡単な解決策があるとは限りません。これが私がそれをした方法です。このソリューションは元の質問と完全には一致しませんが、PHPコードを拡張してユーザーの場所を各ノードに割り当てられた分類用語と比較することにより、そのシナリオをカバーするように拡張できる方法を説明します。

まず、IP2Countryをインストールします。これにより、ジオロケーションルックアップを実行してIPアドレスを誰かの国に一致させることができます。

次に、このようなPHPコードを使用して、訪問者のIPアドレスが特定の国と一致するかどうかを判断します。この例では、訪問者が米国またはカナダにいる場合はtrueを返し、そうでない場合はfalseを返します。

<?php
    $detectedcountry = module_invoke('ip2country','get_country',$_SERVER['REMOTE_ADDR']);
    $countries = array(
        'US','CA'
    );
    if(in_array($detectedcountry,$countries)){
        return true;
    }
    else return false;
?>

このコードはさまざまな場所で使用できますが、動作させるにはPHPフィルターモジュールを有効にする必要があります。

私のソリューションでは、このコードを2つの方法で使用しました。

最初に、パネルペインではなくHTTP応答を返すために、ノードテンプレート(分類用語テンプレートの場合もあります)のパネルバリアントを作成しました。このコードを選択ルールとして使用したため、ユーザーがその特定のノードタイプの表示を許可されている国にいない場合は、404が返されます。次に、場所に基づいて資格を取得した人のノードページを返すPanelsバリアントを作成しました。

次に、ノードタイプ(この場合はProduct)のPanelsバリアントを作成し、同じPHPコードを使用して、場所が原因で表示を許可されなかったユーザーのページ上の特定の要素を非表示にしました。この場合、商品表示ページの[価格]ペインと[カートに追加]ペインを非表示にしました。許可された国以外の訪問者は、製品情報のみを表示し、ページのeコマース要素は表示しませんでした。

3番目のオプションとして、同じコードを使用してDrupalブロックを表示/非表示にすることもできます。

最後に、カスタムテーマ関数を作成して、人の場所に応じて個々のメニュー項目を表示/非表示にできるようにしました。この場合、許可された国にいない限り、ショップメニュー項目を非表示にしたいと思います。これを行う方法については、https ://fiveminutelessons.com/learn-drupal-sitebuilding/show-or-hide-menu-item-drupal-7-based-users-locationで詳しく説明しました。

于 2017-07-06T03:07:14.883 に答える