Imposta un token come valore predefinito di un nuovo campo


8

In Drupal 7, puoi impostare i valori predefiniti per la maggior parte dei campi. È possibile impostare un token come valore predefinito.

Ricordo che questo era possibile in Drupal 6, ma non sembra possibile in Drupal 7.

C'è un thread qui che discute la possibilità, ma non è chiaro se è stato risolto.


C'è una richiesta di funzionalità aperta per questo nel modulo Token ( drupal.org/node/1070878 )
Refineo

Una possibile soluzione alternativa è qui: drupal.org/node/1070878#comment-5103914
Refineo

1
Ecco una patch di Drupal 8 correlata per questo ( drupal.org/node/1308564 ).
Refineo,

Risposte:


1

Quali informazioni cerchi di ottenere ??

In uno dei miei tipi di contenuto, devo recuperare l'ID nodo. Ho scoperto che il token per l'ID nodo corrente è questo:

[current-page:url:args:last]

Testato e funzionante per me !!


0

Funziona per me:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.