2009-08-18 79 views
0

我要重寫以下網址:如何重寫特定的URL?

  • 節點/添加
  • 節點/編輯 等

要像 - 內容/添加 - 內容/編輯

我也使用預填充模型,並且很想能夠重寫這個URL:

  • 節點/添加/單畫廊圖像編輯[field_gallery_node_reference] [0] [NID] = 48

爲了像這樣:?

  • 內容/添加/圖像n = 48

這可能嗎?如果是這樣,我是否需要一些Drupal模塊,或者我將不得不採取htaccess文件?

回答

0

您可以使用hook_menu創建一個自定義模塊來實現這些回調,但這隻會爲這些操作創建額外的網址,而不會刪除舊的網址。

5

使用pathauto模塊,您可以爲您的網址創建別名。你可以設置很多規則,並且應該能夠很好地處理它。我不確定它與預填充模型的整合程度如何。但其餘的應該很容易。

+0

不完全是我想要的。我想要在服務器級別更改URL。以便長鏈接可以使用其他語法來調用。那有意義嗎? – coderama 2009-08-18 18:28:52

1

這裏有幾個選項。

1)您可以使用pathauto模塊來重命名路徑。這些路徑在服務器級完全可用,但舊節點/ add和節點/%/編輯路徑仍然存在。

2)您可以製作一個自定義模塊,通過hook_menu實現路徑,將相應的代碼從node.module的hook_menu實現中複製出來。這也會在站點上留下舊節點/添加和節點/%/編輯路徑,但您可以使用hook_menu_alter從菜單數組中取消設置適當的路徑。

3)您可以使用Olav建議的custom_url_rewrite_inboundcustom_url_rewrite_outbound函數。

老實說,第一個選項通常是更好的,因爲它會更快,並且不會打開意想不到的錯誤。方法2一定會改變你想要的,但也會涉及到改變Drupal依賴的一些相當基本的路徑,這可能意味着你會發現很多調試會話,因爲你發現節點模塊的角落沒有被覆蓋你的改變。方法3我不是很熟悉,但它看起來像允許你像1中那樣重寫路徑,但是使它們更加真實,但是潛在的性能潛伏着潛在的問題,並且需要進行大量的調試。