Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

Modul programmieren, das ähnl. wie ein View Werte ausgibt

Eingetragen von joya (190)
am 30.09.2010 - 10:23 Uhr in
  • Anfängerfragen
  • Drupal 6.x

hallo,

ich versuche jetzt schon seit 3-4 Tagen, einen View zu bauen, der mir einige Werte aus der DB ausließt, umrechnet und ausgibt.
Es handelt sich um 5-7 Felder aus der DB aus 2 verschiedenen Tabellen (2 Inhalttyps).

Es wird genau ein ROW ausgegeben mit berechneter Felder
1x Durchschnittswert aller Zeilen
1x MAX Wert aller Zeilen...
1x Zeile A + Zeile B
1x Durchschnitt A wenn im Zeile A ein Wert zwischen 1 bis 10
1x Durchschnitt A wenn im Zeile A ein Wert zwischen 10 bis 20 ....

und so weiter.

Also, Durchschnittswerte einer Spalte oder MAX- oder SUM-Werte könnte ich ganz einfach mit Views Calc berechnen und ausgeben.
Problematisch wird wenn ich zwischen Spalten und ausgegebenen Werten kombinieren und rechnen muss. Das lässt sich vielleicht auch mit Views Calc lösen, aber nicht direkt im View Ansicht, sondern erst in Modul-Einstellungen von Views Calc ... dies scheint mir nicht so komfortabel

Deswegen habe ich mich entschieden, für diesen Fall einen Mini-Modul zu programmieren, das mir genau diese Werte aus der DB ausließt, berechnet und ausgibt. SO,
das Modul habe ich angelegt, SQL-Abfrage findet statt, aber ich weiß jetzt leider nicht, wie könnte ich diesen neue berechnete Werte bei jedem Node von z.B. Inhalttyps "Auto" hinzufügen?? Welche Hook-Funktion erledigt dies und wie muss sie aussehen?

Danke

‹ Bild anstatt Text als Link [Gelöst] caching trotz deaktiviertem caching? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Mit $node = node_load($nid);

Eingetragen von wla (9466)
am 30.09.2010 - 10:37 Uhr

Mit $node = node_load($nid); kannst Du Dir einen Node laden und mit node_save($node); auch wieder speichern. Wenn die NodeStruktur bereits das zu füllende Feld hat, ist das mit einer simplen Zuweisung dazwischen zu erledigen. Falls nicht empfehle ich, erst mit CCK das Feld für den entsprechenden Datentyp anzulegen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Um das als Wert dem Node

Eingetragen von Sense (1560)
am 30.09.2010 - 10:49 Uhr

Um das als Wert dem Node Objekt zuzuordnen benötigst Du den hook_nodeapi(). mit dem switch "load"

Also z.B. so:

<?php
/**
* Implementation of hook_menu().
*/
function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  if(
$node->type == 'my_content_type') {
    switch(
$op) {
      case
'load':
       
$node->irgendwas = 'irgendwas';
        break;
    }
  }
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

ja, genau so habe ich das

Eingetragen von joya (190)
am 30.09.2010 - 11:45 Uhr

ja, genau so habe ich das jetzt vor,

was meinst Du konkret unter "irgendwas" hier:
$node->irgendwas

muss nicht hier "$node->content" stehen?

Wie kann ich diese zusätzliche Felder dann noch richtig platzieren in meinem NODE?

  • Anmelden oder Registrieren um Kommentare zu schreiben

wla schrieb Mit $node =

Eingetragen von joya (190)
am 30.09.2010 - 11:49 Uhr
wla schrieb

Mit $node = node_load($nid); kannst Du Dir einen Node laden und mit node_save($node); auch wieder speichern. Wenn die NodeStruktur bereits das zu füllende Feld hat, ist das mit einer simplen Zuweisung dazwischen zu erledigen. Falls nicht empfehle ich, erst mit CCK das Feld für den entsprechenden Datentyp anzulegen.

Werner

hallo Werner,
das könnte ich dann eigenltich direkt in meiner template.php machen, ohne ein Zusatzmodul dafür zu programmieren, oder?

Weil, wenn ich es in ein Modul packe, dann brauche ich auch passenden Hook() der mir das in einem geöffneten NODE ausgibt, oder?

verstehe ich das richtig??

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du kannst es natürlich auch

Eingetragen von Sense (1560)
am 30.09.2010 - 11:53 Uhr

Du kannst es natürlich auch in $node->content packen.
Wenn Du es aber in einer eigenen Variable im Template zur Verfügung haben willst, musst Du es als eigene Variable anlegen.
Die Zuweisung erfolgt dann über das Node Objekt.

Soll die Variable $myparam heissen muss Du im hook_load(). $node->myparam einen Wert zuweisen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

wenn ich dann mit $myparam

Eingetragen von joya (190)
am 30.09.2010 - 12:26 Uhr

wenn ich dann mit
$myparam heissen muss Du im hook_load(). $node->myparam
arbeite, dann muss ich diese Variable NICHT zwingend als neues Feld in CCK anlegen,

und wenn ich mich entscheide, für meine Variable $myparam ein neues Feld in CCK anzulgen, dann könnte ich
dieses Feld so ändern:

$node['field_myparamfieldp_value']->content ="etwas" ?>

oder?

verstehe ich das richtig?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du Zuweisung müsste dann

Eingetragen von Sense (1560)
am 30.09.2010 - 12:33 Uhr

Du Zuweisung müsste dann $node->field_myparam heissen, also der Feldname, den Du definiert hast.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also Du mußt den Node schon

Eingetragen von wla (9466)
am 30.09.2010 - 12:45 Uhr

Also Du mußt den Node schon um das Feld erweitern, sonst speichert Drupal Deine Information nicht. Also mußt Du mit CCK ein zusätzliches Feld anlegen, in dem der Wert von Drupal gespeichert werden kann.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

wla schrieb Also Du mußt den

Eingetragen von joya (190)
am 30.09.2010 - 12:59 Uhr
wla schrieb

Also Du mußt den Node schon um das Feld erweitern, sonst speichert Drupal Deine Information nicht. Also mußt Du mit CCK ein zusätzliches Feld anlegen, in dem der Wert von Drupal gespeichert werden kann.

Werner

diese Werte werden nicht gespeichert, bzw. ich muss sie nicht speichern. Es sollte eigentlich nur ein "custom" View sein, dass sich einem Node "anhängt"

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dann kannst Du die Berechnung

Eingetragen von wla (9466)
am 30.09.2010 - 13:06 Uhr

Dann kannst Du die Berechnung im template.php in der preprocess_node-Funktion erledigen und das Ergebnis in eine Variable packen. Die wird dann im node-tpl.php, abhängig von Existens und Nodetyp, bei Bedarf ausgegeben.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

wla schrieb Dann kannst Du

Eingetragen von joya (190)
am 30.09.2010 - 13:34 Uhr
wla schrieb

Dann kannst Du die Berechnung im template.php in der preprocess_node-Funktion erledigen und das Ergebnis in eine Variable packen. Die wird dann im node-tpl.php, abhängig von Existens und Nodetyp, bei Bedarf ausgegeben.
Werner

wie würde die Ausgabe in node-tpl.php aussehen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, für eine gescheite Views

Eingetragen von Hyp1 (1463)
am 30.09.2010 - 14:56 Uhr

Hi,

für eine gescheite Views Integration musst
Du den views_data hook implementieren.
Dann kannst Du die benötigten Felder die Du ausliest und berechnest
einfach in dern Einstellungen der Ansicht auswählen.

LG

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)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
Weiter

Neue Kommentare

  • Was für einen Server benutzt
    vor 3 Tagen 22 Stunden
  • Wenn die Subdomain auf
    vor 5 Tagen 20 Stunden
  • ordnerstruktur
    vor 6 Tagen 7 Stunden
  • Die Subdomain muß auf den
    vor 1 Woche 1 Tag
  • Verwende doch das Tag dafür,
    vor 4 Wochen 3 Tagen
  • Guckst du hier: step by step
    vor 4 Wochen 3 Tagen
  • Guckst du hier: step by step
    vor 4 Wochen 3 Tagen
  • Ich habe ja keine Angst vor
    vor 5 Wochen 5 Tagen
  • Ist grundsätzlichmachbar – aber nichts für „einfach mal schnell“
    vor 6 Wochen 18 Stunden
  • Vielen Dank erst einmal, aber
    vor 6 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250289
Registrierte User: 20513

Neue User:

  • Scottteday
  • MichaelPeeno
  • Pavlotog

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 26 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