Passa i parametri con i token


10

È possibile inviare parametri insieme a token?

Ho un modulo che definisce i mod1_info e i mod1_tokens. Se inserisco% token: mod1: test su una pagina, viene sostituito con <a href='test.html'></a>.

Quello che voglio effettivamente è inserire% token: mod1: test [variabile] e ottenere <a href='test.html'>variable</a>.

È possibile?

Dietro le quinte, test.html è stato creato con alcuni parametri dinamici, quindi in realtà sembra simile a test.html? Param1 = foo & param2 = bar . Ciò di cui ho bisogno è un modo per qualcuno che modifica il sito di inserire un token in qualsiasi pagina ed essere in grado di specificare ciò che appare come link (un'immagine, un testo o entrambi).


1
Sfortunatamente, non credo sia possibile. D'altra parte, non capisco bene il caso d'uso, poiché non ne ho mai avuto bisogno. Forse se ti espandi su ciò che desideri, può essere suggerito un suggerimento diverso.
Letharion,

Risposte:


8

Usando Drupal 7, i moduli possono facilmente gestire token simili a [nodo: autore: nome], dove la parte del token dopo nodo: autore si riferisce a un token utente. A differenza del modulo token per Drupal 6, il codice che in Drupal 7 gestisce i token consente la creazione di token dinamici. Questo perché su Drupal 7, i moduli che implementano i token possono sostituire qualsiasi token, non solo i token che hanno definito. Il ciclo normale usato in hook_tokens () è il seguente.

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

Utilizzando il seguente codice, è possibile ottenere ciò che si sta tentando di ottenere. I token hanno un formato specifico, che è diverso da quello che stai descrivendo, comunque. Il codice non è stato testato.

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

La sostituzione dei token è così specifica che non credo che troverai un modulo che lo faccia. La tua unica possibilità è un modulo personalizzato che scrivi.

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.