我要重寫以下網址:如何重寫特定的URL?
- 節點/添加
- 節點/編輯 等
要像 - 內容/添加 - 內容/編輯
我也使用預填充模型,並且很想能夠重寫這個URL:
- 節點/添加/單畫廊圖像編輯[field_gallery_node_reference] [0] [NID] = 48
爲了像這樣:?
- 內容/添加/圖像n = 48
這可能嗎?如果是這樣,我是否需要一些Drupal模塊,或者我將不得不採取htaccess文件?
我要重寫以下網址:如何重寫特定的URL?
要像 - 內容/添加 - 內容/編輯
我也使用預填充模型,並且很想能夠重寫這個URL:
爲了像這樣:?
這可能嗎?如果是這樣,我是否需要一些Drupal模塊,或者我將不得不採取htaccess文件?
您可以使用hook_menu創建一個自定義模塊來實現這些回調,但這隻會爲這些操作創建額外的網址,而不會刪除舊的網址。
使用pathauto模塊,您可以爲您的網址創建別名。你可以設置很多規則,並且應該能夠很好地處理它。我不確定它與預填充模型的整合程度如何。但其餘的應該很容易。
看看功能custom_url_rewrite_inbound和custom_url_rewrite_outbound。這些不是模塊,而是放置在settings.php中的函數,它們與低級別的drupal的url映射接口。
這裏有幾個選項。
1)您可以使用pathauto模塊來重命名路徑。這些路徑在服務器級完全可用,但舊節點/ add和節點/%/編輯路徑仍然存在。
2)您可以製作一個自定義模塊,通過hook_menu實現路徑,將相應的代碼從node.module的hook_menu實現中複製出來。這也會在站點上留下舊節點/添加和節點/%/編輯路徑,但您可以使用hook_menu_alter從菜單數組中取消設置適當的路徑。
3)您可以使用Olav建議的custom_url_rewrite_inbound和custom_url_rewrite_outbound函數。
老實說,第一個選項通常是更好的,因爲它會更快,並且不會打開意想不到的錯誤。方法2一定會改變你想要的,但也會涉及到改變Drupal依賴的一些相當基本的路徑,這可能意味着你會發現很多調試會話,因爲你發現節點模塊的角落沒有被覆蓋你的改變。方法3我不是很熟悉,但它看起來像允許你像1中那樣重寫路徑,但是使它們更加真實,但是潛在的性能潛伏着潛在的問題,並且需要進行大量的調試。
不完全是我想要的。我想要在服務器級別更改URL。以便長鏈接可以使用其他語法來調用。那有意義嗎? – coderama 2009-08-18 18:28:52