1

ユーザーが Web サイトを閲覧している都市に基づいて、自動的に投稿されたコンテンツを表示する必要があります。SmartIP を使用しようとしています。次のコードを使用しようとしています。

<?php
if ($_SESSION['smart_ip']['location']['country_code'] == 'IN'):
?>

インドのコンテンツ固有

<?php
elseif ($_SESSION['smart_ip']['location']['country_code'] == 'UY'):
?>

ウルグアイの HTML コンテンツ固有

<?php
....
else:
?>

フォールバックのデフォルト コンテンツ。

<?php
 ...
endif;
?>

国コードを「IN」として使用しようとしました。しかし、それはコンテンツを表示していません。コードを次のように変更しようとしています

<?php
if ($_SESSION['smart_ip']['location']['country_code']['state_code'][city_code] == 'BAN'):
?>

私の疑問は:

ユーザーがバンガロールやデリーなどの都市から閲覧している場合、バンガロールに投稿されたコンテンツを自動的に表示するにはどうすればよいですか? これらの国、州、都市コードはどこに追加できますか?

4

1 に答える 1

-1

「辞書関数」を実装しようとすることができます。言及した地理コードで呼び出すと、html テンプレートに埋め込みたいローカライズされたコンテンツが返されます。バックグラウンドでは、通常は次のような配列構造である「カタログ」を調べます。

$LCat = array (
  'India' => array (
    'Assam' => array (
      'Dispur' => "some Dispur specific content",
      'Guwahati' => "some Guwahati specific content",
      ... some other cities in that state ...
    ),
    'Orissa' => array (
      'Bhubaneswar' => "some Bhubaneswar specific content",
      ... some other cities in that state ...
    ),
    ... some other states in that country ...
  ),
  ... some other countries ...
);

この関数は、カタログ内の matchin エントリを探します (たとえば、 is_set() 関数を使用して):

if ( is_set($LCat[$_SESSION['smart_ip']['location']['country_code']]) ) {
  if ( is_set($LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']]) )
    if ( is_set($LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']['city_code']]) ) ) {
      $Location=$LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']]['city_code']];
    } else {
      $Location=$LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']]
  } else {
    $Location=$LCat[$_SESSION['smart_ip']['location']['country_code']]
} else {
  $Location="location specific content for 'Nirwana'";
}

したがって、構造は次のとおりです: 州 > 国 > 都市、または必要な構造。アイデアは次のとおりです。カタログで最も具体的な一致を使用してみてください。存在しない場合は、エントリの具体性を少し下げて使用します。このようにして、スクリプトが遭遇する可能性のあるすべての場所に対してフォールバックをコーディングする代わりに、構造内に常に安全なフォールバックをコーディングします。

当然のことながら、一致のために保存されるコンテンツは何でもかまいません。要点を明確にするために単純な文字列のみを選択しました。また、構造は別の方法で保存することもできます。たとえば、実行時に調べるファイル システム階層、国ごとのフォルダー、州ごとのフォルダー、都市ごとのファイルなどです。パフォーマンスを向上させ、カタログ データを管理する簡単な方法を提供したい場合は、実行時にクエリを実行するデータベースにそのカタログを格納する必要があります。ただし、アイデアは同じままです。

私はそのコードをテストしていないことに注意してください。ただし、考えられるアプローチの提案が得られるはずです。

于 2012-10-01T05:49:13.143 に答える