Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

[gelöst] mymodule_schema_alter(), aber Werte nicht im node-Object

Eingetragen von Jehu (16)
am 30.12.2009 - 16:13 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hallo Leute,

ich entwickle gerade mein erstes ernsthaftes Drupal-Modul. Genauer gesagt geht es um ein Modul, das die Funktionalität von Ubercart erweitert (hätte mir was leichteres aussuchen sollen...).

Folgendes definiere ich in der Datei mymodule.install Datei (unter anderem):

function mymodule_schema_alter(&$schema) {
  // Add fields to existing schema.
  $schema['uc_products']['fields']['new_field'] = array(
   'type' => 'varchar',
   'length' => '255',
   'not null' => FALSE,
  );
}

Außerdem wird die Tabelle 'uc_products' um das DB-Feld "new_field" erweitert.
Das Datenbankfeld "new_field" habe ich auch mit Inhalt gefüllt.

In der mymodule_nodeapi bekomme ich aber mit $node->new_field immer nur NULL, statt den in der DB stehenden Wert.
$node->sell_price jedoch liefert den korrekten Wert (den Verkaufspreis).

Was muss man außer dem hook schema_alter() noch beachten, damit das node-Object den Inhalt des Datenbankfeldes erhält?

Danke im voraus!

‹ [gelöst]Titel von automatisch erstellten Nodes immer leer Anzeigen von Inhalten für anonymous User... ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

hook_nodeapi

Eingetragen von stBorchert (6003)
am 30.12.2009 - 16:20 Uhr
Jehu schrieb

Was muss man außer dem hook schema_alter() noch beachten, damit das node-Object den Inhalt des Datenbankfeldes erhält?

Du musst natürlich Deine Daten noch selbst an das Node-Objekt anhängen. Automatisch funktioniert das nicht.
Implementiere in Deinem Modul hook_nodeapi und füge dann bei $op == 'load' Deine Daten ins Objekt ein.
Schau mal, wie Übercart das macht, dort müsste es auch eine ..._nodeapi geben.

hth,

 Stefan

--
Sei nett zu Deinem Themer!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke!

Eingetragen von Jehu (16)
am 31.12.2009 - 17:55 Uhr

Ah! So klappt's nun also:

function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
    switch ($op) {
        case 'load':
            $query = db_query("SELECT new_field FROM {uc_products} WHERE nid = %d AND vid = %d", $node->nid, $node->vid);
            $result = db_result($query);
            $node->new_field = $result;
            break;
    }
}

Ich hätte eigentlich gehofft, dass Drupal das Schema dazu benutzt, die entsprechenden Datenbankfelder ins node-Object zu packen und diese automatisch zur Verfügung stehen. Aber ich habe das nun verstanden - es existiert nur im node-Object, was auch explizit im Modul (in diesem Fall in uc_products) hinzugefügt wurde.

Vielen Dank für die schnelle Hilfe.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
Weiter

Neue Kommentare

  • Vielen Dank erst einmal, aber
    vor 2 Stunden 15 Minuten
  • Du hast die "Trusted host
    vor 8 Stunden 18 Minuten
  • Bitte genauer den aktuellen Lösungs-Ansatz beschreiben
    vor 1 Woche 6 Tagen
  • Git und rsync sind die wichtigsten Werkzeuge
    vor 2 Wochen 2 Tagen
  • Arrrrg. Nix Tabelle :-D /*
    vor 6 Wochen 4 Tagen
  • Textboxen mit Tabelle
    vor 6 Wochen 5 Tagen
  • Du sollst ja auch keine
    vor 6 Wochen 5 Tagen
  • Theme
    vor 6 Wochen 5 Tagen
  • Welches Theme benutzt du
    vor 6 Wochen 5 Tagen
  • Mit Responsive Raster hatte
    vor 6 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250278
Registrierte User: 20493

Neue User:

  • Robertolix
  • DavidBit
  • JeraldZeF

» Alle User anzeigen

User nach Punkten sortiert:
wla9464
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 20 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association