トークンと共にパラメーターを送信することは可能ですか?
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のように見えます。私が必要としているのは、サイトを編集している誰かがトークンをページに挿入し、リンクとして表示されるもの(画像、テキスト、またはその両方)を指定できる方法です。
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;
}
トークンの置き換えは非常に具体的であるので、それを行うモジュールが見つかるとは思いません。あなたの唯一の可能性はあなたが書くカスタムモジュールです。