CCK Feld-Gruppen auslesen

am 24.06.2008 - 11:34 Uhr in
Moin,
ich bin noch zeimlich neu in der Drupal-Welt, und beschäftige mich zur Zeit viel mit Templating. Jetzt habe ich aber ein Problem zu dem ich keine Lösung finde. Folgendes:
Ich habe per CCK einen neuen Inhaltstypen angelegt. Die Felder des Inhaltstyps sind dabei in mehrere Gruppen unterteilt. Darin enthalten sind auch fünf Gruppen, welche unterschiedliche Messwerte enthalten. Diese Messwerte sollen entsprechend ihrer Gruppenzuordnung zusammen ausgespielt werden, sprich alle Wert aus Gruppe 1 in einer Tabelle, alle Werte aus Gruppe 2 in einer Tabelle, ... Dieser Inhaltstyp wird jedoch nicht direkt angezeigt, sondern aus einem anderen Inhaltstyp reverenziert.
Mein Problem ist nun, das ich zwar per node_laod() den reverenzierten Inhaltstype laden kann, ich auch alle Felder der Messwerte bekomme, jedoch die Gruppen und die Zuordnung der Felder nicht. Ich bin aber der Meinung das man per $node->content['group_NAME'] auch eine Feld-Gruppe ansprechen kann. Liege ich da falsch?
Beste Grüße
djdops
- Anmelden oder Registrieren um Kommentare zu schreiben
Hast du dieses schon
am 24.06.2008 - 18:31 Uhr
Hast du dieses schon versucht?
<?php
print "<pre>";
print_r($node);
print "</pre>";
?>
Sicher
am 25.06.2008 - 10:13 Uhr
Moin lutzer,
ja, hab ich schon versucht. Deswegen hab ich ja gefragt. Normaler Weise werden dabei ja auch die Gruppen ausgegeben. Aber das passiert bei mir eben nicht. Die Messwerte und alle anderen Felder sind da. Aber keine einzige Gruppe. Auch die restliche nGruppen fehlen.
Beste Grüße
djdops
neue Gruppe
am 25.06.2008 - 10:23 Uhr
Ich hab mal eine neue Gruppe hinzugefügt. Die wird auch nicht angezeigt...
Hab es grad mal
am 25.06.2008 - 10:57 Uhr
Hab es grad mal nachgebaut.
Bei mir wird die Gruppe als array angezeigt. Darin dann mein Feld, wiederum als array.
Komisch...
Werden denn dann deine Felder als array direkt im $node->content angezeigt?
So werden sie angezeigt
am 25.06.2008 - 12:00 Uhr
Alle Felder werden als Array in der ersten Dimension von $node angezeigt.
["field_messwert"]=>
array(1) {
[0]=>
array(1) {
["value"]=>
string(2) "25"
}
}
Sorry, liegt natürlich an
am 25.06.2008 - 13:37 Uhr
Sorry, liegt natürlich an der Referenzierung dass sie nicht gezeigt werden...
Zeigst du mal den gesamten Code incl. node_load() und wo hast du den stehen?
Tatsächlich
am 25.06.2008 - 15:03 Uhr
Danke für den Hinweis. Es scheint tatsächlich daran zu liegen, das es eine Referenz ist, und der entsprechende Node per node_load() geladen wird.
function getNodeObject($params)
{
if (!$params) { return null; }
$stdObject = new stdClass();
if ($params['nid']) { $stdObject->nid = $params['nid']; }
if ($params['type']) { $stdObject->type = $params['type']; }
return node_load($stdObject);
}
Ich habe den referenzierten Node mal direkt aufgerufen. Da werden alle Gruppen angezeigt. Gibt es denn eine Möglichkeit auch die Gruppen zu bekommen wenn man einen Node per node_load() lädt?
Doch natürlich geht
am 25.06.2008 - 18:14 Uhr
Doch natürlich geht es
<?php
$node = node_view(node_load($nid));
$gruppe = $node['content'][$group_name'];
?>
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING
Hm... klappt bei mir nicht.
am 25.06.2008 - 19:28 Uhr
Hm... klappt bei mir nicht. Ich habe da wohl doch auch noch grundlegende Fragezeichen:
node_view() gibt doch das HTML aus dachte ich, wie kann ich dann damit auf
$node['content'][$group_name'] zugreifen?
Und so
<?php
$node = node_load($nid);
print_r($node);
?>
ist bei mir $node->content gar nicht vorhanden.
Verstehe ich auch nicht.
Ich gebe das jetzt über den "PHP ausführen" Block von devel ein.
Daran kann's nicht liegen, oder?
Entschuldigung da hatte ich
am 25.06.2008 - 19:57 Uhr
Entschuldigung da hatte ich mich verlesen
http://api.drupal.org/api/function/node_build_content/5
Diese Funktion generiert $node->content
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING
Klappt trotzdem nicht in der
am 25.06.2008 - 23:56 Uhr
Klappt trotzdem nicht in der Referenz...
Nochmal kurz das Problem:
Node 21 (eines Inhaltstyps) enthält Messwerte in verschiedenen Gruppen.
Node 22 (eines anderen Inhaltstyps) enthält ein Referenzfeld auf Node 21
<?php
$node = node_load(21);
$inhalt = node_build_content($node);
print_r ($inhalt);
?>
zeigt die Gruppennamen an.
(Kleiner Nebenschauplatz: print $inhalt['content']['group_NAME'] funktioniert leider nicht, warum?)
<?php
$node = node_load(22);
$inhalt = node_build_content($node);
print_r ($inhalt);
?>
tut dieses nicht...
Doch es geht
am 26.06.2008 - 09:04 Uhr
Um bei Deinem Beispiel zu bleiben, lutzer. Node 22, welcher die Referenz enthält, zeigt auch nur die Referenz an (nid, titel, link). Das ist ja auch gut so, weil die eigentlichen Daten des Referenzierten Node 21 ja nichts im Node 22 zu suchen haben. Mein Problem war ja, das auch Node 21, dem die Daten gehören, keine Gruppen anzeigte. Ich habe meine Funktion jetzt entsprechend umgebaut:
function getNodeObject($params)
{
if (!$params) { return null; }
$stdObject = new stdClass();
if ($params['nid']) { $stdObject->nid = $params['nid']; }
if ($params['type']) { $stdObject->type = $params['type']; }
$nodeObj = node_build_content(node_load($stdObject));
return $nodeObj;
}
Der Referenzierte Node 21 enthält nun auch die Feldgruppen und die Zuordnung der Felder innerhalb der Gruppen.
Vielen Dank für Eure Hilfe.
Beste Grüße
djdops
Ach so, alles klar. Ich
am 26.06.2008 - 11:31 Uhr
Ach so, alles klar.
Ich dachte du wolltest die "Fremdgruppen" sehen...
LG