2010-11-02 114 views
3

我正在创建一个让您的用户添加提要的模块。 所以我想我的代码提供可以在主题层覆盖的选项卡。使用标签创建drupal 6模块

我想这可能与hook_menu来完成:

$items['tab_add_feed'] = array(
    'title' => 'Add Feed', 
    'page callback' => 'xml_parser_add_feed', 
    'access callback' => 'user_access', 
    'access arguments' => array('manage own feeds'), 
    'type' => MENU_LOCAL_TASK, 
); 

像上面。 但我在网站的正面使用它。

如何在页面顶部添加制表符或链接drupal方式?

//编辑

有没有标签存在的那一刻,也许我必须让他们看到?

通过将<a href="xml_parser/add_feed">add feed</a>添加到主页面回调函数来修复它 但是,这是丑陋的,硬编码的,而不是主题性的。等待更好的解决方案。

//编辑

这是我使用的代码现在

function xml_parser_menu() { 
    $items = array(); 

    $items['xml_parser'] = array(
      'path' => 'xml_parser', 
      'title' => t('Feed'), 
      'description' => t('Add/edit feeds'), 
      'page callback' => 'xml_parser_manage_overview', 
      'access callback' => 'user_access', // get user access 
      'access arguments' => array('manage own feeds'), // check user if premission is set 
      'type' => MENU_NORMAL_ITEM, 
      'menu_name' => 'primary-links', // add to primary menu 
    ); 

    $items['xml_parser/add_feed'] = array(
      'path' => 'xml_parser/add_feed', 
      'title' => 'Add Feed', 
      'page callback' => 'xml_parser_add_feed', 
      'access callback' => 'user_access', 
      'access arguments' => array('manage own feeds'), 
      //'access' => user_access('maintain own subscriptions'), 
      'type' => MENU_LOCAL_TASK, 
    ); 
    return $items; 
} 
+1

在您的代码中存在访问参数错误。这需要数组的值; 'access arguments'=> array('manage own feeds'), – Bladedu 2010-11-02 14:07:04

+0

thnx,我现在编辑了代码 – FLY 2010-11-03 09:41:58

回答

2

我认为该项目的名称会像“用户/%/ add_feed”,与参数%是用户标识。另外,访问回调拼写错误,应该是user_access。这应该在用户个人资料页面上为用户创建一个标签。您也可以执行node /%/ add_feed将选项卡添加到节点。

在开发这个模块中,你会发现它很有用也用这个:

function mymodule_init() { 
    cache_clear_all(); 
    menu_router_build(); 
} 

直到你的菜单直。

如果您只想添加一个任意选项卡到页面来添加一个提要,它可能是一个自主菜单或主题链接。我需要更多地了解您尝试提供的Feed的上下文以及用户如何订阅。

+0

我不想将标签添加到用户或节点页面。我想添加一个标签到'我的模块页面'。我也从我的问题中删除了错字 – FLY 2010-11-03 09:57:38

+0

哦,那么你需要更多的菜单项。一个用于定义模块的路径,然后是出现在本地任务上的选项卡。 – Kevin 2010-11-03 13:24:01

+0

我的意思是说,为了有选项卡,它们必须嵌套在父项下。我不认为你可以拥有根路径并将其作为本地任务。 – Kevin 2010-11-03 13:56:34

0

您应该可以将标签添加到首页。请记住,您网站的首页并不是真的“/”,默认情况下它是“/ node”(除非您更改了它)。

我只是猜测,因为我没有尝试这样做,但你的代码应该工作,如果你改变你的标签在$项目node/tab_add_feed的关键。

如果你还有别的东西作为你的头版(即一个视图或面板),这将不适用。

+0

所以我改变了键和路径(这是真的一样吗?)这是说它是一个父项的孩子的方式吗?仍然不起作用 – FLY 2010-11-05 13:18:40