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 - 09: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 (9461)
am 30.09.2010 - 09: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 (1559)
am 30.09.2010 - 09: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 - 10: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 - 10: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 (1559)
am 30.09.2010 - 10: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 - 11: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 (1559)
am 30.09.2010 - 11: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 (9461)
am 30.09.2010 - 11: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 - 11: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 (9461)
am 30.09.2010 - 12: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 - 12: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 - 13: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

  • 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
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 6 Tagen
  • Hey danke
    vor 2 Wochen 2 Stunden
  • Update: jetzt gibt's ein
    vor 2 Wochen 20 Stunden
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 2 Tagen
  • In der entsprechenden View
    vor 3 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 2 Tagen
  • gelöst
    vor 5 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 2 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

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