Establecer un token como el valor predeterminado de un nuevo campo


8

En Drupal 7, puede establecer valores predeterminados para la mayoría de los campos. ¿Es posible establecer un token como el valor predeterminado?

Recuerdo que esto es posible en Drupal 6, pero no parece posible en Drupal 7.

Hay un hilo aquí que discuten la posibilidad, pero no está claro si fue resuelto.


Hay una solicitud de función abierta para esto en el token del módulo ( drupal.org/node/1070878 )
Refineo

Una posible solución alternativa está aquí: drupal.org/node/1070878#comment-5103914
Refineo

1
Aquí hay un parche principal relacionado con Drupal 8 para esto ( drupal.org/node/1308564 ).
Refineo

Respuestas:


1

¿Qué información intentas obtener?

En uno de mis tipos de contenido, necesito recuperar la ID del nodo. Descubrí que el token para el ID de nodo actual es este:

[current-page:url:args:last]

Probado y trabajando para mí!


0

Me esta funcionando:

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.