如何禁用“升级到首页”和“粘滞”选项?


14

我探索了两种可能的方法:

使用hook_form_alter可以取消设置节点编辑表单上的两个选项。但是,在管理员主内容页面上,这些选项仍显示在“更新选项”下拉菜单下。

使用“ 覆盖节点选项”模块。这提供了精细的控制,但是这意味着禁用了“管理内容”权限。然后,用户根本看不到“更新选项”,这对于批量发布,删除等仍然是必需的。

Answers:


16

在3个地方可以看到这些选项:

  • 在admin / structure / types / manage / article上,用于“文章”内容类型

    屏幕截图

  • 在node / 2 / edit上,对于ID等于2的节点

    屏幕截图

  • 在管理员/内容之间,在“更新选项”之间

    屏幕截图

如果需要从这些设置/管理页面中删除选项,则需要更改以下表单构建器:

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']);
  }
}

2

在Drupal 8中,可以按内容类型禁用该选项:

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

还必须在管理员内容视图中修改“节点操作批量表格”字段,以从/ admin / content中删除相应的操作

/admin/structure/views/view/admin_content

如果要保留内容类型升级选项,例如用于自定义视图,则可以在以下位置修改生成首页的视图“ frontpage”

/admin/structure/views/view/frontpage

例如,添加一个额外的过滤器“不等于升级”并删除“无结果行为”,则该视图将不返回任何结果。


1

您可以通过编辑内容类型来禁用“升级为首页”。要隐藏它和/或“粘性”选项,修订版和更多内容,请查看Drupal 7 的Jammer模块。


0

为什么不制作仅显示在首页上的其他模板区域,并删除该页面上的['content']区域?

可以使用CSS或hook_preprocess_form()隐藏表单上的元素


0

为此,我使用了“禁止升级”模块

它在“配置”->“内容创作”->“禁用”中创建一个控件,该控件提供所有内容类型的选择列表。Ctrl /多选列表中的项目可完全删除升级选项。


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使用该管理页面上使用的表单,然后删除这些选项。

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.