토큰을 새 필드의 기본값으로 설정


8

Drupal 7에서는 대부분의 필드에 대한 기본값을 설정할 수 있습니다. 토큰을 기본값으로 설정할 수 있습니까?

Drupal 6에서는 가능했지만 Drupal 7에서는 불가능한 것 같습니다.

여기 에는 가능성을 논의 하는 스레드가 있지만 해결되었는지는 명확하지 않습니다.


모듈 토큰 ( drupal.org/node/1070878 ) 에서이 기능에 대한 공개 기능 요청이 있습니다.
Refineo

가능한 해결 방법은 다음과 같습니다. drupal.org/node/1070878#comment-5103914
Refineo

1
여기에 관련된 Drupal 8 코어 패치 ( drupal.org/node/1308564 )가 있습니다.
Refineo

답변:


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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.