2012-11-13 115 views
1

我的僱主要求網站上的某些頁面具有兩頁功能。 這意味着某些默認內容正常顯示在node_view頁面上,但第二部分應該在單擊鏈接時顯示。Drupal節點2頁內容分割

這將是容易的,如果我能做到這一點在多個節點,但要求是所有的數據被存儲在一個節點,但跨兩頁顯示。

我砍死在一起,下面的代碼:

function mymodule_node_view($node, $view_mode, $langcode){ 

$path = current_path(); 
$path_alias = drupal_lookup_path('alias',$path); 

$links = array('test' => array('title'=>'my_link', 'query'=>'', 'href'=>"{$path_alias}/nextpage")); 

$node->content['my_module'] = array(
    '#theme' => 'links__node__mymodule', 
    '#links' => $links, 
    '#attributes' => array('class' => array('links', 'inline')), 
); 
} 

這將創建一個名爲my_link在我的內容區域的頂部超鏈接 - 這是偉大的。

的問題開始,當我點擊超鏈接。假如我是http://example.org/homepage我單擊超鏈接,我希望被重定向到http://example.org/homepage/nextpage。另外,我仍然想維護我所在的實際節點的視圖和編輯選項卡。但是,drupal正確地給了我一個「找不到頁面」的錯誤。

有趣的是,如果我用http://example.org/node/1,並參觀了http://example.org/node/1/nextpage,我沒有得到我上面discribed的問題,但該網址是描述性較差。

爲了解決這個問題,我相信我必須擴展hook_menu但我不知道如何解釋導致實際節點標題的任何數量的分類術語。所以,我無法預測,我會多少節點標題我/下一頁前,然後需要。但是,我想要仍然有它的父頁面的查看和編輯選項卡。

這是我所有的處女地,所以我希望我已經解釋的不夠好,它是有道理的足夠任何輸入/幫助...這可以理解。

感謝

UPDATE:

我發現下面的函數返回做整個節點的路徑完成分類的一個偉大的工作:

$path = current_path(); 
$path_alias = drupal_lookup_path('alias',$path); 

什麼我不知道是如何利用這hook_menu動態創建/下一頁我的節點。

請記住,我真的不希望/下一頁是完全獨立於原始的和實際的Drupal節點。當打開/下一頁我希望能夠訪問該視圖時,編輯該節點的其他選項卡。

所以,/下一頁有效地只是一個drupal節點頁面的擴展。

感謝您的輸入

+0

第二頁的內容來自哪裏?它是一個節點/字段/別的東西嗎? –

+0

第二頁的內容可能來自「cck」字段,或者它可以是網絡表格節點的一部分 – sisko

回答

1

我會檢查node_menu()函數來得到它是如何實現的一些參考。

不確定您的分類要求,所以這可能是不夠的,但我會去我的理解。

但是從我的頭頂,我會去這樣的事情:

function mymodule_menu() { 
    $items['node/%node/nextpage'] = array(
    'title' => 'Next page', 
    'type' => MENU_LOCAL_TASK, // Makes it a tab on node/%node-pages 
    'page callback' => 'mymodule_node_page_view', // Your page display function 
    'page arguments' => array(1), // First will be a node object, second will be whatever value is passed in the url 
    // You should rip access callback and access arguments from node_menu() 
); 

    return $items; 
} 

這應該這樣做你所要求的。

這也可以,更容易和明確推薦使用面板/頁面(另請參閱混沌工具)或可以說是視圖這樣做,因爲它們完全有能力處理所有這些,而且通常是一種更好的方式來處理Drupal的優勢,而不是自定義代碼。

更新

爲了澄清我已經簡化了菜單鉤,你應該能夠使用下面的頁面瀏覽功能。我仍然相信你會使用面板和覆蓋node_view等來制定更好的解決方案。

菜單鉤子中的MENU_LOCAL_TASK部分應該將其與View和Edit一起變成另一個選項卡。

function mymodule_node_page_view($node) { 
    die("It works: ".$node->title); 
} 

希望這會更有幫助。

+0

謝謝您的迴應。我添加到我的原始文章 - 我發現了一個drupal函數,它返回完整的分類法的完整節點路徑。請介意根據我更新的帖子修改您的代碼嗎? – sisko

+0

更新我的帖子,希望澄清它如何與您的需求。 我不是100%確定它是如何與路徑別名交互的,這是您的額外問題。試試看看會是我的建議。 – jbn

+0

作爲一個禮貌的更新你的廣泛答案,我發現我的計劃將分類法等納入到我的「下一頁」解決方案中並沒有奏效。我最終決定在編輯,開發等選項卡中沒有使用完整的分類標準和內容標題網址,而只是使用節點/編輯類型解決方案:-) – sisko

1

有一個快速的方法來做到這一點。使用views module

在字段部分選擇您想要查看的字段。並在參數中添加nid

然後將鏈接添加到您已創建的節點視圖。

最終結果http://mysite/views-page/[nid]

希望這有助於...穆罕默德。