2012-08-06 55 views
0

我使用Drupal 6,並有我自己的節點,拉在我的自定義PHP頁面。網址是domain.com/blogs。我想使用乾淨的URL作爲參數。例如,domain.com/blogs/1將從數據庫中提取有關第一篇博文的信息。Drupal的PHP頁面,接受乾淨的URL參數

我已經試過:

domain.com/blogs/1和PHP代碼使用arg(0)但我從來沒有甚至可以因爲的Drupal Page Not Found錯誤出現運行代碼。

有什麼辦法讓Drupal知道domain.com/blogs之後的任何參數都被允許,並且爲/blogs加載節點也發送參數?

回答

1

別名node/1234blogs並不意味着你可以控制菜單項路由器的其餘部分。

舉例來說,如果你的非混淆節點路徑是「node/1234」,那麼你「擁有」剩下的參數。 即可以從node/1234/567從PHP訪問567這樣的:

<?php print arg(2); ?> 

如果你想「擁有」 /blogs URL的一部分,你必須使用hook_menu來定義它。正如你已經觸及php,我認爲最好的方式是製作模塊。 但是,您可以使用視圖或面板模塊。現在

<?php 
function MYMODULE_menu() { 
    $items = array(); 

    $items['blogs'] = array(
    'title' => 'Main Blogs page', 
    'page callback' => 'MYMODULE_page', 
    'access arguments' => array('access content'), 
    'type' => MENU_SUGGESTED_ITEM, 
); 
    $items['blogs/%'] = array(
    'page callback' => 'MYMODULE_blog_view', 
    'page arguments' => array(1), 
    'access arguments' => array('access content'), 
    'type' => MENU_CALLBACK, 
); 

    return $items; 
} 
function MYMODULE_blog_view($blog_id){ 
// $node = node_load($blog_id); 
// return print_r($node, TRUE); 
} 
?> 

,在MYMODULE_blog_view功能,你可以從ARG得到的參數(1)爲好。您也可以通過組合兩個菜單路由器項目在單個頁面中進行回叫,但我建議使用單獨的路由器項目。 (8月8日): 爲什麼我使用node_load($ blog_id)和其他評論垃圾的原因是假設你需要來自節點的部分(例如:你想使用節點ID參數來顯示一個View,或者類似的需要來自節點的特定數據的東西)。 但從來沒有允許用戶查看從node_load()加載的節點,因爲它就像上帝給予用戶所要求的任何東西。

對於節點,讓我來解釋一下有點噱頭。把它放在回調函數中。

$node = node_load($blog_id); 
    if ($node && $node->type == 'blog'){ 
    $_GET['q'] = 'node/' . $node->nid; 
    return menu_execute_active_handler('node/' . $node->nid, FALSE); 
    } 
    drupal_not_found(); // important! 

這將加載從博客ID(這是URL)的節點ID,檢查它是否在「博客」類型和設置菜單句柄到相關節點ID通路。 現在,當您訪問博客/ 123時,如果它是博客節點,您將看到node/123的內容。但它不是重定向。它不會像完全別名的URL一樣工作,但有時候會有幫助。

或者,您可以檢查用戶是否有權訪問node_access()中的節點。

+0

感謝您的帖子,我如何加載我的自定義PHP頁面,我已經在節點博客的主體部分/ 這將是該地區然後我可以根據arg(1) – 2012-08-07 18:16:51

+0

呈現頁面的外觀。我放入node_view(node_load($ nodeId)); 你推薦? – 2012-08-07 18:24:44

+0

請不要。這會打開一個很大的安全問題,用戶可以訪問任何節點。 查看某些解決方法的更新答案。謝謝。 – 2012-08-07 22:16:12

0

這裏的一些鏈接,您可以閱讀有關定義和發送次數參數 drupal.org/1

drupal.org/2

+0

我寧可不使用視圖,試圖做到這一點,沒有 – 2012-08-06 16:17:26