すべてのURLを変更して追加情報を含める


8

URLを変更するために利用できるフックは何ですか?たとえば、有効にする/en/node/1と、のままにするのではなくなどのURLを提供する言語モジュールがあります/node/1

他の機能を損なうことなくアクセスできるように、URLに同様のものが必要です。

これはどのように達成されますか?

回答:


4

それで、あなたはそれが書かれているようにリンクURLを修正する方法を探していますか?私は最近これを調べて、どれだけの狩猟が必要であるかに驚きました。

私はhook_url_outbound_alter( &$path, &$options, $original_path )、Drupal URLシステムによって書き込まれているリンクURLを変更できるようにしました。

またhook_url_inbound_alter( &$path, $original_path, $path_language )、パスの特定の言語が含まれているため、より適切な場合があります。変更を行う場所によって異なります。私は個人的にhook_url_outbound_alter()信頼性が高く、操作が簡単であると思います-書き込まれるときにすべての適切なURLを変更し、$ optionsを使用して、クエリ文字列(...?query = string&foo = bar)とハッシュフラグメント(... #someId)。

$ pathを変更すると、URL hrefに書き込まれる実際のパスが更新されます。もちろん、これはすべてのリンクで実行されるため、変更するリンクであることを確認することから始めます。

エイリアスの前に実行されるため、Drupalのデフォルトに基づいています。分類パスのみを変更する場合、2つの非常に単純な例を示します。

function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
  if(strpos($original_path, 'taxonomy/term') === 0) {
    // do stuff
  }
}

または、ノード編集ページなど、特定のページでのみ実行する場合:

function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
  $current_path = explode("/", current_path() );
  if (count($current_path) >= 3 && $current_path[0] == "node" && $current_path[2] == "edit") {
    // do stuff
  }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.