토큰으로 매개 변수 전달


10

토큰과 함께 매개 변수를 보낼 수 있습니까?

mod1_info 및 mod1_tokens를 정의하는 모듈이 있습니다. 페이지에 % token : mod1 : test를 입력하면로 바뀝니다 <a href='test.html'></a>.

내가 실제로 원하는 것은 % token : mod1 : test [variable]을 입력하고 얻는 것 <a href='test.html'>variable</a>입니다.

이것이 가능한가?

배후에서 test.html 은 몇 가지 동적 매개 변수로 작성되므로 실제로 test.html? param1 = foo & param2 = bar 와 유사 합니다 . 내가 필요한 것은 사이트를 편집하는 누군가가 모든 페이지에 토큰을 삽입하고 링크로 표시되는 것을 지정할 수있는 방법입니다 (이미지, 텍스트 또는 둘 다).


1
불행히도, 나는 이것이 가능하다고 생각하지 않습니다. 반면에, 나는 결코 이것을 필요로하지 않았기 때문에 유스 케이스를 이해하지 못한다. 원하는 것을 확장하면 다른 제안을 제안 할 수 있습니다.
Letharion

답변:


8

Drupal 7을 사용하면 모듈은 [node : author : name]과 유사한 토큰을 쉽게 처리 할 수 ​​있습니다. 여기서 node : author 뒤의 토큰 부분은 사용자 토큰을 나타냅니다. Drupal 6의 토큰 모듈과 달리 Drupal 7의 토큰을 처리하는 코드는 동적 토큰을 생성 할 수 있습니다. Drupal 7에서는 토큰을 구현하는 모듈이 정의한 토큰뿐만 아니라 모든 토큰을 대체 할 수 있기 때문입니다. hook_tokens ()에 사용되는 일반적인 루프 는 다음과 같습니다.

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

다음 코드를 사용하면 달성하려는 것을 얻을 수 있습니다. 토큰은 특정 형식을 가지고 있지만 설명하는 형식과 다릅니다. 코드는 테스트되지 않았습니다.

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

토큰 교체는 매우 구체적이므로 그렇게하는 모듈을 찾지 못할 것입니다. 유일하게 작성하는 것은 사용자 정의 모듈입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.