トークンでパラメーターを渡す


10

トークンと共にパラメーターを送信することは可能ですか?

mod1_infoとmod1_tokensを定義するモジュールがあります。ページに%token:mod1:testと入力すると、に置き換えられ<a href='test.html'></a>ます。

実際に欲しいのは%token:mod1:test [variable]と入力して取得すること<a href='test.html'>variable</a>です。

これは可能ですか?

背後では、test.htmlはいくつかの動的パラメーターを使用して構築されているため、実際にはtest.html?param1 = foo&param2 = barのようになります。私が必要なのは、サイトを編集している誰かがトークンをページに挿入し、リンクとして表示されるもの(画像、テキスト、またはその両方)を指定できる方法です。


1
残念ながら、これが可能だとは思いません。一方、私は自分がこれを必要としたことがないため、ユースケースを完全に理解していません。おそらく、必要なものを拡張すると、別の提案が提案される可能性があります。
Letharion 2012

回答:


8

Drupal 7を使用すると、モジュールは[node:author:name]のようなトークンを簡単に処理できます。node:authorの後の​​トークンの部分はユーザートークンを参照します。Drupal 6のTokenモジュールとは異なり、Drupal 7でトークンを処理するコードでは、動的トークンを作成できます。これは、Drupal 7では、トークンを実装するモジュールが、定義したトークンだけでなく、任意のトークンを置き換えることができるためです。hook_tokens()で使用される通常のループは次のループです。

foreach ($tokens as $name => $original) {
  // Check the value of $name, and generate the replacement that is assigned to
  // $replacements[$original].
}

次のコードを使用すると、達成しようとしているものを取得できます。トークンには特定の形式がありますが、これは説明している形式とは異なります。コードはテストされていません。

function mymodule_token_info() {
  $type = array(
    'name' => t('Anchors'), 
    'description' => t('Your description'), 
  );

  return array(
    'types' => array('anchor' => $type), 
  );
}

function mymodule_tokens($type, $tokens, array $data = array(), array $options = array()) {
  $replacements = array();
  $sanitize = !empty($options['sanitize']);

  if ($type == 'anchor') {
    foreach ($tokens as $name => $original) {
      list($file, $title) = explode(':', $name);
      if (!empty($title) && !empty($_GET[$title])) {
        $title = $_GET[$title];
      }
      else {
        $title = '';
      }

      $replacements[$original] = "<a href='$file.html'>$title</a>";
    }
  }

  return $replacements;
}

トークンの置き換えは非常に具体的であるので、それを行うモジュールが見つかるとは思いません。あなたの唯一の可能性は、あなたが書くカスタムモジュールです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.