web-dev-qa-db-fra.com

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

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

Utilisez hook_form_alter pour désactiver les deux options sur les formulaires d'édition de noeud. 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 permet un contrôle granulaire, mais cela signifie la désactivation de l'autorisation "Administrer le contenu". Les utilisateurs ne peuvent alors pas voir les "Options de mise à jour" sur tous, dont ils ont encore besoin pour publier en masse, supprimer, etc.

14
pushka

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

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

    screenshot

  • sur le nœud/2/modifier, pour le nœud avec un ID égal à 2

    screenshot

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

    screenshot

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 des droits appropriés 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 obtenues avec $operations = module_invoke_all('node_operations'), ces opérations sont représentées à partir de $operations['promote'], $operations['demote'], $operations['sticky'], et $operations['unsticky'].

16
kiamlaluno

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 le menu déroulant admin/content. Ce module ne modifie aucun paramètre de base de données, il ne modifiera 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

13
Elijah Lynn

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

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.

2
Matoeil

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.

1
PWM
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

0
Ankit Shah

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 ()

0
Cube Inspire

J'utilise le "Module de promotion désactivé" pour cela.

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.

0
shuckc