Como desativar as opções 'promover para a primeira página' e 'aderente'?

14

Dois métodos possíveis que eu explorei:

Use hook_form_alter para desmarcar as duas opções nos formulários de edição do nó. Mas na página principal de conteúdo do administrador, as opções ainda aparecem no menu suspenso 'Opções de atualização'.

Use o módulo Substituir opções do nó . Isso fornece controle granular, mas significa desativar a permissão 'Administrar conteúdo'. Os usuários não podem ver as 'Opções de atualização', que ainda precisam para publicar, excluir etc.

pushka
fonte

Respostas:

16

Existem 3 lugares onde essas opções podem ser vistas:

  • em admin / estrutura / tipos / gerenciar / artigo, para o tipo de conteúdo "Artigo"

    captura de tela

  • no nó / 2 / edit, para o nó com o ID igual a 2

    captura de tela

  • em administrador / conteúdo, entre as "Opções de atualização"

    captura de tela

Se você precisar remover as opções dessas páginas administrativas / de configuração, precisará alterar os seguintes criadores de formulários:

node_admin_nodes()é o construtor de formulários para a visão geral da administração do nó em admin / content, que inclui o campo "Opções de atualização" que permite aos usuários a permissão certa para promover / rebaixar um nó da página inicial e torná-lo adesivo. O campo lista todas as operações do nó implementadas pelos módulos; na lista das operações obtidos com $operations = module_invoke_all('node_operations'), essas operações são representados a partir de $operations['promote'], $operations['demote'], $operations['sticky'], e $operations['unsticky'].

kiamlaluno
fonte
13

Aqui está um módulo personalizado que escrevi para o Drupal 7 que remove "promover para a primeira página" e "pegajoso no topo das listas" nos formulários de adição / edição de nós, formulários de adição / edição de tipos de conteúdo e a lista suspensa de administrador / conteúdo. Este módulo não altera nenhuma configuração do banco de dados para não alterar o conteúdo existente. Você sempre pode desativá-lo e recuperar suas opções, e tudo funcionará exatamente como antes.

Cole esse código em um hide_sticky_promote.module e crie um arquivo hide_sticky_promote.info correspondente, ative o módulo e o wallah, não fique mais pegajoso e promova caixas de seleção ou seleções suspensas.

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

Ou pegue aqui no módulo: https://github.com/StudioZut/hide-sticky-promote

Elijah Lynn
fonte
3

Use o seguinte:

/**
 * 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
fonte
2

No Drupal 8, a opção pode ser desativada por tipo de conteúdo:

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

O campo "formulário em massa da operação do nó" também deve ser modificado na visualização de conteúdo do administrador para remover a ação correspondente de / admin / content

/admin/structure/views/view/admin_content

Se desejar manter as opções de promoção do tipo de conteúdo, para uso com visualizações personalizadas, por exemplo, a visualização "página inicial" que gera a página da página inicial também pode ser modificada em

/admin/structure/views/view/frontpage

Adicionar, por exemplo, um filtro extra 'não é igual ao promovido' e remover o "comportamento sem resultado" "faz com que essa exibição não retorne resultados.

Matoeil
fonte
1

Você pode desativar a 'promoção para a primeira página' editando o tipo de conteúdo. Para ocultá-lo e / ou as opções 'adesivas', revisões e muito mais, consulte o módulo Jammer do Drupal 7.

PWM
fonte
0

Por que não crie uma região de modelo diferente que apareça apenas na primeira página e remova a região ['content'] dessa página?

Elementos em formulários podem ser ocultados usando css ou com hook_preprocess_form ()

Cube Inspire
fonte
0

Eu uso o módulo "Promover desabilitação" para isso.

Ele cria um controle em Configuração -> Criação de conteúdo -> Desativação de promoção que fornece uma lista selecionada de todos os seus tipos de conteúdo. Ctrl / selecione vários itens na lista para remover completamente a opção de promoção.

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

Precisa apenas acima

Ankit Shah
fonte
-1

Eu suspeito que você possa implementar um hook_node_presave e configurá-los como 0. Isso deve substituir qualquer maneira possível de configurá-los.

Você também pode tentar hook_form_altero formulário usado nessa página de administrador e remover essas opções.

mpdonadio
fonte