"Gibt es keine Probleme, die nur durch Hacken des Kerns gelöst werden können? Was dann?"
Um diese Frage zu beantworten, gibt es manchmal Probleme, die Sie überwinden müssen und die bedeuten, dass Sie den Kern (oder ein Contrib-Modul) hacken müssen.
In diesem Fall halte ich es für in Ordnung, zu hacken, solange Sie viele Kommentare in Ihren gehackten Code einfügen und alles dokumentieren, was Sie ändern.
Beispielsweise erstelle ich für jede Kern- oder Beitragsänderung, die ich vornehme, einen Patch. Wenn es allgemein und für andere nützlich ist, sende ich es in einer Ausgabe an drupal.org, ansonsten ist es für meinen eigenen Gebrauch.
Anschließend übergebe ich die Patch-Datei zusammen mit der Codeänderung an meine Versionskontrolle.
Dies bedeutet, dass ich nach Patch-Dateien suchen kann, wenn etwas gehackt wurde.
Darüber hinaus füge ich der Entwicklerdokumentation für die Site eine Liste von Hacks hinzu (Sie sollten wirklich Entwicklerdokumentation haben, um anderen zu helfen, die auf der Site funktionieren könnten, und um sich selbst zu helfen, wenn Sie unvermeidlich Dinge vergessen).
In dieser Hack-Dokumentation liste ich jeden Hack mit der Funktion und dem Grund des Hacks, den betroffenen Modulen / Dateien, dem Namen der Patch-Datei, die den Hack-Code enthält, und einem Link zu einem verwandten drupal.org-Problem auf (fast immer) in meinem Fall gibt es).
Dann haben Sie und alle anderen, die in Zukunft auf der Website arbeiten, eine vollständige Liste von Hacks und müssen sich keine Sorgen machen, dass Sie versehentlich mit einem Update etwas kaputtmachen.
Dann überprüfe ich für den Update-Vorgang meine Liste der Hacks und suche schnell nach Patch-Dateien in allen Modulen, die ich aktualisiere. Wenn es einen Hack gibt und es ein Problem mit drupal.org gibt, überprüfe ich das Problem, um festzustellen, ob der Patch in der neuesten Version enthalten ist. In diesem Fall blase ich den Hack mit dem Update weg und entferne ihn aus meiner Liste der Hacks (make) Wenn Sie sich die Commit-Nachrichten von drupal.org ansehen, stellen Sie sicher, dass das Commit mit der Version des von Ihnen verwendeten Patches übereinstimmt oder zumindest funktional identisch ist.
Wenn der Patch nicht festgeschrieben wurde, muss ich nur die Module aktualisieren und die Patches erneut anwenden. In vielen Fällen werden die Patches immer noch sauber angewendet und der Vorgang ist einfach. Manchmal müssen Sie jedoch die Patches für die neue Version erneut ausführen und dann die neue Version des Patches in Ihr lokales Repository übertragen (zusammen mit dem Veröffentlichen im relevanten Repository) drupal.org (falls zutreffend).
Eine andere Sache, die ich gerne mache, wenn ich umfangreichere Patches oder Patches habe, die mit der Kernfunktionalität eines Moduls interagieren (oder nur benutzerdefinierte Module, die sich über ein drupal.org-Modul erstrecken), ist das Überprüfen der Versionshinweise des aktualisierten Moduls ( Das bedeutet, dass sich alle Versionen zwischen Ihrer aktuellen Version und der Version befinden, auf die Sie aktualisieren.) Stellen Sie sicher, dass sich nichts befindet, das Ihren Code beschädigen könnte. Hinweis: Viele Modulbetreuer sind heutzutage gut darin, vollständige Versionshinweise zu geben, aber es gibt immer noch viele, die Versionshinweise in den Müll werfen. In diesem Fall gehe ich in einigen Fällen alle Commit-Nachrichten seit meiner aktuellen Version durch (dies ist normalerweise nur in Fällen der Fall, in denen ich komplexen Code habe, der tief mit einem anderen Modul interagiert). Hinweis:
Testen Sie dann nach der Aktualisierung (auf einer Entwicklungskopie der Site) gründlich. Sie werden schließlich erfahren, was gründlich bedeutet, nachdem ein paar Bugs durchgesickert sind.
Wenn es ausreichend getestet wurde, aktualisieren Sie die Live-Site oder übertragen Sie Ihre lokalen Updates oder was auch immer Ihr Bereitstellungsprozess sein mag.
Der Grund, warum jeder sagt, mach es nicht, auch wenn es einfacher ist: Weil die meisten Leute kein System haben, wie ich es skizziert habe, wenn es darum geht, Updates zu machen, oder die Site jemand anderem zur Arbeit übergeben wird dann wird es ein Albtraum und es muss viel Zeit (manchmal sehr viel Zeit) aufgewendet werden, um Fehler zu beheben, Hacks aufzuspüren und herauszufinden, warum sie da sind usw.
Wenn Sie jemals eine solche Site geerbt haben, werden Sie es verstehen :)