如何在MENU_CALLBACK drupal中挂钩CCK自定义内容类型

时间:2011-08-05 17:16:02

标签: drupal

这是针对DRUPAL忍者的:

  1. 我正在创建一个名为testmodule的自定义模块的menu_hook;
  2. 我想调用一个MENU_CALLBACK并返回我创建的名为“VideoNodes”的自定义内容类型的加载CCK对象
  3. 示例:

     $items['save_video_data/%my_custom_cck_type/%'] = array(
            'type' => MENU_CALLBACK,
            'page callback' => 'save_data_to_db',
            'access arguments' => array('Save Data to my_custom_cck_type'),
            'page arguments' => array(2),
            'type' => MENU_CALLBACK,
            'title' => 'Save a Data!'
            );
    

    现在,通过上面的代码,我的理解是我告诉drupal加载my_custom_cck_type并使用array(2)位置(我的参数)作为节点的id字段在数据库中找到它。

    我也明白,我需要创建一个my_custom_cck_type_load()函数。

    问题:

    my_custom_cck_type_load()中的内容是什么?如何将所有与CCK类型关联的自定义字段抓取到返回的对象中?或者drupal为我做这个吗?

1 个答案:

答案 0 :(得分:0)

我将使用node_load作为示例。开箱即用Drupal的菜单系统将在诸如。

之类的路径上加载节点
node/1/view
node/2/view
node/3/view

(注意:路径的“/ view”部分经常被隐藏,因为它是默认选项卡)

执行此操作的菜单项设置如下所示:

$items['node/%node/view'] = array(
  'type' => MENU_DEFAULT_LOCAL_TASK,
  'title' => 'blabla',
  'page callback' => 'node_view',
  'page arguments' => array(1)
  /* more stuff */
);

在实际路径中,%节点由数字(节点的NID)替换。这将导致菜单使用该数字作为参数触发node_load。我们还使用%node作为node_view回调的页面参数。回调接收的参数将是完全加载的节点对象。