web-dev-qa-db-ja.com

ノードのpathautoを使用してプログラムでエイリアスを作成する

ユーザーが特定のカテゴリに画像(ノードタイプ= my_image)を投稿できるサイトの開発。基本的に、私たちはカテゴリーを作成し、ユーザーはそれらに画像を送信します。

ユーザーにはメニューまたはURLの権限がありません。これをユーザーに許可します。ユーザーがカテゴリに属している場合、drupalフォームがdrupal_render_children()を使用してそのページに表示されます。

HOOK_node_insert(type == my_image)で、それらがどのカテゴリに属しているかを識別し、メニューに追加します。これに続いて、pathauto_create_aliasを使用して(タイトルに基づいて)エイリアスを生成しようとしていますが、これまでのところ失敗しています(HOOK_node_updateでエイリアスを更新できます)。

もちろん、ユーザーにmenuとurlの許可を与えると、エイリアスが作成されます。ユーザーがメニューシステムに直接アクセスしたり、エイリアスを設定したりすることは望ましくありません。

上記のシナリオでpathauto_create_aliasを使用する適切な方法を誰かが知っていますか?

3
cowboy_ela

基本的にpathautoモジュールを使用してコードでURLエイリアスを生成するには、次のようになります。

module_load_include('inc', 'pathauto'); // include the inc file for Pathauto module

/*
   pathauto_create_alias($module, $op, $source, $data, $type, $language)
   @param $module: Your module name
   @param $op: The operation (insert, update, return, bulkupdate)
   @param $source: Internal Drupal path (i.e.: node/1)
   @param $data: Addition data used to generate a pathalias, in this case the node object
   @param $type: Type of content that will be used to match a pattern, defined in the backend url alias patterns
   @param $language: If you have a multlingual website, you need to pass the language for which you want to generate the url alias
*/

pathauto_create_alias('your_module_name', 'insert', 'node/1', array('node' => $node), $node->type, $language->language); // Language is optional
5
Mike Vranckx