将令牌设置为新字段的默认值


8

在Drupal 7中,您可以为大多数字段设置默认值。是否可以将令牌设置为默认值。

我记得在Drupal 6中可以做到这一点,但在Drupal 7中似乎不可能。

有一个线程在这里是讨论的可能性,但如果解决了它的不明确。


有在模块令牌(该开放的特征请求drupal.org/node/1070878
Refineo

一个可能的解决方案在这里:drupal.org/node/1070878#comment-5103914
Refineo 2012年

1
这是与此相关的Drupal 8核心补丁(drupal.org/node/1308564)。
Refineo 2012年

Answers:


1

您尝试获取什么信息?

在我的一种内容类型中,我需要检索节点ID。我发现当前节点ID的令牌是这样的:

[current-page:url:args:last]

经过测试,为我工作!!


0

它为我工作:

/**
 * 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);
      }
    }
  }
}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.