Можно ли отключить тип контента?


8

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

Я не мог найти вариант для этого. Спасибо.

Ответы:


16
  • Вы не можете отключить тип контента, но вы можете запретить (почти) всем создавать, просматривать, изменять и т. Д. Статья с соответствующей настройкой разрешений.
  • Если на сайте нет статей, удалить их можно на 100%. (Интересно проверить, как профиль по умолчанию и минимальный профиль установки предоставляют разные наборы типов контента. Article - это просто «стандартный» тип контента, который ни в коем случае не должен иметься.)

7

Для людей, не знакомых с Drupal, вы бы запретили людям использовать тип контента, перейдя (в 7) People > Permissions (url: admin/people/permissions)

Затем под узлом снимите флажок Article: Create new contentразрешения для выбранных ролей. :)

Очевидно, вы бы изменили Articleна соответствующий тип контента.


Можете ли вы вспомнить какую-либо причину, по которой пользователь все еще сможет получить доступ к ссылке «создать» для определенного типа контента, даже если его роль запрещает создание этого типа контента? Я клонировал свою роль администратора и создал роль «admin-lite», которая должна иметь доступ только для создания нескольких типов контента на моем сайте. Однако эти пользователи с правами администратора могут создавать все различные типы контента ... Я пытался пересоздать разрешения, но это тоже не помогло.
hockey2112

2
Я выяснил свою проблему ... для роли все еще было разрешено «Обойти контроль доступа к содержимому». Я отключил это, и это исправило мою проблему.
hockey2112

5

В вашем .install файле:

function YOURMODULE_disable() {

  // Disable content type MyContentType
  disable_content_type('MyContentType');


  //Activation message
  drupal_set_message(t('MyContentType is now disabled on your site.'));
}

и теперь в вашем файле .module или .inc:

function disable_content_type($type) {
  $type_info = node_type_load($type);
  $type_info->module = 'node';
  $type_info->custom = 1;
  $type_info->modified = 1;
  $type_info->locked = 0;
  $type_info->disabled = 1;
  node_type_save($type_info);
}

Эффективно ли это делает тип узла и любое содержимое этого типа невидимым? Мой вариант использования - это опция в модуле, которая требует новых типов контента, но только если выбрана эта опция. Я не хочу, чтобы они видели тип контента, если они не выбирают эту опцию, но я также хочу сохранить целостность данных, если они включат / выключат / включат / и т. Д.
UnsettlingTrend

@ UnsettlingTrend да. У меня была похожая потребность, и я попробовал этот вариант. Мне также пришлось создать функцию _enable () в моем файле .install с именем enable_content_type ('MyContentType'). В файле .module (или .inc) $ type_info-> disabled установлено на 0. Таким образом, когда модуль включен, тип содержимого доступен. Когда модуль отключен, тип содержимого недоступен. Если вам нужен доступ к контенту (например, в качестве администратора), вы можете рассмотреть другой вариант, который изменяет разрешения для типа контента. Это был маршрут, которым я закончил.
шо


1

Существуют некоторые типы контента, которые можно «отключить» за счет отключения модуля, который его использует. Например: типы контента опроса, форума, книги и блога исчезают из доступных типов при отключении связанных модулей. Основная страница и статья являются двумя исключениями.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.