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.

gran sonrisa
fuente
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í!

Oumar
fuente
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);
      }
    }
  }
}
Gabor Szanto
fuente