web-dev-qa-db-ja.com

カスタムトークンを置き換えるにはどうすればよいですか?

Pathautoにカスタムトークンを追加しようとしています。
トークン[ストーリーページ番号]を持っています。
そして、私のhook_pathauto_alias_alter()で、token_replace()を使用してそれを置き換えようとしています。

しかし、何かがおかしい。

token_replace("[story-page-number]", (array)node_load($context['data']['node']->nid));

これがカスタムトークンの設定です。

function mymodule_token_list($type = 'all') {
    $tokens['story-page-number'] = t('Page number (of story front)');
    return $tokens;
}

function mymodule_token_values($type, $object = NULL, $options = array()) {
    $values = array();
    $values['story-page-number'] = get_story_page_number($node->nid);;  

return $values;
}

ここで何が欠けているのか、もっと簡単にわかると思いました。

1
dibs

これを試して:

_$node = node_load($context['data']['node']->nid);
token_replace("[node:story-page-number]", array('node' => $node));
_

_$context['data']['node']_がすでにノードである場合、node_load()呼び出しをスキップして、単に_$node = $context['data']['node'];_を割り当てることができます。

編集:申し訳ありませんが、コードで例を試しませんでした。トークン名にトークンタイプを含める必要があります。 mymodule_tokens()で、_$type_が_'node'_であることを確認し、_$node_から_$data['node']_を検索します。 Drupal 6 hook_token_values();を使用していることに注意してください。D7hook_tokens()を使用する必要があります。 node_tokensの実装を使用してください() をガイドとして。

参考文献

1
greg_1_anderson