Как отключить опции «продвигать на первую страницу» и «закрепить»?

14

Два возможных метода, которые я исследовал:

Используйте hook_form_alter для отмены обеих опций в формах редактирования узла. Но на главной странице содержимого администратора параметры по-прежнему отображаются в раскрывающемся меню «Параметры обновления».

Используйте модуль опций переопределения узлов . Это обеспечивает детальный контроль, но означает отключение разрешения «Администрирование содержимого». Пользователи тогда вообще не смогут видеть «Параметры обновления», которые им все еще нужны для массовой публикации, удаления и т. Д.

Пушка
источник

Ответы:

16

Есть 3 места, где можно увидеть эти варианты:

  • в admin / structure / types / manage / article, для типа контента "Article"

    Скриншот

  • на узле / 2 / edit, для узла с идентификатором, равным 2

    Скриншот

  • на admin / content, между "опциями обновления"

    Скриншот

Если вам нужно удалить параметры с этих страниц настроек / административных страниц, то вам нужно изменить следующие конструкторы форм:

node_admin_nodes()является конструктором форм для обзора администрирования узла в admin / content, который включает в себя поле «Параметры обновления», которое позволяет пользователям с соответствующими правами продвигать / понижать уровень узла с главной страницы и делать узел липким. В этом поле перечислены все операции узла, реализованные модулями; в списке операций , полученных с $operations = module_invoke_all('node_operations'), эти операции представлены из $operations['promote'], $operations['demote'], $operations['sticky'], и $operations['unsticky'].

киамлалуно
источник
13

Вот пользовательский модуль, который я написал для Drupal 7, который удаляет «продвижение на первую страницу» и «закрепление вверху списков» в формах добавления / редактирования узлов, форм добавления / редактирования типов контента и выпадающего меню admin / content. Этот модуль не изменяет никакие настройки базы данных, поэтому он не изменит существующее содержимое, вы всегда можете отключить его и вернуть свои настройки, и все будет работать так же, как и раньше.

Вставьте этот код в hide_sticky_promote.module и создайте соответствующий файл hide_sticky_promote.info, включите модуль и wallah, больше не привязывайте и продвигайте флажки или выпадающие списки.

/**
 * Remove sticky/promote entirely from add and edit content type forms.
 *
 * Implements hook_form_FORM_ID_alter().
 */
function hide_sticky_promote_form_node_type_form_alter(&$form, &$form_state, $form_id) {
  // Remove sticky/promote entirely from add and edit content type forms.
  $options = array('promote', 'sticky');
  foreach ($options as $key) {
    unset($form['workflow']['node_options']['#options'][$key]);    
  }
}

/**
 * Remove sticky/promote entirely from node/X/edit & node/X/add forms.
 * 
 * Implements hook_form_BASE_FORM_ID_alter().
 */
function hide_sticky_promote_form_node_form_alter(&$form, &$form_state, $form_id) {
  $options = array('promote', 'sticky');
  foreach ($options as $key) {
    $form['options'][$key]['#access'] = FALSE;
  }
}

/**
 * Remove some sticky/promote update options on admin/content.
 *
 * Implements hook_form_FORM_ID_alter().
 */
function hide_sticky_promote_form_node_admin_content_alter(&$form, &$form_state, $form_id) {
  $options = array('demote', 'promote', 'sticky', 'unsticky', );
  foreach ($options as $key) {
    unset($form['admin']['options']['operation']['#options'][$key]);
  }
}

Или возьмите его отсюда в форме модуля: https://github.com/StudioZut/hide-sticky-promote

Элайджа Линн
источник
3

Используйте следующее:

/**
 * Implements hook_form_alter().
 * This is remove the promote to frontpage, and make sticky options from node edit pages
 */
function alter_drupal_form_alter(&$form, &$form_state, $form_id) {
  if (strpos($form_id, '_node_form') !== FALSE) {
    unset($form['options']['sticky']);
    unset($form['options']['promote']);
  }

  if (strpos($form_id, 'node_admin_content') !== FALSE) {
    //$opt[''] = '- Select -';
    $opt['publish'] = 'Publish selected content'; 
    $opt['unpublish'] = 'Unpublish selected content'; 
    $opt['delete'] = 'Delete selected content'; 
    $opt['pathauto_update_alias'] = 'Update URL alias'; 
    $form['admin']['options']['operation']['#options'] = $opt;


    // print_r($form['admin']['options']['operation']['#options']);
  }
}
Sumaiya
источник
2

В Drupal 8 эта опция может быть отключена для каждого типа контента:

/admin/structure/types/manage/page/form-display

Поле «Массовая форма операции узла» также необходимо изменить в представлении содержимого администратора, чтобы удалить соответствующее действие из / admin / content

/admin/structure/views/view/admin_content

Если вы хотите сохранить параметры продвижения типа контента, например, для использования с пользовательскими представлениями, представление "frontpage", генерирующее страницу frontpage, также можно изменить в

/admin/structure/views/view/frontpage

Например, добавление дополнительного фильтра «не равно повышенному», а удаление «поведения без результатов» делает это представление не возвращающим результатов.

Matoeil
источник
1

Вы можете отключить «продвижение на первую страницу», отредактировав тип контента. Чтобы скрыть это и / или «липкие» опции, ревизии и многое другое, посмотрите модуль Jammer для Drupal 7.

PWM
источник
0

Почему бы не создать другую область шаблона, которая появляется только на первой странице, и не удалить область ['content'] на этой странице?

Элементы в формах могут быть скрыты с помощью css или hook_preprocess_form ()

Cube Inspire
источник
0

Для этого я использую модуль «Promote Disable» .

Он создает элемент управления в разделе «Конфигурация» -> «Создание контента» -> «Отключить продвижение», который дает список выбора всех типов вашего контента. Ctrl / множественный выбор элементов в списке, чтобы полностью удалить опцию продвижения.

shuckc
источник
0
function HOOK_form_node_form_alter(&$form, FormStateInterface $form_state) {
  if (isset($form['promote'])) {
    unset($form['promote']);
  }

  if (isset($form['sticky'])) {
    unset($form['sticky']);
  }
}

Нужно только выше

Анкит Шах
источник
-1

Я подозреваю, что вы могли бы реализовать hook_node_presave и установить их в 0. Это должно переопределить любой возможный способ установить их.

Вы также можете попробовать hook_form_alterформу, использованную на этой странице администратора, и удалить эти параметры.

mpdonadio
источник