web-dev-qa-db-ja.com

コンテンツプロファイルタイトルトークンの問題(独自のモジュールを書き込もうとしています)

/**
* 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のコンテンツプロファイルタイトルを追加しません...

2
Alexander Kim

モジュールがノードトークンを定義しているときに、 ImageField モジュールが画像タイトルにユーザートークンを使用しているため、表示されません。
これは、 imagefield_widget.incimagefield_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'))を呼び出したときに表示されません。

1
kiamlaluno

いくつかのチェック。

コードに「[mymodulename]」を入れるだけでなく、モジュール名があります。

モジュールは有効になっていますか?

キャッシュをクリアしましたか?

上記のすべてが当てはまる場合は、デバッグコードを挿入して、正しい値が取得されていることを確認できます。

0
Jeremy French