3
我試圖使用url_rewrite來解決paging
模塊的URL中的不友好參數。我希望將網址page-title.html?page=0,1
轉換爲page-title/page1.html
。Drupal:url_rewrite中的hook_url_inbound_alter:重寫查詢的URL部分
這裏是我的鉤:
function mymod_url_outbound_alter(&$path, &$options, $original_path) {
$localPath = $path . '?' . $options['query'];
dpm("_url_outbound_alter($localPath)");
if (preg_match('|(.+)\.html\?page=0%2C(\d+)|', $localPath, $matches)) {
$path = "${matches[1]}/page${matches[2]}.html";
unset($options['query']);
dpm("altering path to $path");
}
}
function mymod_url_inbound_alter(&$result, $path, $path_language) {
if (preg_match('|(.+)/page(\d+)\.html|', $path, $matches)) {
//$result = "${matches[1]}.html?page=0,${matches[2]}";
$result = "${matches[1]}.html";
//$_GET['q'] = "page=0,${matches[2]}";
$_GET['page'] = "0,${matches[2]}";
dpm("altering in-path to $result");
}
}
function mymod_boot() {}
是不可能在hook_url_inbound_alter添加查詢一部分?
- 如果我註釋掉 mymod_url_outbound_alter,它的工作原理, 機器人逗號我們URL編碼 - 好吧,這的確顯示友好的URL。
- 如果我同時啓用,則 頁面會進入無限重定向301 循環。
- 註釋掉的變體也 似乎不工作。
是的,我知道最好修復paging
以使用非查詢URL。但是這個模塊太複雜了,無法可靠地完成。 pagination
模塊缺乏對我的功能。
網址改變是否存在問題?我能做些什麼來使它工作?
我必須說,我有點糊塗了。你爲drupal-6標記了這個問題,然而hook_url_outbound_alter(http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_url_outbound_alter/7)自從Drupal 7以來一直存在另一方面,分頁模塊(http://drupal.org/project/paging)尚未被移植到Drupal 7,僅適用於Drupal 6及更早的版本。 – Oswald 2010-12-27 00:06:54
我使用url_alter模塊,以便具有向前兼容性。 – 2011-05-29 07:51:29