如何在节点添加页面上隐藏内容类型?


11

我需要一种隐藏节点添加页面上的内容类型的方法,或者更好的方法是,使两个分开​​的节点添加页面来分隔我的内容类型。我在Drupal 7上,有四种不同的内容类型。我希望其中三个位于默认节点添加页面上,而第四个要分开。我该怎么做?谢谢

Answers:


11

两种可能性:

  • admin/structure/menu/manage/navigation 移动/删除您不需要的菜单项。
  • 最干净的方法:使用角色和权限。如果用户无法创建内容类型,则该链接将不会出现在任何菜单中。

感谢您的回答。第一种可能的方式是我将使用的方式,因为我仍然需要用户能够创建第四种内容类型的节点。我只需要将它与其他三个分开。
oobie11 2011年

好吧,只需将菜单项移至另一个菜单中或将其隐藏,然后使用相同的菜单链接(node / add / <your_content_type>)创建另一个菜单项
nourcy 2011年

这是最好的答案。
Christia

4

将其放在自定义模块中:

function yourcustommodule_menu_alter(&$items) {
  if (isset($items['node/add/your-content-type'])) {
    $items['node/add/your-content-type']['type'] = MENU_DEFAULT_LOCAL_TASK;
  }
}

2
MENU_DEFAULT_LOCAL_TASK将链接转换为选项卡。我改用了MENU_CALLBACK。
Freeman

3

更新

MENU_CALLBACK,如其他答案中所建议的那样,在这里对我不起作用。它们仍然显示在node/add页面上。

此代码有效:

function MYMODULE_menu_alter(&$items) {
  if (isset($items['node/add/your-content-type'])) {
    unset($items['node/add/your-content-type']);
  }
}

当然,它假定您要禁用(而不是隐藏)该node/add类型的链接。


原始答案

node/add页面由节点模块提供。根据这篇文章,您可以通过禁用“导航”菜单中的菜单项来执行所需的操作:http : //data.agaric.com/disabling-or-moving-nodeaddcontent-type-links-from-beneath-添加内容导航菜单也被删除

这是一个错误,所以它可能不是一种可靠的方法。就个人而言,我将node/add通过复制现有页面并进行特定修改来在模块中创建页面的自定义版本。然后,我会用hook_menu_alternode/add去我的版本。

您也许可以用视图或面板代替它(使用页面管理器),但是我还没有尝试过,您可能会失去自动化。


谢谢!node/add我要复制的页面在哪里?您如何建议打印出不同的内容类型?
oobie11 2011年

应该在node.pages.inc。如果您需要在创建其他类型时显示它们,并且没有静态列表,请在代码中进行操作。
wizonesolutions 2011年

自我跟进:我不喜欢4.5年前的回答。使用上述方法之一:)
wizonesolutions 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.