Lewati parameter dengan token

10

Apakah mungkin mengirim parameter bersama token?

Saya memiliki modul yang mendefinisikan mod1_info dan mod1_tokens. Jika saya memasukkan% token: mod1: test pada sebuah halaman, itu diganti dengan <a href='test.html'></a>.

Apa yang sebenarnya saya inginkan adalah memasukkan% token: mod1: test [variabel] dan dapatkan <a href='test.html'>variable</a>.

Apakah ini mungkin?

Di belakang layar, test.html sedang dibangun dengan beberapa parameter dinamis sehingga benar-benar mirip dengan test.html? Param1 = foo & param2 = bar . Yang saya butuhkan adalah cara seseorang mengedit situs untuk menyisipkan token pada halaman apa pun, dan dapat menentukan apa yang muncul sebagai tautan (gambar, beberapa teks, atau keduanya).

tidur-er
sumber
1
Sayangnya, saya tidak percaya ini mungkin. Di sisi lain, saya tidak begitu mengerti kasus penggunaan, karena saya sendiri tidak pernah membutuhkan ini. Mungkin jika Anda mengembangkan apa yang Anda inginkan, saran yang berbeda dapat disarankan.
Letharion

Jawaban:

8

Menggunakan Drupal 7, modul dapat dengan mudah menangani token yang mirip dengan [simpul: penulis: nama], di mana bagian token setelah simpul: penulis merujuk ke token pengguna. Berbeda dengan modul Token untuk Drupal 6, kode yang dalam Drupal 7 menangani token memungkinkan pembuatan token dinamis. Ini karena pada Drupal 7, modul yang menerapkan token dapat mengganti token apa pun, bukan hanya token yang mereka tetapkan. Loop normal yang digunakan dalam hook_tokens () adalah yang berikut.

foreach ($tokens as $name => $original) {
  // Check the value of $name, and generate the replacement that is assigned to
  // $replacements[$original].
}

Dengan menggunakan kode berikut, Anda bisa mendapatkan apa yang ingin Anda capai. Token memiliki format tertentu, yang berbeda dari yang Anda gambarkan. Kode belum diuji.

function mymodule_token_info() {
  $type = array(
    'name' => t('Anchors'), 
    'description' => t('Your description'), 
  );

  return array(
    'types' => array('anchor' => $type), 
  );
}

function mymodule_tokens($type, $tokens, array $data = array(), array $options = array()) {
  $replacements = array();
  $sanitize = !empty($options['sanitize']);

  if ($type == 'anchor') {
    foreach ($tokens as $name => $original) {
      list($file, $title) = explode(':', $name);
      if (!empty($title) && !empty($_GET[$title])) {
        $title = $_GET[$title];
      }
      else {
        $title = '';
      }

      $replacements[$original] = "<a href='$file.html'>$title</a>";
    }
  }

  return $replacements;
}

Penggantian token sangat spesifik sehingga saya tidak berpikir Anda akan menemukan modul yang melakukan itu. Satu-satunya kemungkinan Anda adalah modul khusus yang Anda tulis.

kiamlaluno
sumber