Parametreleri belirteçlerle geçirme


10

Jetonlarla birlikte parametre göndermek mümkün müdür?

Mod1_info ve mod1_tokens tanımlayan bir modül var. Bir sayfaya% jetonu: mod1: testi girersem onunla değiştirilir <a href='test.html'></a>.

Aslında istediğim% token: mod1: test [değişken] girmek ve almaktır <a href='test.html'>variable</a>.

Mümkün mü?

Sahne arkasında, test.html birkaç dinamik parametre ile oluşturuluyor, bu yüzden aslında test.html? Param1 = foo & param2 = bar'a benziyor . İhtiyacım olan şey, herhangi bir sayfaya bir token eklemek ve bağlantı (bir resim, bazı metin veya her ikisi) olarak görünen belirtebilirsiniz bir kişi siteyi düzenlemek için bir yoludur.


1
Ne yazık ki, bunun mümkün olduğuna inanmıyorum. Öte yandan, kendime hiç ihtiyaç duymadığım için kullanım durumunu tam olarak anlamıyorum. Belki istediğinizi genişletirseniz, farklı bir öneri önerilebilir.
Letharion

Yanıtlar:


8

Drupal 7'yi kullanarak, modüller, düğüm: yazardan sonra jetonun bir kısmının bir kullanıcı jetonuna başvurduğu [düğüm: yazar: ad] benzeri jetonları kolayca işleyebilir. Drupal 6 için Token modülünden farklı olarak, Drupal 7'de belirteçleri işleyen kod, dinamik belirteçlerin oluşturulmasına izin verir. Bunun nedeni, Drupal 7'de belirteçleri uygulayan modüllerin yalnızca tanımladıkları belirteçlerin yerine herhangi bir belirteç yerine geçebilmesidir. Hook_tokens () içinde kullanılan normal döngü aşağıdaki gibidir.

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

Aşağıdaki kodu kullanarak, elde etmeye çalıştığınız şeyi elde edebilirsiniz. Jetonlar, tanımladığınızdan farklı bir biçime sahiptir. Kod test edilmedi.

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;
}

Jetonların değiştirilmesi o kadar spesifik ki, bunu yapan bir modül bulacağınızı sanmıyorum. Tek olasılığınız yazdığınız özel bir modüldür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.