Drupal 7では、ほとんどのフィールドにデフォルト値を設定できます。トークンをデフォルト値として設定することは可能ですか?.
これはDrupal 6では可能ですが、Drupal 7.では不可能と思われます。
可能性について議論するスレッド here がありますが、解決されたかどうかは不明です。
どのような情報を取得しようとしていますか?
コンテンツタイプの1つで、ノードIDを取得する必要があります。現在のノードIDのトークンは次のとおりです。
[current-page:url:args:last]
テストされ、私のために働いています!!
それは私のために働いています:
/**
* 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);
}
}
}
}