"Хіба не існують проблеми, які можна вирішити лише взломом ядра? Що тоді?"
Щоб відповісти на це запитання, так, іноді виникають проблеми, які доводиться долати, це означає, що вам потрібно зламати ядро (або модуль contrib).
У цьому випадку я вважаю, що нормально зламати, поки ви помістите багато коментарів у свій зламаний код і документуєте все, що ви змінили.
Наприклад, для будь-якої зміни ядра або contrib я створюю виправлення. Якщо він є загальним і корисним для інших людей, я надсилаю його на drupal.org у випуску, інакше це для мого власного використання.
Потім я фіксую патч-файл для контролю моєї версії разом із зміною коду.
Це означає, що я бачу, шукаючи файли патчів, якщо щось було зламано.
На додаток до цього, я додаю також список хакерів до документації для розробників для сайту (ви дійсно повинні мати документацію для розробників заради інших, які можуть працювати на сайті, і для себе, коли ви неминуче забудете речі).
У цій документації про хаки я перераховую кожен хак із тим, що робить хак і чому, на які впливають модулі / файли, ім'я файлу патча, що містить код хаку, та посилання на пов'язану проблему drupal.org, якщо така є (майже завжди у моєму випадку є).
Тоді ви та хто ще працюватиме на сайті в майбутньому, маєте повний список хак і вам не доведеться турбуватися про те, щоб випадково зламати щось із оновленням.
Потім для процесу оновлення я перевіряю свій список хаків і швидко шукаю патч-файли у всіх модулях, які я оновлюю. Якщо є злом, і він має проблему drupal.org, я перевіряю проблему, щоб побачити, чи є в останній версії включений патч, і в такому випадку я знімаю хак з оновленням і видаляю його зі свого списку хаків (зробити переконавшись, що переглядає drupal.org повідомлення повідомлень про те, що те, що було зроблено, збігається з версією виправлення, яку ви використовуєте, або, принаймні, функціонально однаковою).
Якщо виправлення не було зроблено, все, що мені потрібно зробити, це оновити модулі та повторно застосувати виправлення. У багатьох випадках патчі все-таки будуть застосовуватися чисто і процес простий, але іноді доводиться перекручувати патчі для нової версії, а потім здійснювати нову версію патча у вашому локальному сховищі (разом з розміщенням його у відповідному випуск drupal.org, де застосовано).
Ще одна річ, яку мені подобається зробити, якщо у мене є більш значні виправлення або виправлення, які взаємодіють з базовою невідповідністю модуля (або просто спеціальні модулі, що розширюються поверх модуля drupal.org), - це перевірити нотатки до випуску оновленого модуля ( це означає, що вся версія між вашою поточною версією та версією, до якої ви оновлюєтесь), і переконайтеся, що в ній немає нічого, що може порушити ваш код. Примітка. Дуже багато технічних обслуговувачів модулів корисні в наші дні, коли вони дають нотатки про повний випуск, але все ще багато таких, що роблять нотатки про випуск сміття. У цьому випадку в деяких випадках я проходжу всі повідомлення про фіксацію з моєї поточної версії (зазвичай це лише у випадках, коли у мене складний код, який глибоко взаємодіє з іншим модулем). Примітка:
Потім, після оновлення (на розробці копії сайту), ретельно протестуйте. Зрештою ви дізнаєтесь, що всебічно означає після того, як проскочить кілька помилок.
Потім, коли він буде достатньо протестований, оновіть веб-сайт, що перебуває в реальному часі, або підсуньте місцеві оновлення вгору або будь-який процес розгортання.
Причина, по якій всі кажуть, не робіть цього, навіть якщо це простіше: Тому що більшість людей не має такої системи, як у мене, а тому, коли настає час робити оновлення, або сайт передають комусь іншому для роботи далі, це стає кошмаром, і багато часу (іноді величезної кількості часу) потрібно витратити на вирішення помилок і відстеження хак-хав, а також на пошук того, чому вони там і т.д.
Якщо ви коли-небудь успадковуєте такий сайт, ви повністю зрозумієте :)