"Không có vấn đề nào chỉ có thể được giải quyết bằng cách hack cốt lõi sao? Vậy thì sao?"
Để trả lời câu hỏi này, vâng, đôi khi có những vấn đề bạn phải khắc phục điều đó có nghĩa là bạn phải hack core (hoặc một mô-đun đóng góp).
Trong trường hợp này tôi tin rằng việc hack là được, miễn là bạn đặt nhiều bình luận vào mã bị hack và ghi lại mọi thứ bạn thay đổi.
Ví dụ, đối với bất kỳ thay đổi cốt lõi hoặc đóng góp nào, tôi sẽ tạo một bản vá. Nếu nó là chung chung và hữu ích cho những người khác, tôi gửi nó cho drupal.org trong một vấn đề, nếu không thì đó là để sử dụng cho riêng tôi.
Sau đó tôi cam kết tệp vá để kiểm soát phiên bản của mình cùng với thay đổi mã.
Điều này có nghĩa là tôi có thể nhìn thấy bằng cách tìm kiếm các tệp vá nếu có thứ gì đó đã bị hack.
Ngoài ra, tôi cũng thêm một danh sách các bản hack vào tài liệu dành cho nhà phát triển cho trang web (bạn thực sự nên có tài liệu dành cho nhà phát triển vì lợi ích của những người khác có thể làm việc trên trang web và cho chính bạn khi bạn chắc chắn quên mọi thứ).
Trong tài liệu hack này, tôi liệt kê từng hack với những gì hack thực hiện và tại sao, các mô-đun / tệp bị ảnh hưởng, tên của tệp vá có chứa mã hack và liên kết đến một vấn đề drupal.org liên quan nếu có (hầu như luôn luôn trong trường hợp của tôi là có).
Sau đó, bạn và bất kỳ ai khác làm việc trên trang web trong tương lai đều có một danh sách đầy đủ các bản hack và không phải lo lắng về việc vô tình phá vỡ thứ gì đó bằng một bản cập nhật.
Sau đó, để biết quá trình cập nhật, tôi kiểm tra danh sách các bản hack và xem nhanh các tệp vá trong tất cả các mô-đun tôi đang cập nhật. Nếu có một bản hack và nó có vấn đề về drupal.org, tôi sẽ kiểm tra vấn đề để xem phiên bản mới nhất có bản vá đi kèm hay không, trong trường hợp đó tôi sẽ xóa bản hack bằng bản cập nhật và xóa nó khỏi danh sách hack của mình (thực hiện chắc chắn bằng cách xem các thông báo cam kết của drupal.org rằng những gì đã cam kết giống với phiên bản của bản vá bạn đang sử dụng hoặc ít nhất là về mặt chức năng giống nhau).
Nếu bản vá không được cam kết, tất cả những gì tôi phải làm là cập nhật các mô-đun và áp dụng lại các bản vá. Trong nhiều trường hợp, các bản vá vẫn sẽ được áp dụng sạch sẽ và quá trình này rất dễ dàng, nhưng đôi khi bạn phải lục lại các bản vá cho phiên bản mới và sau đó cam kết phiên bản mới của bản vá vào kho lưu trữ cục bộ của bạn (cùng với việc đăng nó lên bản có liên quan vấn đề drupal.org khi áp dụng).
Một điều nữa tôi muốn làm nếu tôi có các bản vá hoặc bản vá quan trọng hơn tương tác với tính năng cốt lõi của một mô-đun (hoặc chỉ các mô-đun tùy chỉnh mở rộng trên đầu mô-đun drupal.org), là kiểm tra ghi chú phát hành của mô-đun được cập nhật ( điều đó có nghĩa là tất cả các phiên bản ở giữa phiên bản hiện tại của bạn và phiên bản bạn đang cập nhật) và đảm bảo không có gì có khả năng phá vỡ mã của bạn. Lưu ý: Rất nhiều người bảo trì mô-đun tốt trong những ngày này với việc đưa ra các ghi chú phát hành hoàn chỉnh nhưng vẫn còn rất nhiều ghi chú phát hành rác. Trong trường hợp này, trong một số trường hợp, tôi xem qua tất cả các thông báo cam kết kể từ phiên bản hiện tại của tôi (điều này thường chỉ trong trường hợp tôi có mã phức tạp tương tác sâu với mô-đun khác). Ghi chú:
Sau đó, sau khi cập nhật (trên bản sao phát triển của trang web), hãy kiểm tra kỹ lưỡng. Cuối cùng bạn sẽ tìm hiểu ý nghĩa kỹ lưỡng sau khi một vài lỗi xảy ra.
Sau đó, khi nó đã được kiểm tra đầy đủ, hãy nâng cấp trang web trực tiếp hoặc đẩy các bản cập nhật cục bộ của bạn lên hoặc bất kỳ quy trình triển khai nào của bạn có thể.
Lý do tại sao mọi người nói không làm điều đó, ngay cả khi nó dễ dàng hơn: Bởi vì hầu hết mọi người không có hệ thống như tôi đã phác thảo, vì vậy khi đến lúc phải cập nhật hoặc trang web được giao cho người khác làm việc trên đó, nó trở thành một cơn ác mộng và rất nhiều thời gian (đôi khi là một lượng thời gian khổng lồ) phải được dành để giải quyết các lỗi và theo dõi các vụ hack và tìm ra lý do tại sao chúng ở đó, v.v.
Nếu bạn từng kế thừa một trang web như thế bạn sẽ hoàn toàn hiểu :)