機能はとても 、彼らはすぐに代わり の後に実行されますことを、実行hook_nodeapi で重量を変更する方法はありますか?
モジュール自体は、フック実装の呼び出しのために呼び出される順序を決定する重み付けをしています。同じ重みを持つモジュールがアルファベット順にAFAIKという名前で呼び出されます。
明示的に(hook_installを経由して)インストール上のモジュールの重量を設定しない場合は、特定の他のモジュールの後に実行するためにあなたのモジュールのフックの実装が必要な場合、それは0
のデフォルトの重みを取得、例えば自動エイリアス設定モジュールあなたがhook_install実装したモジュールでは、このような何かを行う必要があります。
// Get the weight of the module you need to run after/before
$pathauto_weight = db_result(db_query("SELECT weight FROM {system} WHERE name = 'pathauto'"));
// Define your modules weight relative to that
$yourModule_weight = $pathauto_weight + 1;
// Set your modules weight
db_query("UPDATE {system} SET weight = %d WHERE name = 'yourModule'", $yourModule_weight);
がに注意:モジュールの重量は、フックの実装は他のすべての関係で呼び出されるモジュールの中すべて順序に影響を与えますモジュール!
私は単一のフックの実装の呼び出し順序に影響する方法を知らないので、特別な順序で実行する単一のフックの実装が必要な場合や、別の順序で実行する必要がある場合は終了しました異なるフック実装で異なる重み設定を可能にする1つまたは複数のサブモジュールを作成する。私はあなただけ、あなたがあなたのモジュールにこれらをベビーベッド可能性のURLを知りたい場合
if (!isset($node->pathauto_perform_alias) || $node->pathauto_perform_alias) {
$placeholders = pathauto_get_placeholders('node', $node);
$src = "node/$node->nid";
$alias = pathauto_create_alias('node', $op, $placeholders, $src, $node->nid, $node->type, $node->language);
}
に有用であり得る次の行を参照してください自動エイリアス設定モジュールモジュール内のコードを見てみると
いいえ問題を解決できません。重みをシステムテーブル内の他のすべての重みよりも高く設定した後でも、$ nodeオブジェクトのパス設定は、意味的に意味をなさない[path] => [pathauto_perform_alias] => 1を示していますとにかく私に。 – msumme