2009-08-10 41 views
0

我有一個絕對不是表單的頁面,但我需要使用一些回調函數從外部源和顯示加載數據(例如校園及其他輔助功能信息)。Drupal模塊開發hook_menu()對於半靜態頁面

我需要的是一個登陸列表頁面(列出所有建築物)和一個'查看個人建築物'頁面。另外,我還有一個頁面,您可以在其中輸入學生證並查看測試程序信息。最後我有一個基本上是一個表格的頁面(我以前成功完成了這個頁面)。

現在,我HAD建設清單工作,但我做了一個小的改變,它停止工作!

目前我hook_menu()函數看起來如下:

<?php 
/** 
* Implementation of hook_menu() 
*/ 
function disability_menu() 
{ 
    $items = array(); 

    // Ignore me, shell 
    $items['quickreg'] = array(
     'title' => 'Quick Registration', 
     'description' => t(''), 

     'page callback' => 'drupal_get_form', 
     'page arguments' => array(), 
     'file' => 'disability.quickreg.view.inc', 

     'access arguments' => array('access quick registration system'), 

     'type' => MENU_SUGGESTED_ITEM, 
    ); 

    $items['tests/status'] = array(
     'title' => 'Test Status Results', 
     'description' => t('Check on the status of your tests'), 

     'page callback' => 'disability_view_testing_status', 
     'page arguments' => array(), 
     'file' => 'disability.tests.view.inc', 

     'access arguments' => array('access test check information'), 

     'type' => MENU_CALLBACK, 
    ); 

    $items['tests'] = array(
     'title' => 'Testing Services', 
     'description' => t('Check on the status of your tests'), 

     'page callback' => 'disability_view_testing', 
     'page arguments' => array(), 
     'file' => 'disability.tests.view.inc', 

     'access arguments' => array('access test check information'), 

     'type' => MENU_SUGGESTED_ITEM, 
    ); 

    $items['access/%building'] = array(
     'title' => 'Campus Accessibility Guide', 
     'description' => t('A summary list of detailed accessibliity information about each building on the A&M campus'), 

     'page callback' => 'disability_view_access', 
     'page arguments' => array(1), 
     'file' => 'disability.access.view.inc', 

     'access arguments' => array('access building access information'), 

     'type' => MENU_SUGGESTED_ITEM, 
    ); 

    return $items; 
} 

一些變化之前,我必須做出的菜單項「校園無障礙指南」會顯示正確(被啓用,當然後)。該/access網址將正常運行,顯示所有建築物的列表和/access/12345會正確顯示的ID#單個記錄現在12345

access/%building菜單項甚至沒有顯示出來,甚至發送URL /access到重定向循環(讓我覺得它傳遞這個ID將它發送到視圖特定函數,當ID不存在時重定向到/access)。

任何人都可以告訴我我做錯了什麼或我需要做什麼來支持2個主題頁:/access/access/%building url模式?

+1

你還有'building_load()'函數來填充'%building'嗎? – ceejayoz 2009-08-10 21:20:49

+0

@ceejayoz我沒有'building_load()'函數,因爲我只是在回調函數中加載它。如果我將它放到'%'或創建'building_load()'會更好嗎? – dcousineau 2009-08-10 21:57:44

回答

1

當你有一個你想要對url進行操作的函數時,你只能在url中使用%name而不是%。 Drupal在用戶和節點上遍地開展,這非常聰明,因爲只有一個地方需要代碼來加載用戶或節點,但它在很多地方都可以使用。在這種情況下,我敢打賭,製作一個函數來加載建築物有點矯枉過正。另一方面,這樣做的好處是,如果沒有找到任何對象,就可以進行404處理。最好的解決方案的確歸結於你如何處理不存在的建築物。你甚至可以讓你的'校園無障礙指南'功能處理404,這將使兩個選項大致相同。我會爲你做任何最簡單的事情。

+0

現在,當我將其更改爲'$ items ['access /%'] = // ...'它仍然不再顯示在菜單列表中... – dcousineau 2009-08-11 14:50:46

+0

沒關係,我添加了一個新的菜單條目,只是訪問(現在可以訪問和訪問/%指向它們各自的功能)。它現在有效! – dcousineau 2009-08-11 14:58:11