Tetapkan token sebagai nilai default bidang baru


8

Di Drupal 7, Anda dapat menetapkan nilai default untuk sebagian besar bidang. Apakah mungkin untuk menetapkan token sebagai nilai default.

Saya ingat ini mungkin di Drupal 6, tapi sepertinya tidak mungkin di Drupal 7.

Ada utas di sini yang membahas kemungkinan itu, tetapi tidak jelas apakah itu dipecahkan.


Ada permintaan fitur terbuka untuk ini dalam modul Token ( drupal.org/node/1070878 )
Refineo

Solusi penyelesaian yang mungkin ada di sini: drupal.org/node/1070878#comment-5103914
Refineo

1
Berikut adalah patch inti Drupal 8 terkait untuk ini ( drupal.org/node/1308564 ).
Refineo

Jawaban:


1

Informasi apa yang Anda coba dapatkan ??

Di salah satu Jenis Konten saya, saya perlu mengambil ID simpul. Saya menemukan bahwa token untuk node ID saat ini adalah ini:

[current-page:url:args:last]

Diuji dan bekerja untuk saya !!


0

Ini bekerja untuk saya:

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.