Как скрыть тип контента на странице добавления узла?

11

Мне нужен способ скрыть тип контента на странице добавления узла, или, что еще лучше, сделать два отдельных страницы добавления узла, которые разделяют мои типы контента. Я нахожусь на Drupal 7 и имею четыре различных типа контента. Я бы хотел, чтобы три из них были на странице добавления узла по умолчанию, а четвертый - на отдельной. Как бы я это сделал? Спасибо

oobie11
источник

Ответы:

11

Две возможности:

  • admin/structure/menu/manage/navigation переместить / удалить пункт меню, который вы не хотите.
  • Самый чистый способ: использовать роли и разрешения. Если пользователь не может создать тип контента, ссылка не появится ни в одном меню.
nourcy
источник
Спасибо за Ваш ответ. Ваш первый возможный способ - тот, который я бы использовал, потому что мне все еще нужны пользователи, чтобы иметь возможность создавать узлы моего четвертого типа контента. Мне просто нужно отделить его от остальных трех.
oobie11
Хорошо, просто переместите пункт меню в другое меню или скройте его и создайте еще один элемент по этой же ссылке меню (node ​​/ add / <your_content_type>)
nourcy
Это лучший ответ.
Кристия
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.
Фримен
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Страница обеспечивается модулем Node. Вы можете сделать то, что вы хотите, отключив пункт меню в меню навигации, согласно этому посту: http://data.agaric.com/disabling-or-moving-nodeaddcontent-type-links-from-beneath- надстройка контент-навигация-меню также-удаляет

Это немного ошибка, поэтому это может быть не надежным способом сделать это. Лично я бы создал пользовательскую версию node/addстраницы в модуле, скопировав существующую и сделав свои конкретные изменения. Тогда я бы использовал, hook_menu_alterчтобы node/addперейти к моей версии.

Вы могли бы заменить его видом или панелью вместо этого (с Page Manager), но я не пробовал этого, и вы, вероятно, потеряете автоматизацию.

wizonesolutions
источник
Спасибо! Где находится node/addстраница, которую я могу скопировать? И как бы вы предложили распечатать различные типы контента?
oobie11
Это должно быть в node.pages.inc. Если вам нужно, чтобы другие типы отображались по мере их создания и у вас нет статического списка, сделайте это в коде.
wizonesolutions
Самопроверка: мне не нравится мой собственный ответ 4,5 года назад. Используйте один из вышеперечисленных :)
wizonesolutions