2010-07-07 80 views
1

我有一個網站,Drupal的管理內容,但其他應用程序處理電子商務(我的客戶犯規想改變自己的電子商務)如何使用通配符在Drupal

我不喜歡有電子商務看起來與其他網站看起來不一樣,所以我在主體中創建了一個帶有php代碼的drupal Page節點,只需包含外部應用程序並對其進行初始化即可。

它運作良好,但問題是其他環節的電子商務產生:

http://example.com/shop #The Page node i've created, this work 
http://example.com/shop/catalog/fruit/ #here comes the trouble! 

外部應用程序通過自行處理的URL,所以我需要的是告訴Drupal的重定向所有網址與shop開始他shop頁節點...像

http://example.com/shop/* => load http://example.com/shop 

什麼是做到這一點的最佳做法?

回答

1

經過googlin後,我發現Drupal custom_url_rewrite_inbound正是我所需要的。

我在/sites/default/settings.php插入功能:

function custom_url_rewrite_inbound(&$result, $path, $path_language) { 
    if(preg_match("/^shop(\/)/", $path, $matches)) { 
    $result = 'node/XX'; //XX is the ID of my Page Node with the ecommerce code. 
    } 
} 

它的工作原理就像一個魅力!

1

如果你創建一個模塊而不是一個節點,這將是很容易的。

使用hook_menu()相匹配的URL字符串

function example_menu() { 
    $menu = array() 
    $menu['shop'] = array(
    'page callback' = 'example_callback'; 
) 
} 

function example_callback() { 
    // use arg() to get arguments. 
    return shop_php(); 
} 

創建具有鉤菜單回調允許你打電話給你自己的代碼,由回調返回的值將顯示在頁面中。當drupal看到一個匹配shop *的URL時,它會調用函數example_callback。在這個函數中,你可以把你當前擁有的代碼放在頁面節點中。並返回您希望在頁面中顯示的內容。

+0

我不明白這將如何幫助我,你能提供更多的細節? 我不需要只是加載drupal菜單,但整個頁面(塊,視圖,菜單等)與外部內容。 – Strae 2010-07-07 08:06:27

+0

已更新回答 – 2010-07-07 08:37:06

+0

對不起,我不想爲此創建一個模塊。 看看我自己的答案。 – Strae 2010-07-08 19:55:32