Come disabilitare le opzioni "Promuovi in ​​prima pagina" e "Appiccicoso"?


14

Due possibili metodi che ho esplorato:

Utilizzare hook_form_alter per deselezionare entrambe le opzioni nei moduli di modifica dei nodi. Ma nella pagina principale dell'amministratore, le opzioni appaiono ancora nel menu a discesa "Opzioni di aggiornamento".

Utilizzare il modulo Opzioni nodo di sostituzione . Ciò fornisce un controllo granulare, ma significa disabilitare l'autorizzazione "Amministra contenuto". Gli utenti non possono quindi vedere affatto le "Opzioni di aggiornamento" di cui hanno ancora bisogno per pubblicare collettivamente, eliminare, ecc.

Risposte:


16

Esistono 3 luoghi in cui è possibile visualizzare tali opzioni:

  • su admin / struttura / tipi / gestisci / articolo, per il tipo di contenuto "Articolo"

    immagine dello schermo

  • sul nodo / 2 / modifica, per il nodo con ID uguale a 2

    immagine dello schermo

  • su admin / contenuto, tra le "Opzioni di aggiornamento"

    immagine dello schermo

Se è necessario rimuovere le opzioni da quelle pagine di impostazione / amministrative, è necessario modificare i seguenti compilatori di moduli:

node_admin_nodes()è il form builder per la panoramica dell'amministrazione del nodo in admin / content, che include il campo "Opzioni di aggiornamento" che consente agli utenti con l'autorizzazione giusta di promuovere / degradare un nodo dalla prima pagina e di renderlo appiccicoso. Il campo elenca tutte le operazioni del nodo implementate dai moduli; nell'elenco delle operazioni ottenuti con $operations = module_invoke_all('node_operations'), tali operazioni sono rappresentate da $operations['promote'], $operations['demote'], $operations['sticky']e $operations['unsticky'].


13

Ecco un modulo personalizzato che ho scritto per Drupal 7 che rimuove "promuovi in ​​prima pagina" e "appiccicoso in cima agli elenchi" nei moduli di aggiunta / modifica dei nodi, nei moduli di aggiunta / modifica del tipo di contenuto e nel menu a discesa admin / contenuto. Questo modulo non modifica le impostazioni del database, quindi non modificherà il contenuto esistente, puoi sempre disabilitarlo e riavere le tue opzioni e tutto funzionerà esattamente come prima.

Incolla questo codice in un hide_sticky_promote.module e crea un corrispondente file hide_sticky_promote.info, abilita modulo e wallah, non più appiccicoso e promuovi caselle di controllo o selezioni a discesa.

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

O prendilo da qui in forma di modulo: https://github.com/StudioZut/hide-sticky-promote


3

Utilizza il seguente:

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

In Drupal 8, l'opzione può essere disabilitata per tipo di contenuto:

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

Anche il campo "Modulo bulk operazione nodo" deve essere modificato nella vista del contenuto dell'amministratore per rimuovere l'azione corrispondente da / admin / content

/admin/structure/views/view/admin_content

Se si desidera mantenere le opzioni di promozione del tipo di contenuto, ad esempio per l'utilizzo con visualizzazioni personalizzate, è possibile modificare anche la vista "frontpage" che genera la pagina frontpage

/admin/structure/views/view/frontpage

L'aggiunta, ad esempio, di un filtro aggiuntivo "non è uguale a quella promossa" e la rimozione del "comportamento senza risultati" "rende tale visualizzazione senza risultati.


1

È possibile disabilitare la "promozione in prima pagina" modificando il tipo di contenuto. Per nasconderlo e / o le opzioni 'adesive', le revisioni e altro, controlla il modulo Jammer per Drupal 7.


0

Perché non creare una regione modello diversa che appare solo sulla prima pagina e rimuovere la regione ['contenuto'] su quella pagina?

Gli elementi nei moduli possono essere nascosti utilizzando css o hook_preprocess_form ()


0

Per questo uso il modulo "Promuovi Disabilita" .

Crea un controllo in Configurazione -> Creazione contenuto -> Promuovi disabilitazione che fornisce un elenco selezionato di tutti i tipi di contenuto. Ctrl / selezione multipla di voci nell'elenco per rimuovere completamente l'opzione di promozione.


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

Ha solo bisogno sopra


-1

Sospetto che potresti implementare un hook_node_presave e impostarli su 0. Questo dovrebbe sovrascrivere qualsiasi modo possibile per impostarli.

Puoi anche provare al hook_form_altermodulo utilizzato in quella pagina di amministrazione e rimuovere quelle opzioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.