모듈에 의해 생성 된 사용자 정의 컨텐츠 유형이 있습니다. 노드를 만들 때 사용자 정의 컨텐츠 유형의 경로 별명을 설정하는 데 사용할 수있는 후크가 있습니까?
내 필드 중 하나는 영숫자 코드이며 경로에서 사용하고 싶습니다. 예 : 'event / myc0d3'
이 함수 ( path_set_alias )가 6에 존재하지만 7에 해당하는 것을 찾을 수 없다는 것을 알았습니다.
모듈에 의해 생성 된 사용자 정의 컨텐츠 유형이 있습니다. 노드를 만들 때 사용자 정의 컨텐츠 유형의 경로 별명을 설정하는 데 사용할 수있는 후크가 있습니까?
내 필드 중 하나는 영숫자 코드이며 경로에서 사용하고 싶습니다. 예 : 'event / myc0d3'
이 함수 ( path_set_alias )가 6에 존재하지만 7에 해당하는 것을 찾을 수 없다는 것을 알았습니다.
답변:
후크를 사용하는 대신 컨텐츠 유형 (at ) 당 별명이 생성되는 특정 패턴을 정의 할 수있는 Pathauto 모듈을 사용해야합니다 /admin/config/search/path/patterns
. 거기에서 대체 패턴을 사용하거나 직접 코딩 할 수 있습니다. 훨씬 깨끗한 접근 방식입니다.
그렇지 않으면 hook_node_presave($node)
별명을 직접 시도 하고 변경할 수 있습니다.
$node->path['pathauto'] = 0; // Required only if Pathauto is enabled.
$node->path['alias'] = "foo/bar";
또는 path_save(&$path)
아래와 같이 기능을 직접 사용하십시오 .
$path = array('source' => "node/$node->nid", 'alias' => 'foo/bar');
path_save($path);
이 함수는 이제 path_save ()로 불 립니다 . 예제는 path_taxonomy_term_insert () 를 참조하십시오 .
내 경우에는 hook_node_insert () 가 작동하지 않았으며 일부 검색에서는이 블로그 게시물을 찾았 습니다 . 동일한 방식으로 pre_post () 와 hook_insert () 를 구현 했습니다 .
/**
* Implements hook_insert().
*/
function mymodule_insert($node) {
// Set the URL alias
if (empty($node->path['alias'])) {
$node->path['alias'] = 'slug/' . $node->nid;
}
}
hook_insert()
구현하는 모듈이 컨텐츠 유형을 정의 할 때만 사용됩니다. 후크는 다른 모듈에서 정의 된 컨텐츠 유형의 노드에서 작동하는 데 사용할 수 없습니다.
hook_node_insert ()를 구현 하십시오 .