あなたも実装を逃した可能性がありますhook_token_list
。新しいトークンの提供は、次の 2 段階のプロセスです。
hook_token_list
提供するトークンを宣言するために実装します。これは、トークンの名前と簡単な説明、およびトークンが適用されるオブジェクトのタイプ (ノード、ユーザー、タクソノミーなど) の情報になります。
hook_token_value
トークンのコンテンツを実際に生成するように実装します。これは、トークンが表すコンテンツに置き換えられるときに呼び出されます。
トークン モジュールによって既に提供されているタイトル トークンの代替バージョンを提供したいだけなので、token_node.inc から関連する部分をコピーし、関連するケースに落として、別のモジュールで使用できるように調整するのがおそらく最善の方法です。
/**
* Implementation of hook_token_list().
*/
function yourModule_token_list($type = 'all') {
if ($type == 'node' || $type == 'all') {
$tokens['node']['yourModule-title'] = t('Node title (customized version by yourModule)');
return $tokens;
}
}
これは、簡単な説明とともにyourModule
、 という名前のノード オブジェクトのトークンを提供することを示しています。yourModule-title
主な作業は他のフックで行われます。
/**
* Implementation of hook_token_values().
*/
function yourModule_token_values($type, $object = NULL, $options = array()) {
$values = array();
switch ($type) {
case 'node':
$node = $object;
// TODO: Replace the check_plain() call with your own token value creation logic!
$values['yourModule-title'] = check_plain($node->title);
break;
}
return $values;
}
これは、ノード オブジェクトのトークンが必要なときはいつでも呼び出され、問題のノードが$object
パラメーターとして渡されます (ユーザー トークンの場合、これ$type
は「ユーザー」であり$object
、ユーザー オブジェクトであり、他のタイプの場合も同様です)。 . それが行うことは、トークン名でキー付けされた値の配列を作成し、そのトークンの置換を値として作成することです。token_node.inc の元のコードは、 を通じてタイトルを実行するだけcheck_plain()
なので、これは独自のロジックを挿入する場所になります。