/**
* Implementation of hook_token_values().
*/
function content_profile_token_token_values($type, $object = NULL, $options = array()) {
$values = array();
switch ($type) {
case 'user':
if (isset($object)) {
$account = user_load(array('uid' => $object->uid));
}
else {
global $user;
$account = user_load(array('uid' => $user->uid));
}
$node_profile = content_profile_load('profile', $account->uid);
$values['profile'] = ($node_profile->title) ? $node_profile->title : '';
break;
}
return $values;
}
/**
* Implementation of hook_token_list().
*/
function content_profile_token_token_list($type = 'all') {
if ($type == 'user' || $type == 'all') {
$tokens = array();
$tokens['user']['profile'] = t('Profile title of authors content profile');
return $tokens;
}
}
モジュールを作成し、意図したとおりに.infoファイルを追加しましたが、トークンリストで画像フィールドのタイトルを確認すると、モジュールによって実装されたトークンが表示されません。
何が間違っているのですか?
更新!!!
これで、imagefieldトークンリストにトークンが表示されますが、機能しません== imgのコンテンツプロファイルタイトルを追加しません...
モジュールがノードトークンを定義しているときに、 ImageField モジュールが画像タイトルにユーザートークンを使用しているため、表示されません。
これは、 imagefield_widget.inc (imagefield_widget_settings_form()
)のコードから確認できます。これは次のコードです。
_ $form['title_settings']['title_type'] = array(
'#type' => 'select',
'#title' => t('Input type'),
'#options' => array(
'textfield' => 'textfield',
'textarea' => 'textarea'),
'#default_value' => !empty($widget['title_type']) ? $widget['title_type'] : 'textfield',
'#description' => t('Choose type of field to be displayed to the user.'),
);
$form['title_settings']['title'] = array(
'#type' => 'textfield',
'#title' => t('Default Title text'),
'#default_value' => !empty($widget['title']) ? $widget['title'] : '',
'#description' => t('This value will be used as the image title by default.'),
'#suffix' => theme('token_help', array('user')),
);
_
モジュールで定義するトークンはノードトークンであり、コードがtheme('token_help', array('user'))
を呼び出したときに表示されません。
いくつかのチェック。
コードに「[mymodulename]」を入れるだけでなく、モジュール名があります。
モジュールは有効になっていますか?
キャッシュをクリアしましたか?
上記のすべてが当てはまる場合は、デバッグコードを挿入して、正しい値が取得されていることを確認できます。