2010-05-10 11 views
4

특정 콘텐츠 형식에 대해 노드 제목을 기반으로 별칭을 생성하도록 Pathauto를 구성했습니다. 문제는 Pathauto가 별칭을 생성하기 전에이 제목에서 약간의 변경을하고 싶다는 것입니다.Drupal에서 Pathauto에 전달 된 값을 변경하는 방법은 무엇입니까?

this post의 첫 번째 주석은 hook_token_values의 사용을 제안하지만 docs을 읽은 후에도 사용법을 이해할 수 없습니다. 내 테스트에서이 훅을 구현할 때 생성 된 별칭은 항상 "배열"이므로 뭔가 빠졌음을 의미합니다.

어떤 도움이 필요합니까? 감사.

+0

당신이 이해하지 못했던 부분에 대해 좀 더 구체적으로 설명해 주시겠습니까? –

답변

5

hook_token_list을 구현하지 않았을 수도 있습니다. 새 토큰을 제공하는 과정은 다음 두 단계로 이루어집니다.

  1. 제공 할 토큰을 선언하려면 구현을 hook_token_list으로 지정하십시오. 이것은 토큰의 이름 일 뿐이며 간단한 설명과 토큰이 적용될 객체 유형에 대한 정보 (예 : 노드, 사용자, 택 소노 미 ...)
  2. 실제로 내용을 생성하려면 hook_token_value을 구현하십시오. 토큰의 이것은 토큰이 서 있어야 할 내용으로 대체 될 때 호출됩니다.

토큰 모듈이 이미 제공 한 타이틀 토큰의 대체 버전을 제공하려는 경우 token_node.inc에서 관련 부분을 복사하고 관련 사례로 잘라내어 다른 모듈에서 사용할 수 :

/** 
* Implementation of hook_token_list(). 
*/ 
function yourModule_token_list($type = 'all') { 
    if ($type == 'node' || $type == 'all') { 
    $tokens['node']['yourModule-title'] = t('Node title (customized version by yourModule)'); 

    return $tokens; 
    } 
} 

이것은 단순히 yourModule 짧은 설명과 함께, yourModule-title라는 이름의 노드 객체에 대한 토큰을 제공하는 것을 말한다. 주요 작품은 다른 후크에서 수행됩니다 :

/** 
* Implementation of hook_token_values(). 
*/ 
function yourModule_token_values($type, $object = NULL, $options = array()) { 
    $values = array(); 
    switch ($type) { 
    case 'node': 
     $node = $object; 
     // TODO: Replace the check_plain() call with your own token value creation logic! 
     $values['yourModule-title'] = check_plain($node->title); 
     break; 
    } 

    return $values; 
} 

노드 객체에 대한 토큰이 필요할 때마다이이 문제의 노드가 사용자 토큰합니다 ($object 매개 변수로 전달되는으로 호출 될 것이라고 $type는 것 'user'가되고 $object은 사용자 개체가되고 다른 유형도 마찬가지입니다. 그것이하는 일은 토큰 이름을 키로하여 값의 배열을 작성하는 것입니다.이 토큰을 값으로 대체합니다. token_node.inc의 원래 코드는 check_plain()을 통해 제목을 실행하기 때문에 자신의 논리를 삽입 할 수 있습니다.

1

Drupal 7에서 토큰 기능이 코어로 이동되었습니다. 토큰은 hook_tokenshook_token_info 메서드로 구현됩니다. 사용 예제는 제공된 링크를 따라 가서 hook_tokens 및 hook_token_info & hellip을 구현하는 함수에 대한 링크를 찾습니다. 이 후크가 어떻게 작동하는지 이해하는 데 도움이되는 statistics_tokensstatistics_token_info 함수를 찾았습니다.

아마도이 훅은 & hellip 모듈에 의해 구현되어야 할 필요가 있습니다. 내 첫 번째 시도는 테마의 template.php에 테스트 기능을 떨어 뜨 렸으며, 아무 일도 일어나지 않았다. -p

관련 문제