Làm cách nào để tránh kiểm tra cập nhật cho một mô-đun cụ thể?


35

Trong một dự án hiện tại tôi đã phải vá tuổi thọ của một vài mô-đun (phân cấp nút, truy cập bàn làm việc và một vài thứ nữa). Các mô-đun này hoàn toàn hoàn hảo cho nhu cầu của dự án và rất khó có thể phá vỡ với các bản cập nhật cốt lõi trong tương lai.

Điều đó đang được nói, khi ứng dụng được bàn giao, khách hàng sẽ có quyền truy cập đầy đủ (người dùng 1) vào hệ thống và do đó sẽ được cảnh báo khi các mô-đun này có bản cập nhật khả dụng. Và họ sẽ cập nhật chúng, bất kể bao nhiêu lần tôi cầu xin họ đừng (ôi cuộc sống sẽ dễ dàng thế nào nếu không có khách hàng!).

Có cách nào (có lẽ trong các .infotệp của mô-đun ) để thuyết phục người quản lý cập nhật không kiểm tra cập nhật cho các mô-đun này không?

CHỈNH SỬA

Tôi biết về project status urlkhóa có sẵn cho .infotệp vì vậy tôi đoán rằng tôi có thể đặt nó thành một URL không tồn tại nhưng tôi muốn làm điều này theo cách sạch sẽ hơn nếu có thể.

Câu trả lời:


31

Bạn cần thực hiện hook_update_projects_alter().

Thay đổi danh sách các dự án trước khi tìm nạp dữ liệu và so sánh các phiên bản.

Hầu hết các mô-đun sẽ không bao giờ cần phải thực hiện móc này. Nó dành cho tương tác nâng cao với mô đun trạng thái cập nhật: không cần phải áp dụng. Trường hợp sử dụng chính cho hook này là thêm các dự án vào danh sách, ví dụ, để cung cấp dữ liệu trạng thái cập nhật trên các mô-đun và chủ đề bị vô hiệu hóa. Một mô-đun đóng góp có thể muốn ẩn các dự án khỏi danh sách, ví dụ, nếu có một mô-đun dành riêng cho trang web không có bất kỳ bản phát hành chính thức nào, mô-đun đó có thể tự xóa khỏi danh sách này để tránh cảnh báo "Không tìm thấy bản phát hành có sẵn" các báo cáo cập nhật có sẵn. Trong những trường hợp hiếm hoi, một mô-đun có thể muốn thay đổi dữ liệu liên quan đến một dự án đã có trong danh sách.


19

Các projectchính từ .info tập tin được thêm vào bởi kịch bản đóng gói trên drupal.org để xác định những dự án module là từ. Việc sử dụng chính là cho mô-đun trạng thái Cập nhật để giám sát các phiên bản của các gói đã cài đặt và thông báo cho quản trị viên khi có phiên bản mới.

Bạn chỉ cần xóa hoặc nhận xét dòng này trong tệp .info và Drupal dừng kiểm tra các bản cập nhật của mô-đun này.


Điều này có bị hạ cấp bởi vì nó không chính xác hoặc một số lý do khác?
mpdon Arena

Đây là IMO, cách tốt nhất và dễ nhất!
AyeshK

1
@MPD Sử dụng projectthủ công không được khuyến khích trong các tài liệu - đó có thể là lý do của downvote.
Mołot

Đây là cách duy nhất tôi có thể tìm thấy để ngừng kiểm tra phiên bản Theme tùy chỉnh. Tôi, tất nhiên, muốn làm điều đó "đúng cách" nhưng điều này đã làm việc và sử dụng lại mã hóa của npc nhưng với THEMENAME_update_projects_alter thì không.
nedwardss

3
@nedwardss sử dụng MYMODULE_hoặc THEMENAME_chỉ cho biết vị trí mà mã này sẽ được đặt. Bằng cách sử dụng mã này trong tệp chức năng chủ đề thay vì mô-đun tùy chỉnh, nó có thể được xử lý ở một giai đoạn khác và có thể không hoạt động như mong đợi. Chủ đề nên được bao gồm trong $projectsbiến.
emc

14

Chỉ cần cung cấp một mẫu mã để giúp câu trả lời được chọn:

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

Nhập tên mô-đun vào $projects[]biến để vô hiệu hóa. Nếu bạn không chắc chắn con sên là gì (sẽ là chữ thường và không được bảo vệ), hãy sử dụng dsm()cuộc gọi đó hoặc print_r()để in ra một danh sách các mô-đun.


1
Một lưu ý - slugchỉ đơn giản là một tên kỹ thuật của mô-đun giống như tên của .infotệp mô-đun . Vì vậy, bạn không phải đổ mảng dự án chỉ cần nhìn vào thư mục mô-đun. Trong hầu hết các trường hợp, tên giống với tên của thư mục mô-đun.
Nux

1
@Nux "hầu hết các trường hợp" đều phản tác dụng trong vài lần mà sên không khớp với tên mô-đun. Bằng cách xem và sử dụng sên lần đầu tiên, cả hai chúng tôi đều giáo dục nhà phát triển và giảm số lượng các vấn đề có thể xảy ra.
emc

Thuật ngữ được sử dụng từ Drupal không phải là sênlà tên máy . Slug được sử dụng từ một số CMS tương đương với URL chính tắc hoặc bí danh đường dẫn ,
kiamlaluno

12

Bạn có thể làm điều đó theo hai cách.

  • drush pm-updatecode --lock = module_to_ignore
  • Sử dụng mô-đun update_adv cân bằng . Nó cho phép bạn đánh dấu các mô-đun mà bạn muốn bỏ qua trên trang quản trị mô-đun.

Cụ thể, các cài đặt cho mỗi dự án để bỏ qua các dự án nhất định hoặc thậm chí các bản phát hành cụ thể, không có trong phiên bản cốt lõi của mô-đun. Mô-đun "Cập nhật cài đặt nâng cao trạng thái" khôi phục các cài đặt này và cuối cùng có thể cung cấp chức năng bổ sung cho mô-đun "Cập nhật trạng thái" cốt lõi.


lệnh drush chính xác là những gì tôi đang tìm kiếm, cảm ơn rất nhiều!
Afr

Các drush help upcsẽ cung cấp này đối với --locksự giúp đỡ: --lock = <foo, thanh> Thêm một khóa dai dẳng để loại bỏ các dự án quy định từ cân nhắc trong quá trình cập nhật. Các khóa có thể được loại bỏ bằng tham số --unlock hoặc ghi đè bằng cách đặt tên dự án cụ thể làm tham số cho pm-update hoặc pm-updatecode. Khóa không ảnh hưởng đến chiều tải xuống.
Yzmir Ramirez

2

Tôi gặp vấn đề tương tự với các bản cập nhật mô-đun, tôi đã cài đặt mô-đun Vô hiệu hóa Cập nhật có vẻ hoạt động tốt.

Đây là một mô-đun quản trị nhỏ cho phép quản trị viên trang web vô hiệu hóa việc kiểm tra các bản cập nhật trên một số chủ đề và mô-đun nhất định, bằng cách hiển thị chức năng của hook_update_projects_alter () trên biểu mẫu cài đặt cập nhật (/ admin / báo cáo / cập nhật / cài đặt). Nó cho phép lựa chọn các chủ đề và mô-đun tùy ý cũng như tự động phát hiện các mô-đun tùy chỉnh, mô-đun được vá và các mô-đun tính năng cụ thể theo trang web.

nhập mô tả hình ảnh ở đây


0

Về cơ bản, bạn đã làm một ngã ba, phải không? Bạn nên làm điều đó:

  1. Đổi tên nó để bao gồm dấu ngã ba của bạn
  2. Trong tệp thông tin, đặt project status urlvào kho lưu trữ của mô-đun đó.

Cuối cùng nhưng không kém phần quan trọng, nếu nó không được hỗ trợ nhưng không được ủng hộ đối với bất kỳ mô-đun nào khác, hãy xem xét yêu cầu trở thành người đồng bảo trì và chia sẻ các bản sửa lỗi của bạn với cộng đồng.


2
Donschoe: bảo trì ở đây. Tôi rất sẵn lòng giúp bạn tăng tốc nếu bạn muốn.
cập bến
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.