使用する引数がビュー引数でもコンテキストフィルターでもない場合、それらをトークンとして使用する場合は、基本的に、APIで説明されているように、hook_tokens()およびhook_token_info()を実装するモジュールを作成する必要があります。誰もがすでにやったとは思わない。
ここに私がそれをする方法があります:
function yourmodule_token_info() {
$type = array(
'name' => t('GET'),
'description' => t('Tokens related to $_GET superglobal.'),
);
$tokens = array();
foreach($_GET as $key => $val) { //discard $val now
$tokens[$key] = array(
'name' => $key,
'description' => "\$_GET['$key']",
);
}
return array(
'types' => array('get' => $type),
'tokens' => array('get' => $tokens),
);
}
function yourmodule_tokens($type, $tokens, array $data = array(), array $options = array()) {
if($type == 'get') {
$replacements = array();
foreach ($tokens as $name => $original) {
$replacements[$original] = (string)$_GET[$name];
}
return $replacements;
}
}
もちろん、上記のコードは本番対応ではありません。適切な型の処理、セキュリティの問題などは無視されます。それはあなたを正しい軌道に乗せることを意図していますが、それを展開する前にあなた自身の正気を適用する必要があります。私は虐待の責任を負いません。元に戻す前に、削除された理由について読み、本当に必要なものだけを復元するように注意してください。
arg()
$ _GETの代わりにアクセス可能なパラメーターが必要な場合は、もちろんhook_tokensで次のように繰り返しますwhile
:
function yourmodule_tokens($type, $tokens, array $data = array(), array $options = array()) {
if($type == 'arg') {
$replacements = array();
$i = 0;
while ( NULL !== ($arg = arg($i))) {
$replacements["arg:$i"] = (string)$arg;
}
return $replacements;
}
}
yourmodule_token_info()
適宜変更してください。