Drupal模块开发hook_menu()用于半静态页面

时间:2009-08-10 21:06:41

标签: php drupal menu

我有一个绝对不是表单的页面,但是我需要使用一些回调函数来加载来自外部源和显示的数据(例如校园内的建筑物列表及其可访问性信息)。

我需要的是登陆列表页面(列出所有建筑物)和“查看单个建筑物”页面。此外,我有一个页面,您可以在其中输入您的学生ID并查看有关测试程序的信息。最后我有一个基本上是一个表单的页面(我在过去成功之前已经完成了)。

现在,我 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菜单条目甚至没有显示,甚至将网址/access发送到重定向循环中(让我认为它正在传递某些内容以获取ID将其发送到视图特定功能,当ID不存在时重定向到/access

任何人都可以告诉我我做错了什么或我需要做些什么来支持2个主题页面:/access/access/%building网址模式?

1 个答案:

答案 0 :(得分:1)

当您拥有要对网址执行操作的功能时,您应该只在网址中使用%name而不是%。 Drupal在用户和节点的所有地方都做到这一点,这非常聪明,因为你只有一个地方需要有代码来加载用户或节点,但它在很多地方都被使用了。在这种情况下,我打赌制作一个加载建筑物的功能有点过分。另一方面,如果没有找到对象,那么这样做的好处是,您可以获得404处理。最好的解决方案实际上取决于您希望如何处理不存在的建筑物。您甚至可以使“校园无障碍指南”功能处理404,这将使两个选项或多或少相等。我会选择最容易做到的事情。