Drupal 6の検索結果のURLの例は次のとおりです。
http://www.site.com/search/node/Search for something
Drupal 6検索結果のURLを使用する方法-
スペースの代わりに? (以下は例です):
http://www.site.com/search/node/Search-for-something
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()
は、正反対のことを行う必要があります。
私が書いたコードは、_-
_が検索文字列に含まれている場合を考慮していません。コードはその場合を考慮する必要があります。たとえば、すでに存在する別の_-
_を追加します。反対の操作を行う場合、コードは最初に単一の_-
_をスペースで置き換え、次に、それらの文字がさらに並んでいる_-
_を削除する必要があります。