Sinvolles Updaten von Drupal Modulen
am 24.03.2009 - 10:23 Uhr in
Hi
Mal eine ganz blöde Frage...
Wie funktioniert es eigentlich wenn ich eine neue Version zu einem bereits aktivierten Modul hochgeladen habe und die update.php ausführe? Wir dann die .install des Moduls ausgeführt?
Habe gesehen das einige Module ****_update_*zahl* nutzen.
Hat dies irgendwelche Vorteile?
Und kann man updates eigentlich auch autom ausführen?
Also z.B. in dem man im Adminpanel einen Link klickt und dieser dann alles abarbeitet!?
Möchte dies alles wissen um meine Module möglichst effektiv und Sinnvoll updaten zu können.
Lg
Uhu
- Anmelden oder Registrieren um Kommentare zu schreiben

Re: Sinvolles Updaten von Drupal Modulen
am 24.03.2009 - 13:46 Uhr
Wie funktioniert es eigentlich wenn ich eine neue Version zu einem bereits aktivierten Modul hochgeladen habe und die update.php ausführe? Wir dann die .install des Moduls ausgeführt?
Ja. In der .install-Datei liegen aber normalerweise nur ein Haufen von Funktionen. Das Ergebnis der Ausführung ist dann, das die in der .install-Datei definierten Funktionen (z.B.
foo_install,foo_update_1, ...,foo_uninstall) von Drupal aufgerufen werden können.Habe gesehen das einige Module ****_update_*zahl* nutzen.
Hat dies irgendwelche Vorteile?
Beispiel: Du hast ein Modul
foo, das eine eigene Datenbanktabelle mit einem Integerkeyund einem Floatwertverwendet.Damit die Tabelle bei der Installation des Moduls automatisch angelegt wird schreibst du eine Datei
foo.installmit einer Funktion<?php/**
* Implementation of hook_install().
*/
function foo_install() {
// TODO Tabelle mit Integer 'key' und Float 'wert' anlegen
}
?>
Du möchtest dein Modul überarbeiten, weil du aus Konsistenzgründen die Spalte lieber
valuenennen möchtest. Außerdem passt zu der Funktionalität deines Modul eher der Datentyp Decimal. Dazu musst du deine .install-Datei anpassen:<?php
/**
* Implementation of hook_install().
*/
function foo_install() {
// TODO Tabelle mit Integer 'key' und Decimal 'value' anlegen
}
/**
* Implementation of hook_update_N().
*/
function foo_update_1() {
// TODO Decimal Spalte 'value' anlegen
// TODO Daten von Spalte 'wert' in Spalte 'value' migrieren
// TODO Spalte 'wert' löschen
}
?>
Beim Installieren eines Moduls (also z.B. beim erstmaligen Aktivieren) wird hook_install aufgerufen. Dabei merkt sich Drupal, welche hook_update_N existieren und sieht diese als veraltet an.
Beim Aktualisieren eines Moduls wird geschaut, welche hook_update_N in deinem Modul nicht veraltet sind und führt diese aus.
--

Hi Danke für deine
am 25.03.2009 - 08:56 Uhr
Hi
Danke für deine Ausführungen.
Genau sowas habe ich gemeint.
Habe den hook_update_N auch schon in auf der API Page gesehen ihn aber leider voreilig mit einem "Unterpunkt" von hook_update assoziiert...
Jetzt bleibt nur...
Ist es mir möglich die update.php autom ausführbar zu machen?
Also das duch anklicken einen Update Links bspw. diese Funktionen voll autom ausgeführt werden!?
Lg
Uhu