モジュールによって作成されたカスタムコンテンツタイプがあります。ノードの作成時にカスタムコンテンツタイプのパスエイリアスを設定するために使用できるフックはありますか?
私のフィールドの1つは英数字コードであり、パスでそれを使用したいと思います。例: 'event/myc0d3'
この関数( path_set_alias )が6に存在することに気づきましたが、7に相当するものを見つけることができません。どこで呼び出すかわかりません。
hook_node_insert() は私の場合機能しませんでした、そしていくつかの検索で私はこれを思いつきました ブログ投稿 。 hook_insert() を同じ方法で実装しました。
/**
* Implements hook_insert().
*/
function mymodule_insert($node) {
// Set the URL alias
if (empty($node->path['alias'])) {
$node->path['alias'] = 'slug/' . $node->nid;
}
}
フックを使用する代わりに、コンテンツタイプごとにエイリアスを生成する特定のパターンを定義できる 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() を実装します。