質問: トークンを新しいフィールドのデフォルト値として設定する drupal 7では、ほとんどのフィールドにデフォルト値を設定できます。トークンをデフォルト値として設定することは可能ですか?.これはdrupal 6では可能ですが、drupal 7.では不可能と思われます。可能性について議論するスレッド here がありますが、解決されたかどうかは不明です。
回答: それは私のために働いています:/** * implements hook_field_widget_form_alter(). */ function module_hook_field_widget_form_alter(&$element, &$form_state, $context) { // prevent replace tokens on field admin ui form. if (!is_null($element['#entity'])) { // determine the $user. if entity has uid, try to load. if can't, use the // global $user. if (isset($element['#entity']->uid)) { if (!$user = user_load($element['#entity']->uid)) { global $user; } } // build data for token replacement. $data = array( $element['#entity_type'] => $element['#entity'], 'user' => $user, ); // eg. the body field, the default value is stored in // $element['#default_value'] if (isset($element['#default_value']) && !is_array($element['#default_value'])) { $element['#default_value'] = token_replace($element['#default_value'], $data); } // eg. the link field, the default value is stored in // $element['#default_value']['url'] else if (is_array($element['#default_value'])) { foreach ($element['#default_value'] as $key => $value) { if (is_string($value)) { $element['#default_value'][$key] = token_replace($value, $data); } } } // eg. the text field, the default value is stored in // $element['value']['#default_value'] else if (isset($element['value'])) { if (isset($element['value']['#default_value']) && !is_array($element['value']['#default_value'])) { $element['value']['#default_value'] = token_replace($element['value']['#default_value'], $data); } } } }