Как скрыть тип контента на странице добавления узла?
Мне нужен способ скрыть тип контента на странице добавления узла или, еще лучше, сделать так, чтобы два отдельных узла добавляли страницы, которые разделяют мои типы контента. Я нахожусь на Drupal 7 и у меня есть четыре разных типа контента. Я бы хотел, чтобы три из них были на странице добавления узла по умолчанию, а четвертый был отдельным. Как бы я это сделал? Спасибо
3 answers
Две возможности:
-
admin/structure/menu/manage/navigation
переместить/удалить пункт меню, который вам не нужен. - Самый чистый способ: используйте роли и разрешения. Если пользователь не может создать тип контента, ссылка не появится ни в одном меню.
Поместите это в пользовательский модуль:
function yourcustommodule_menu_alter(&$items) {
if (isset($items['node/add/your-content-type'])) {
$items['node/add/your-content-type']['type'] = MENU_DEFAULT_LOCAL_TASK;
}
}
ОБНОВЛЕНИЕ
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-add-content-navigation-menu-also-removes
Это небольшая ошибка, так что это может быть ненадежным способом сделать это. Лично я бы создал пользовательскую версию страницы node/add
в модуле, скопировав существующую и внеся свои конкретные изменения. Тогда я бы использовал hook_menu_alter
чтобы заставить node/add
перейти к моей версии.
Возможно, вы сможете заменить его представлением или панелью (со страницей Менеджер), но я этого не пробовал, и вы, вероятно, потеряете автоматизацию.