2013-07-25 1 views
2

대륙을 선택해야하는 다국어 웹 사이트를 만들어야합니다.drupal의 추가 경로 접두사 7

영어를 사용하는 동안 미국을 선택할 수 있지만 스페인어는 미국입니다. 프랑스어뿐만 아니라 영어 등에서도 사용할 수 있습니다.

drupal 7의 경로 접두어로 언어 감지를 설정했습니다. 따라서 내 URL은 domain.com/en/path-alias과 비슷합니다.

내 웹 사이트의 일부 컨텐츠는 일부 대륙에서 숨길 수 있지만 많은 컨텐츠는 동일하므로 다중 사이트를하고 싶지 않습니다.

는 그 domain.com/america/en/path-alias, domain.com/america/es/path-alias 또는 domain.com/europe/fr/path- 같은 URL을 사용하고자하는 별칭. 그렇게 할 해결책이 없습니다.

모듈 도메인 액세스는 멋지지만 정확히 경로 접두사를 원하는 동안 하위 도메인에서 작동하기 때문에 원하는 것은 아닙니다.

편집 : 좋아, drupal API에서 내 문제의 해결책을 발견했습니다. hook_url_outbound_alter

답변

0

당신 때문에 hook_url_inbound_alter(&$path, $original_path, $path_language)이 2 개 후크를 사용한다

이 두 개의 고리가 정확히 내가 hook_url_inbound_alter을 찾고 있었는지, 당신은 그것을 표시해야 어떤 경로를 드루팔에게, 그리고 ($original_path에서 제공받은 경로에서 예를 결정 : region/lang/path) 경로는 Drupal이 유효한 경로 (예 : lang/path)로 인식하고이를 $path으로 대체합니다. 지역/LANG 될 것

다음으로 우리는 우리의 사용자 지정 경로 형식을 포함하는 우리의 페이지에서 링크를해야합니다, 그래서 우리는 url('lang/path'))에 대한 (사용자 정의 경로 형식으로 생성 경로를 url()으로 생성 된 모든 시스템 경로 또는 별칭을 변환 할 hook_url_outbound_alter(&$path, &$options, $original_path)를 사용합니다/경로. $options 배열에서 우리는. 이것은 나를 위해 일한

0

을 경로 접두사 또는 경로 언어를 수정할 수 있지만 경로 별칭은 이제 작동하지 복용량.이 http://localhost/en/australia/node/376는해야 http://localhost/en/australia/hotels-resorts

function mymodule_url_inbound_alter(&$path, $original_path, $path_language){  
    $cluster = 'australia'; 
    $path = str_replace($cluster.'/','',$path);  
} 

function mymodule_url_outbound_alter(&$path, &$options, $original_path){ 
    $cluster = 'australia'; 
    $path = $cluster.'/'.($path); 
    $options['alias'] = true;  
}