我探索了两种可能的方法:
使用hook_form_alter可以取消设置节点编辑表单上的两个选项。但是,在管理员主内容页面上,这些选项仍显示在“更新选项”下拉菜单下。
使用“ 覆盖节点选项”模块。这提供了精细的控制,但是这意味着禁用了“管理内容”权限。然后,用户根本看不到“更新选项”,这对于批量发布,删除等仍然是必需的。
我探索了两种可能的方法:
使用hook_form_alter可以取消设置节点编辑表单上的两个选项。但是,在管理员主内容页面上,这些选项仍显示在“更新选项”下拉菜单下。
使用“ 覆盖节点选项”模块。这提供了精细的控制,但是这意味着禁用了“管理内容”权限。然后,用户根本看不到“更新选项”,这对于批量发布,删除等仍然是必需的。
Answers:
在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']
。
这是我为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
使用以下内容:
/**
* 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']);
}
}
在Drupal 8中,可以按内容类型禁用该选项:
/admin/structure/types/manage/page/form-display
还必须在管理员内容视图中修改“节点操作批量表格”字段,以从/ admin / content中删除相应的操作
/admin/structure/views/view/admin_content
如果要保留内容类型升级选项,例如用于自定义视图,则可以在以下位置修改生成首页的视图“ frontpage”
/admin/structure/views/view/frontpage
例如,添加一个额外的过滤器“不等于升级”并删除“无结果行为”,则该视图将不返回任何结果。
function HOOK_form_node_form_alter(&$form, FormStateInterface $form_state) {
if (isset($form['promote'])) {
unset($form['promote']);
}
if (isset($form['sticky'])) {
unset($form['sticky']);
}
}
只需要上面
我怀疑您可以实现hook_node_presave并将其设置为0。这应该覆盖任何可能的设置方法。
您也可以尝试hook_form_alter
使用该管理页面上使用的表单,然后删除这些选项。