it-swarm.dev

노드가 생성 될 때 프로그래밍 방식으로 경로 별칭 생성

모듈에 의해 생성 된 사용자 정의 컨텐츠 유형이 있습니다. 노드를 만들 때 사용자 정의 컨텐츠 유형의 경로 별명을 설정하는 데 사용할 수있는 후크가 있습니까?

내 필드 중 하나는 영숫자 코드이며 경로에서 사용하고 싶습니다. 예 : 'event/myc0d3'

나는이 함수 ( path_set_alias )가 6에 존재하지만 7에 해당하는 것을 찾을 수 없다는 것을 알았습니다.

8
cbaigorri

hook_node_insert () 제 경우에는 작동하지 않았으며 일부 검색에서는이 블로그 게시물 을 찾았습니다. hook_insert () 같은 방식으로 presto를 구현했습니다.

/**
 * Implements hook_insert().
 */
function mymodule_insert($node) {
    // Set the URL alias
    if (empty($node->path['alias'])) {
        $node->path['alias'] = 'slug/' . $node->nid;
    }
}
9
cbaigorri

후크를 사용하는 대신 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);
10
kenorb

함수는 이제 path_save () 로 불립니다. 예는 path_taxonomy_term_insert () 를 참조하십시오.

9
Berdir

hook_node_insert () 를 구현하십시오.

0
Oswald