추가 정보를 포함하도록 모든 URL 변경


8

URL을 변경하는 데 사용할 수있는 후크는 무엇입니까? 예를 들어, 사용 가능한 경우 URL을 /en/node/1그대로 두지 않고 URL을 제공하는 언어 모듈이 있습니다 /node/1.

다른 기능을 손상시키지 않고 액세스 할 수있는 URL과 비슷한 것을 원합니다.

이것이 어떻게 이루어 집니까?

답변:


4

링크 URL을 작성할 때 수정하는 방법을 찾고 있습니까? 나는 최근에 이것을 조사하고 얼마나 많은 사냥이 필요한지 놀랐습니다.

내가 갔다 hook_url_outbound_alter( &$path, &$options, $original_path )는 드루팔 URL 시스템에 의해 작성되는 링크 URL을 변경할 수 있습니다한다.

도 있습니다 hook_url_inbound_alter( &$path, $original_path, $path_language )더 나은 경로의 특정의 langauge을 포함로 될 수있는 - 당신은 변경이 일어날 할 위치에 따라 달라집니다. 나는 개인적으로 hook_url_outbound_alter()신뢰할 수 있고 작업하기 쉽다는 것을 알았습니다. 작성되는 모든 적절한 URL을 변경하고 $ options를 사용하면 쿼리 문자열 (...? query = string & foo = bar) 및 해시 프랜지먼트 (...)를 안정적으로 추가하고 편집 할 수 있습니다 #someId).

$ path를 수정하면 URL href에 쓰여지는 실제 경로가 업데이트됩니다. 물론 이것은 모든 링크에서 실행되므로 수정하려는 링크인지 확인하여 시작해야합니다.

앨리어싱 전에 실행되므로 Drupal 기본값을 기반으로합니다. 분류 경로 만 수정하려는 경우 매우 간단한 두 가지 예를 제공하려면 다음을 수행하십시오.

function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
  if(strpos($original_path, 'taxonomy/term') === 0) {
    // do stuff
  }
}

및 / 또는 특정 페이지에서만 실행되도록하려면 (예 : 노드 편집 페이지) :

function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
  $current_path = explode("/", current_path() );
  if (count($current_path) >= 3 && $current_path[0] == "node" && $current_path[2] == "edit") {
    // do stuff
  }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.