web-dev-qa-db-ja.com

Drupal 6検索結果のURLにスペースの代わりに "-"を使用する方法は?

Drupal 6の検索結果のURLの例は次のとおりです。

http://www.site.com/search/node/Search for something

Drupal 6検索結果のURLを使用する方法-スペースの代わりに? (以下は例です):

http://www.site.com/search/node/Search-for-something
1
user751

Settings.phpに関数 custom_url_rewrite_inbound()custom_url_rewrite_outbound() を追加できます。

custom_url_rewrite_outbound()は任意のモジュールから出力されるURLを書き換え、custom_url_rewrite_inbound()はDrupalに要求されているURLを書き換えます。

これは、custom_url_rewrite_outbound()のドキュメントで使用されているサンプルコードです。

_function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
  global $user;

  // Change all 'node' to 'article'.
  if (preg_match('|^node(/.*)|', $path, $matches)) {
    $path = 'article' . $matches[1];
  }
  // Create a path called 'e' which lands the user on her profile edit page.
  if ($path == 'user/' . $user->uid . '/edit') {
    $path = 'e';
  }
}
_

あなたの場合、コードは次のようになります。

_function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
  if (preg_match('|^search(/[^/]+/(.+))|', $path, $matches)) {
    $path = 'search/' . $matches[1] . str_replace(' ', '-', $matches[2]);
  }
}
_

custom_url_rewrite_inbound()は、正反対のことを行う必要があります。
私が書いたコードは、_-_が検索文字列に含まれている場合を考慮していません。コードはその場合を考慮する必要があります。たとえば、すでに存在する別の_-_を追加します。反対の操作を行う場合、コードは最初に単一の_-_をスペースで置き換え、次に、それらの文字がさらに並んでいる_-_を削除する必要があります。

0
kiamlaluno