Wie deaktiviere ich die Optionen "Zur Startseite werben" und "Aufkleben"?

15

Zwei mögliche Methoden, die ich untersucht habe:

Verwenden Sie hook_form_alter, um beide Optionen in Knotenbearbeitungsformularen zu deaktivieren . Auf der Hauptinhaltsseite für Administratoren werden die Optionen jedoch weiterhin im Dropdown-Menü "Aktualisierungsoptionen" angezeigt.

Verwenden Sie Knotenoptionen überschreiben Modul . Dies bietet eine differenzierte Steuerung, bedeutet jedoch, dass die Berechtigung "Inhalt verwalten" deaktiviert wird. Benutzer können dann die 'Update-Optionen' überhaupt nicht sehen, die sie noch benötigen, um Massenveröffentlichungen, Löschungen usw. durchzuführen.

Puschka
quelle

Antworten:

16

Es gibt 3 Stellen, an denen diese Optionen angezeigt werden:

  • in admin / structure / types / manage / article für den Inhaltstyp "Article"

    Bildschirmfoto

  • am Knoten / 2 / edit für den Knoten mit der ID 2

    Bildschirmfoto

  • auf admin / content, zwischen den "Update options"

    Bildschirmfoto

Wenn Sie die Optionen von diesen Einstellungsseiten / Verwaltungsseiten entfernen müssen, müssen Sie die folgenden Formularersteller ändern:

node_admin_nodes()ist der Formular-Generator für die Knotenadministrationsübersicht in admin / content, der das Feld "Aktualisierungsoptionen" enthält, mit dem die Benutzer mit der richtigen Berechtigung einen Knoten von der Startseite heraufstufen / herabstufen und einen Knoten klebrig machen können. Das Feld listet alle von Modulen implementierten Knotenoperationen auf. in der Liste der mit Operationen erhalten $operations = module_invoke_all('node_operations'), werden diese Operationen aus , dargestellt $operations['promote'], $operations['demote'], $operations['sticky'], und $operations['unsticky'].

kiamlaluno
quelle
13

Hier ist ein benutzerdefiniertes Modul, das ich für Drupal 7 geschrieben habe. Es entfernt "Zur Startseite hochstufen" und "An der Spitze der Listen kleben" bei Formularen zum Hinzufügen / Bearbeiten von Knoten, Formularen zum Hinzufügen / Bearbeiten von Inhaltstypen und der Dropdown-Liste "Admin / Inhalt". Dieses Modul ändert keine Datenbankeinstellungen, sodass vorhandene Inhalte nicht geändert werden. Sie können es jederzeit deaktivieren und Ihre Optionen wiederherstellen. Alles funktioniert wie zuvor.

Fügen Sie diesen Code in ein hide_sticky_promote.module ein und erstellen Sie eine entsprechende hide_sticky_promote.info-Datei. Aktivieren Sie das Modul und die 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]);
  }
}

Oder greifen Sie hier in Modulform zu: https://github.com/StudioZut/hide-sticky-promote

Elijah Lynn
quelle
3

Verwenden Sie Folgendes:

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

In Drupal 8 kann die Option für jeden Inhaltstyp deaktiviert werden:

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

Das Feld "Knotenoperations-Massenformular" muss auch in der Administrator-Inhaltsansicht geändert werden, um die entsprechende Aktion aus / admin / content zu entfernen

/admin/structure/views/view/admin_content

Wenn Sie die Werbeoptionen für den Inhaltstyp beibehalten möchten, beispielsweise für benutzerdefinierte Ansichten, kann die Ansicht "Startseite", die die Startseite generiert, auch in geändert werden

/admin/structure/views/view/frontpage

Wenn Sie zum Beispiel einen zusätzlichen Filter "ist nicht gleich Befördert" hinzufügen und das "Verhalten ohne Ergebnis" entfernen, gibt diese Ansicht keine Ergebnisse zurück.

Matoeil
quelle
1

Sie können das Hochstufen auf die Titelseite deaktivieren, indem Sie den Inhaltstyp bearbeiten. Schauen Sie sich das Jammer- Modul für Drupal 7 an, um es und / oder die "Sticky" -Optionen, Revisionen und mehr auszublenden .

PWM
quelle
0

Warum erstellen Sie keinen anderen Vorlagenbereich, der nur auf der Startseite angezeigt wird, und entfernen Sie den Bereich ['content'] auf dieser Seite?

Elemente in Formularen können mit css oder hook_preprocess_form () ausgeblendet werden

Würfel inspirieren
quelle
0

Ich benutze das Modul "Deaktivieren fördern" .

Es erstellt ein Steuerelement unter Konfiguration -> Inhaltserstellung -> Deaktivierung heraufstufen, das eine Auswahlliste aller Ihrer Inhaltstypen enthält. Halten Sie die Strg- / Mehrfachauswahl-Tasten in der Liste gedrückt, um die Option zum Hochstufen vollständig zu entfernen.

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

Es braucht nur oben

Ankit Shah
quelle
-1

Ich vermute, Sie könnten einen hook_node_presave implementieren und diese auf 0 setzen. Dies sollte jeden möglichen Weg, diese zu setzen, außer Kraft setzen.

Sie können auch versuchen, hook_form_alterdas auf dieser Administrationsseite verwendete Formular zu verwenden und diese Optionen zu entfernen.

mpdonadio
quelle