Comment désactiver les options «promouvoir en première page» et «collant»?

14

Deux méthodes possibles que j'ai explorées:

Utilisez hook_form_alter pour désactiver les deux options sur les formulaires de modification de nœud. Mais sur la page principale du contenu administrateur, les options apparaissent toujours sous la liste déroulante «Options de mise à jour».

Utilisez le module Override Node Options . Cela fournit un contrôle granulaire, mais cela signifie la désactivation de l'autorisation «Administrer le contenu». Les utilisateurs ne peuvent alors plus voir les `` options de mise à jour '', dont ils ont toujours besoin pour publier, supprimer, etc. en masse.

pushka
la source

Réponses:

16

Il y a 3 endroits, où ces options peuvent être vues:

  • sur admin / structure / types / manage / article, pour le type de contenu "Article"

    capture d'écran

  • sur le nœud / 2 / modifier, pour le nœud dont l'ID est égal à 2

    capture d'écran

  • sur admin / contenu, entre les "Options de mise à jour"

    capture d'écran

Si vous devez supprimer les options de ces pages de configuration / d'administration, vous devez modifier les générateurs de formulaires suivants:

node_admin_nodes()est le générateur de formulaires pour la vue d'ensemble de l'administration des nœuds dans admin / content, qui comprend le champ "Options de mise à jour" qui permet aux utilisateurs disposant de l'autorisation appropriée de promouvoir / rétrograder un nœud de la page d'accueil et de rendre un nœud collant. Le champ répertorie toutes les opérations de nœuds implémentées par les modules; dans la liste des opérations obtenus avec $operations = module_invoke_all('node_operations'), ces opérations sont représentés , de $operations['promote'], $operations['demote'], $operations['sticky']et $operations['unsticky'].

kiamlaluno
la source
13

Voici un module personnalisé que j'ai écrit pour Drupal 7 qui supprime «promouvoir en première page» et «collant en haut des listes» sur les formulaires d'ajout / modification de nœuds, les types d'ajout / modification de types de contenu et la liste déroulante admin / contenu. Ce module ne modifie aucun paramètre de base de données, il ne changera donc pas le contenu existant, vous pouvez toujours le désactiver et récupérer vos options et tout fonctionnera comme auparavant.

Collez ce code dans un hide_sticky_promote.module et créez un fichier hide_sticky_promote.info correspondant, activez le module et le wallah, ne collez plus et promouvez des cases à cocher ou des sélections déroulantes.

/**
 * 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 récupérez-le ici sous forme de module: https://github.com/StudioZut/hide-sticky-promote

Elijah Lynn
la source
3

Utilisez le suivant:

/**
 * 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
la source
2

Dans Drupal 8, l'option peut être désactivée par type de contenu:

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

Le champ "formulaire d'opération groupée de noeud" doit également être modifié dans la vue de contenu d'administration pour supprimer l'action correspondante de / admin / content

/admin/structure/views/view/admin_content

Si vous souhaitez conserver les options de promotion du type de contenu, pour une utilisation avec des vues personnalisées par exemple, la vue "page d'accueil" qui génère la page d'accueil peut également être modifiée dans

/admin/structure/views/view/frontpage

L'ajout, par exemple, d'un filtre supplémentaire 'n'est pas égal à promu' et la suppression du "comportement sans résultat" "fait que cette vue ne renvoie aucun résultat.

Matoeil
la source
1

Vous pouvez désactiver la «promotion sur la première page» en modifiant le type de contenu. Pour le masquer et / ou les options, les révisions et bien plus encore, consultez le module Jammer pour Drupal 7.

PWM
la source
0

Pourquoi ne pas créer une région de modèle différente qui n'apparaît que sur la page d'accueil et supprimer la région ['content'] sur cette page?

Les éléments des formulaires peuvent être masqués à l'aide de CSS ou de hook_preprocess_form ()

Cube Inspire
la source
0

J'utilise pour cela le module "Promouvoir la désactivation" .

Il crée un contrôle dans Configuration -> Création de contenu -> Désactiver la promotion qui donne une liste de sélection de tous vos types de contenu. Ctrl / éléments de sélection multiple dans la liste pour supprimer complètement l'option de promotion.

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

Il a seulement besoin de plus

Ankit Shah
la source
-1

Je soupçonne que vous pourriez implémenter un hook_node_presave et les mettre à 0. Cela devrait remplacer toute façon possible de les régler.

Vous pouvez également essayer hook_form_alterle formulaire utilisé sur cette page d'administration et supprimer ces options.

mpdonadio
la source