Bagaimana cara menonaktifkan opsi 'promosikan ke halaman depan' dan 'lengket'?

14

Dua metode yang mungkin telah saya jelajahi:

Gunakan hook_form_alter untuk membatalkan pilihan kedua pada formulir edit simpul. Tetapi pada halaman konten admin utama, opsi masih muncul di bawah dropdown 'Opsi pembaruan'.

Gunakan modul Override Node Options . Ini memberikan kontrol granular, tetapi itu berarti menonaktifkan izin 'Konten administrasi'. Pengguna kemudian tidak dapat melihat 'Opsi pembaruan' sama sekali, yang masih mereka perlukan untuk mempublikasikan, menghapus, dll. Secara massal

pushka
sumber

Jawaban:

16

Ada 3 tempat, di mana opsi-opsi itu dapat dilihat:

  • pada admin / struktur / tipe / kelola / artikel, untuk tipe konten "Artikel"

    tangkapan layar

  • pada node / 2 / edit, untuk node dengan ID sama dengan 2

    tangkapan layar

  • di admin / konten, di antara "Opsi pembaruan"

    tangkapan layar

Jika Anda perlu menghapus opsi dari pengaturan / halaman administratif itu, maka Anda perlu mengubah pembuat formulir berikut:

node_admin_nodes()adalah pembangun formulir untuk ikhtisar administrasi simpul di admin / konten, yang mencakup bidang "Opsi pembaruan" yang memungkinkan pengguna dengan izin yang tepat untuk mempromosikan / menurunkan node dari halaman depan, dan membuat simpul lengket. Bidang ini mencantumkan semua operasi simpul yang dilaksanakan oleh modul; dalam daftar operasi yang diperoleh dengan $operations = module_invoke_all('node_operations'), operasi-operasi yang diwakili dari $operations['promote'], $operations['demote'], $operations['sticky'], dan $operations['unsticky'].

kiamlaluno
sumber
13

Berikut adalah modul khusus yang saya tulis untuk Drupal 7 yang menghapus "promosikan ke halaman depan" dan "lengket di bagian atas daftar" pada formulir tambah / sunting node, jenis isi tambah / edit formulir dan dropdown admin / konten. Modul ini tidak mengubah pengaturan basis data apa pun sehingga tidak akan mengubah konten yang ada, Anda selalu dapat menonaktifkannya dan mendapatkan kembali opsi Anda dan semuanya akan berfungsi seperti sebelumnya.

Rekatkan kode ini ke dalam hide_sticky_promote.module dan buat file hide_sticky_promote.info yang sesuai, aktifkan modul dan wallah, tidak lagi lengket dan promosikan kotak centang atau pilihan dropdown.

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

Atau ambil dari sini dalam bentuk modul: https://github.com/StudioZut/hide-sticky-promote

Elijah Lynn
sumber
3

Gunakan yang berikut ini:

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

Di Drupal 8, opsi ini dapat dinonaktifkan per jenis konten:

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

Bidang "formulir operasi simpul node" juga harus dimodifikasi dalam tampilan konten admin untuk menghapus tindakan yang sesuai dari / admin / konten

/admin/structure/views/view/admin_content

Jika ingin mempertahankan opsi mempromosikan jenis konten, untuk penggunaan dengan tampilan khusus misalnya, tampilan "halaman depan" yang menghasilkan halaman halaman depan juga dapat dimodifikasi dalam

/admin/structure/views/view/frontpage

Menambahkan, misalnya, filter tambahan 'tidak sama dengan yang dipromosikan' dan menghapus "perilaku tanpa hasil" "membuat tampilan itu tidak mengembalikan hasil.

Matoeil
sumber
1

Anda dapat menonaktifkan 'promosikan ke halaman depan' dengan mengedit tipe konten. Untuk menyembunyikannya dan / atau opsi 'lengket', revisi, dan lainnya, lihat modul Jammer untuk Drupal 7.

PWM
sumber
0

Mengapa tidak membuat wilayah templat berbeda yang hanya muncul di halaman depan dan menghapus wilayah ['konten'] di halaman itu?

Elemen pada formulir dapat disembunyikan menggunakan css atau dengan hook_preprocess_form ()

Cube Inspire
sumber
0

Saya menggunakan modul "Promote Disable" untuk ini.

Ini membuat kontrol di Konfigurasi -> Penulisan konten -> Promosikan menonaktifkan yang memberikan daftar pilih semua jenis konten Anda. Ctrl / multi-pilih item dalam daftar untuk menghapus opsi promosi sepenuhnya.

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

Itu hanya kebutuhan di atas

Ankit Shah
sumber
-1

Saya menduga Anda dapat menerapkan hook_node_presave dan mengaturnya menjadi 0. Ini harus mengganti cara yang mungkin untuk mengatur ini.

Anda juga dapat mencoba hook_form_alterformulir yang digunakan pada halaman admin itu dan menghapus opsi-opsi itu.

mpdonadio
sumber