Übergangsplan für PHP5-Abscheulichkeit zu Drupal


8

Hintergrund

In einem Jahr werden meine Kunden einen relativ komplexen Intranet-Portal-Service (Planung, tatsächliche Nachverfolgung und Berichterstellung usw.) nach Drupal portieren, weil die Zentrale dies sagt. Es wurden nur sehr geringe Anstrengungen unternommen, um festzustellen, ob dies die richtige technische Wahl ist, und sie liegt außerhalb der Kontrolle meiner Kunden oder sogar ihrer Chefs.

Das aktuelle Portal ist ein Gräuel, der gerade überarbeitet wird, und ich glaube, dass der kostengünstigste Plan darin besteht, eine Domänenmodellschicht über Doctrine 2 einzuführen und 99,9% aller Geschäfts- und Eingabevalidierungslogik in die Modelle zu integrieren Ausgraben des Gräuels, bis es sich um eine Skelettansicht und eine Authentifizierungslogikschicht handelt.

Frage

Scheint dies für jeden Drupal-Spezialisten ein praktikabler Ansatz zu sein? Könnte Doctrine2 gut mit Drupal spielen oder benötigt die Drupal-Logik auf höherer Ebene eine viel engere Integration in die Daten?

Antworten:


9

Wir haben einige Sites durchgeführt, an denen wir externe Systeme mit Drupal verbunden haben, wo die Daten im externen System gespeichert werden mussten . Damit arbeite ich die meiste Zeit.

Wenn wir dies tun, erstellen wir normalerweise einen Inhaltstyp, um den Inhalt im anderen System zu "stubben". Der Inhaltstyp enthält nur den Knotentitel und ein CCK-Feld für die eindeutige Kennung im anderen System. Daneben gibt es viele Funktionen von hook_nodeapi . Beispielsweise loadruft der Hook das Remote-System auf und fügt die Daten dem Knoten hinzu. Sie müssen auch eine Methode entwickeln, um die externen Daten in die Suchergebnisse zu übernehmen. Es gibt einige Methoden dafür, aber diese sind zu lang, um hier darauf einzugehen.

Obwohl es einige Nachteile gibt, finden wir, dass dies gut funktioniert und normale Drupal-Inhalte wie Kommentare, Tags usw. zulässt.


Wenn es extern sein muss, ist dies ein guter Ansatz.
Jeremy French

4

Angesichts des Zeitplans ist es nur sinnvoll, dies in Drupal 7 zu erstellen. Eine der wichtigsten Funktionen von Drupal 7 sind Entitäten, DBNTG und Felder.

Ein kurzer Überblick

  • Entitäten sind eine Möglichkeit, eine Datenstruktur zu definieren. Beispiele für Entitäten, die in Drupal integriert sind, sind Knoten (Hauptinhalt), Benutzer und Taxonomiebegriffe.
  • Felder können an eine Entität angehängt werden, die auch Daten enthält. Die Verwendung von Feldern hat den Vorteil, dass nur ein Ort für die Verarbeitung der Daten vorhanden ist, und sie können auf verschiedene Arten erweitert werden. Ein Beispiel für ein Feld kann ein Dateianhang oder ein Verweis auf eine andere Entität sein.
  • DBTNG (Datenbank der nächsten Generation) hatte die Drupal-Community den Codenamen der neuen Datenbankabstraktionsschicht. Früher haben wir Abfragen mit Platzhaltern durchgeführt (was immer noch unterstützt wird), aber jetzt werden die meisten Abfragen mit Klasse erstellt. Ein Grund dafür ist auch, dass Felder ihre Datenbanktabelle (n) basierend auf Einstellungen erstellen. Dies hilft beim Erstellen von Code, der auch dann funktioniert, wenn die Felder mit unterschiedlichen Einstellungen erstellt wurden.

Dies sind nur einige der Funktionen. Dies bedeutet jedoch, dass Sie, sofern Sie keinen Drupal-Gräuel erstellen möchten, darüber nachdenken sollten, wie Drupal funktioniert, und dies verwenden sollten, anstatt zu versuchen, Drupal so zu gestalten, wie es nicht vorgesehen ist.

Da Drupal PHP ist, können Sie benutzerdefinierte Module erstellen und mit Doctrine2 das tun, was Sie wollen. Aber ich vermute, dass Sie am Ende eine Site haben werden, die mit den meisten Drupal-Sites sehr wenig gemein hat.


Leider verlasse ich meinen Kunden in ungefähr einem Monat, so dass er danach alleine ist. Die Abomination ist unter ziemlich großer Last / Nutzung, wobei neue "Funktionen" hinzugefügt werden, während wir sprechen. Die ganze Situation ist ein Durcheinander, das ich teilweise nicht in eine bessere Richtung gelenkt habe. Zu meiner eigenen Verteidigung ging es eine Woche vor meiner Einstellung live, um Wasser zu retten.
David

4

Dies ist eine ziemlich breite Frage, daher werde ich eine Antwort auf hoher Ebene geben. Wenn Sie spezifischere Fragen haben, stellen Sie diese bitte als separate Fragen.

Ich würde vorschlagen, dass Sie die Struktur der aktuellen Site so weit wie möglich abbilden. Welche Art von Dingen macht es, welche Workflows gibt es. Was ist der Inhalt, was sind die Benutzer.

Inhaltstypen sind eine praktische Möglichkeit, Inhalte aufzuteilen. Sogar der Greuel hätte Typen gehabt, die ich (ich hätte gehofft) URLs zugeordnet hätte.

Nachdem Sie die Inhaltstypen festgelegt haben, können Sie die Migration des Inhalts auf Ihre neue Site prüfen. Dann können Sie sich Dinge wie Workflows, Zeitpläne, Benutzer usw. ansehen.

Ich würde es vorziehen, im Großhandel umzuziehen. Die Verwaltung von Inhalten durch mehr als ein System ist ein großes technisches Problem. Und verdoppelt Ihren Wartungsaufwand.

Eine Sache, die ich sagen würde, ist, dass es sich lohnen könnte, jemanden dafür einzustellen. Es gab einige sehr erfolgreiche Drupal-Migrationen mit riesigen Datenmengen. Wenn Sie jedoch keine Erfahrung mit Drupal haben, können Sie mehrere Fehltritte machen und sich viel Zeit kosten. (Ich kann cyrve persönlich empfehlen , ich habe keine aktuelle Zugehörigkeit zu ihnen)


Ich werde Cyrve an meinen Klienten weitergeben. Da niemand in der Abteilung meines Kunden oder in einer angrenzenden Abteilung, die Drupal vorantreibt, über Erfahrung in der Entwicklung von Drupal verfügt, sollte es unterhaltsam sein, zu sehen, wie sich dies in einem Jahr entwickelt.
David
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.