Bagaimana saya menghindari memeriksa pembaruan untuk modul tertentu?

35

Dalam proyek saat ini saya harus menambal kehidupan dari beberapa modul (hierarki node, akses meja kerja dan beberapa lagi). Modul-modul ini sekarang benar-benar sempurna untuk kebutuhan proyek dan sangat tidak mungkin terputus dengan pembaruan inti di masa depan.

Yang sedang berkata, ketika aplikasi diserahkan klien akan memiliki akses penuh (pengguna 1) ke sistem dan karenanya akan diperingatkan ketika modul-modul ini memiliki pembaruan yang tersedia. Dan mereka akan memperbaruinya, tidak peduli berapa kali saya memohon kepada mereka untuk tidak (oh betapa mudahnya hidup tanpa klien!).

Apakah ada cara (mungkin dalam file modul .info) untuk membujuk manajer pembaruan untuk tidak memeriksa pembaruan untuk modul ini?

EDIT

Saya mengetahui project status urlkunci yang tersedia untuk .infofile jadi saya kira saya bisa mengaturnya ke URL yang tidak ada tetapi saya lebih suka melakukan ini dengan cara yang bersih jika memungkinkan.

Clive
sumber

Jawaban:

31

Anda perlu menerapkan hook_update_projects_alter().

Ubah daftar proyek sebelum mengambil data dan membandingkan versi.

Sebagian besar modul tidak perlu mengimplementasikan kait ini. Ini untuk interaksi tingkat lanjut dengan modul status pembaruan: manusia biasa tidak perlu mendaftar. Case-use utama untuk hook ini adalah menambahkan proyek ke daftar, misalnya, untuk menyediakan data status pembaruan pada modul dan tema yang dinonaktifkan. Modul yang disumbangkan mungkin ingin menyembunyikan proyek dari daftar, misalnya, jika ada modul khusus situs yang tidak memiliki rilis resmi, modul itu dapat menghapus sendiri dari daftar ini untuk menghindari peringatan "Tidak ada rilis yang ditemukan" peringatan pada laporan pembaruan yang tersedia. Dalam kasus yang jarang terjadi, modul mungkin ingin mengubah data yang terkait dengan proyek yang sudah ada dalam daftar.

Chapabu
sumber
19

The projectkunci dari .info berkas ditambahkan oleh script kemasan di drupal.org untuk mengidentifikasi apa proyek modul adalah dari. Penggunaan utama adalah untuk modul Status pembaruan untuk memantau versi paket yang diinstal dan memberi tahu administrator ketika versi baru tersedia.

Anda cukup menghapus atau mengomentari baris ini dalam file .info dan Drupal berhenti memeriksa pembaruan modul ini.

smartinm
sumber
Apakah ini diturunkan karena salah atau alasan lain?
mpdonadio
Ini adalah IMO, cara terbaik dan termudah!
AyeshK
1
@MPD Menggunakan projectsecara manual tidak disarankan dalam dokumen - yang mungkin menjadi alasan downvotes.
Mołot
Ini adalah satu-satunya cara saya dapat menemukan untuk berhenti memeriksa versi Tema yang disesuaikan. Saya, tentu saja, ingin melakukannya dengan "cara yang benar" tetapi ini berhasil dan menggunakan kembali kode NPC tetapi dengan THEMENAME_update_projects_alter tidak.
nedwardss
3
@nedwardss menggunakan MYMODULE_atau THEMENAME_hanya menunjukkan lokasi kode ini harus ditempatkan. Dengan menggunakan kode ini dalam file fungsi tema alih-alih modul khusus, kode ini dapat diproses pada tahap yang berbeda dan mungkin tidak berfungsi seperti yang diharapkan. Tema harus dimasukkan dalam $projectsvariabel.
emc
14

Hanya dengan memberikan contoh kode untuk membantu jawaban yang dipilih:

function MYMODULE_update_projects_alter(&$projects){
    unset($projects['slug_of_the_module_you_want_to_disable']);
    //dsm($projects);  // view a list of projects
}

Masukkan nama modul dalam $projects[]variabel untuk dinonaktifkan. Jika Anda tidak yakin apa itu siput (akan menjadi huruf kecil dan garis bawah), gunakan dsm()panggilan itu atau print_r()untuk mencetak daftar modul.

emc
sumber
1
Satu catatan - slughanyalah nama teknis dari modul yang sama dengan nama .infofile modul . Jadi Anda tidak perlu membuang array proyek hanya melihat ke folder modul. Dalam kebanyakan kasus, namanya sama dengan nama folder modul.
Nux
1
@Nux "kebanyakan kasus" kontraproduktif untuk beberapa kali siput tidak cocok dengan nama modul. Dengan melihat dan menggunakan siput pertama kali, kami mendidik pengembang dan mengurangi jumlah masalah yang mungkin terjadi.
emc
Istilah yang digunakan dari Drupal bukanlah slug tetapi nama mesin . Slug digunakan dari beberapa CMS yang setara dengan URL kanonik atau alias path ,
kiamlaluno
12

Anda dapat melakukannya dengan dua cara.

  • drush pm-updatecode --lock = module_to_ignore
  • Gunakan modul update_advanced . Ini memungkinkan Anda untuk menandai modul yang ingin Anda abaikan pada halaman administrasi modul.

Secara khusus, pengaturan per proyek untuk mengabaikan proyek tertentu atau bahkan rilis spesifik, tidak ada dalam versi inti modul. Modul "Perbarui status lanjut pengaturan" mengembalikan pengaturan ini, dan pada akhirnya mungkin menyediakan fungsionalitas tambahan untuk modul "Perbarui status" inti.

4life
sumber
perintah drush adalah persis apa yang saya cari, terima kasih banyak!
Afr
The drush help upcakan memberikan ini untuk --lockbantuan: --lock = <foo, bar> Tambahkan kunci gigih untuk menghapus proyek-proyek tertentu dari pertimbangan selama update. Kunci dapat dihapus dengan parameter --unlock, atau diganti dengan secara khusus menyebutkan proyek sebagai parameter untuk pm-update atau pm-updatecode. Kunci tidak memengaruhi unduhan pm.
Yzmir Ramirez
2

Saya mendapatkan masalah yang sama dengan pembaruan modul, saya menginstal modul Nonaktifkan Pembaruan tampaknya berfungsi baik.

Ini adalah modul administratif kecil yang memungkinkan administrator situs menonaktifkan memeriksa pembaruan pada tema dan modul tertentu, dengan memaparkan fungsionalitas hook_update_projects_alter () pada formulir pengaturan pembaruan (/ admin / laporan / pembaruan / pengaturan). Ini memungkinkan pemilihan tema dan modul yang sewenang-wenang serta deteksi otomatis modul khusus, modul yang ditambal, dan modul fitur khusus situs.

masukkan deskripsi gambar di sini

Krishna Mohan
sumber
0

Pada dasarnya, Anda membuat garpu, bukan? Jadi kamu harus:

  1. Ganti nama untuk memasukkan tanda fork Anda
  2. Dalam file info, atur project status urlke repositori Anda dari modul itu.

Terakhir tetapi tidak kalah pentingnya, jika tidak didukung tetapi tidak dicabut demi modul lainnya, pertimbangkan untuk menjadi co-maintainer dan berbagi perbaikan Anda dengan komunitas.

Mołot
sumber
2
Donschoe: pemelihara di sini. Saya akan sangat bersedia membantu Anda meningkatkan kecepatan jika Anda mau.
berkelanjutan