web-dev-qa-db-ja.com

Webフォームで使用できるようにカスタムトークンを追加する

Smart-ipモジュールをインストールしています。これにより、ユーザーの国、都市などを次のように非常に簡単に取得できます。

echo $_SESSION['smart_ip']['location']['country_code'];

これをwebformsフィールドのトークンの置き換えとして使用したいと思います。しかし、私はそれを行う方法がわかりません。グーグルの後で混乱しました。 template.phpでフックする必要がありますか?どうすればいいのですか? :/

6
esafwan

独自のトークンを作成してください!

次のように、トークンフックを実装する小さなモジュールを作成できます(D6ですが、D7も同様です)。

function YOURMODULE_token_list($type = 'all') {
  $list = array();

  $list['smart-ip']['smart-ip-country-code'] = t("The Country code");
  // ...etc

  return $list;
}

function YOURMODULE_token_values($type, $object = NULL, $options = array()) {
  $tokens = array();

  $tokens['smart-ip-country-code'] = $_SESSION['smart_ip']['location']['country_code'];
  // ...etc

  return $tokens;
}

または、さらに良いことに、これらのフックをsmart_ip.moduleファイルに追加して、モジュールのメンテナにパッチを送信します:-)。トークンは本当に素晴らしいです、そして、それは確かにsmart_ipモジュールへの良い追加です。

6
wadmiraal