node title per php abrufen (z.b. in block)?
Eingetragen von aschiwi (1113)
am 26.08.2008 - 11:27 Uhr in
am 26.08.2008 - 11:27 Uhr in
Ich möchte in einem Block "$title" verwenden können. Um $nodeid verwenden zu können, habe ich folgenden Code gefunden:
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) $nodeid = arg(1);
?>
Kann ich da noch was hinzufügen, um $title zu kriegen?
Ich brauche das alles, um für Organic Group Home Pages, die ich mit Panels ersetze, einen eigenen Breadcrumb Trail zu schneidern. Klappt auch alles soweit, nur die Ausgabe des Titels des aktuellen Nodes fehlt :-(
- Anmelden oder Registrieren um Kommentare zu schreiben
Probier's mal so: <?phpif
am 26.08.2008 - 11:41 Uhr
Probier's mal so:
<?php
if ((arg(0) == 'node') && (is_numeric(arg(1)))) { $meinnode = node_load(arg(1)); print $meinnode->title; }
?>
--
bv - DrupalCenter.de
Juhu, das klappt! :-) Danke
am 26.08.2008 - 12:50 Uhr
Juhu, das klappt! :-) Danke dir...
Ich nutze es allerdings so:
<?php
if ((arg(0) == 'node') && (is_numeric(arg(1)))) { $meinnode = node_load(arg(1));
// print $meinnode->title;
}
?>
Damit der Node Titel nicht an dieser Stelle angezeigt wird, sondern an späterer Stelle im Text. Aber genial, danke sehr!!!
undpaul
Longevity Insights from Top Health Podcasts
Falls es jemanden
am 26.08.2008 - 12:57 Uhr
Falls es jemanden interessiert, mein Code sieht insgesamt so aus:
(In einem Block)
<?php
if ((arg(0) == 'node') && (is_numeric(arg(1)))) { $meinnode = node_load(arg(1));
//print $meinnode->title; lädt node title
}
if (arg(0) == 'node' && is_numeric(arg(1))) $nodeid = arg(1);
//print $nodeid; lädt node id
if (module_exists('og')) {
$group_node = og_get_group_context();
$gid02 = $group_node->nid;
$gid = (int)$gid02;
if ($gid02 === null) $gid = 0;
$output .= "<ul>
<li><a title=\"Start\" href=\"/node/$gid\">Start</a></li>
<li><a title=\"Übersicht Gruppe\" href=\"/node/$gid\">Gruppe <strong>$group_node->title </strong></a></li>
<li><a title=\"Übersicht Node in Gruppe\" href=\"/node/$gid/$nodeid\">Node in Gruppe <strong>$meinnode->title</strong></a></li>
</ul>
";
print $output;
}
?>
Und zusätzlich unter Seitenspezifische Sichtbarkeitseinstellungen: Nur anzeigen wenn der folgende PHP-Code true zurückgibt
<?php
$in_og = FALSE;
if (module_exists('og')) {
$in_og = TRUE;
$group_node = og_get_group_context();
$gid02 = $group_node->nid;
$gid = (int)$gid02;
if ($gid02 === null) $gid = 0;
if ($gid == 0) $in_og = FALSE;
}
return $in_og;
?>
Ich benutze diesen Code z.B. für eine eigene Organic Groups Administrationsleiste für Benutzer, da ich die hauseigene von OG aus verschiedenen Gründen nicht benutzen kann. Jetzt werde ich ihn auch benutzen, um in den Panels sozusagen selbstgebaute Breadcrumbs anzuzeigen, weil Panels Breadcrumbs wohl kaputtmacht und ich sowieso eigene bräuchte, da ich Nodes innerhalb einer OG hierarchisch anordne (zu kompliziert zum erklären :-))
undpaul
Longevity Insights from Top Health Podcasts
Wenn man mit dem Code von bv
am 02.09.2008 - 11:07 Uhr
Wenn man mit dem Code von bv den nodetitel kriegt, kann man auch den Inhalt eines CCK-Felds abrufen? Wie müsste das dann aussehen?
<?php
if ((arg(0) == 'node') && (is_numeric(arg(1)))) { $meinnode = node_load(arg(1)); print $meinnode->title; }
?>
wenn ich
print $meinnode->feldname;
nehme, sagt es mir immer "Array". Ich stelle mir das so vor, dass ich mit print_r mal Variablen ausgebe, die ich benutzen kann. Mein Feld sagt ja auch, dass es ein Array ist:[field_field_noderef_arbeitsschr] => Array
(
[0] => Array
(
[nid] => 11
)
)
Daraufhin habe ich sowas probiert
$meinnode->feldname[0][nid];
, aber da passiert nix. Hat jemand ne Idee?undpaul
Longevity Insights from Top Health Podcasts
Klappt's
am 02.09.2008 - 11:31 Uhr
Klappt's so?
<?php
$meinnode->feldname[0]['view'];
?>
--
bv - DrupalCenter.de
Leider nein... :-( Habe auch
am 02.09.2008 - 11:44 Uhr
Leider nein... :-(
Habe auch schon das probiert:
<?php
$feldname[0]['view'];
?>
undpaul
Longevity Insights from Top Health Podcasts
CCK-Feld
am 02.09.2008 - 12:14 Uhr
Hi.
Wenn Dir
print_r($meine_node)
unter Anderem[field_field_noderef_arbeitsschr] => Array
(
[0] => Array
(
[nid] => 11
)
)
<?php
print $meine_node->field_field_noderef_arbeitsschr[0]['nid'];
?>
bestens funktionieren. Hast Du möglicherweise die Anführungszeichen vergessen?
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Ja es gibt mir das aus und
am 02.09.2008 - 13:14 Uhr
Ja es gibt mir das aus und nein, der Code funktioniert nicht und auch kein Anführungszeichen vergessen :-(
Ich benutze das Ganze, um ein Feld mit Prepopulate auszufüllen.
<?php
global $user; ?> <?php
if ((arg(0) == 'node') && (is_numeric(arg(1)))) { $meinnode = node_load(arg(1));
//print $meinnode->title;
}
if (arg(0) == 'node' && is_numeric(arg(1))) $nodeid = arg(1);
//print $nodeid; show me your nid!
if (module_exists('og')) {
$group_node = og_get_group_context();
$gid02 = $group_node->nid;
$gid = (int)$gid02;
if ($gid02 === null) $gid = 0;
// only members can see this
if (in_array($gid, array_keys($user->og_groups)))
$output .= "<ul>
<li><a title=\"hinzufügen\" href=\"/node/add/aktivitaeten-ergebnisse?gids[]=$gid&edit[field_field_field_noderef_testa][0][node_name]=$meinnode->field_field_noderef_arbeitsschr[0]['nid']\">hinzufügen</a></li>
</ul>
";
print $output;
}
?>
Leider bekomme ich damit nur diese URL
?gids[]=19&edit[field_field_field_noderef_testa][0][node_name]=[0]['nid']
. Node Titel und Node ID kann ich mir jedoch anzeigen lassen, das klappt auch. Was könnte ich nur übersehen?***edit: Blöd, wenn ich den ganzen OG-Kram rausnehme, klappt es natürlich so wie es soll... Aber das brauche ich auch, weil der Link nur angezeigt werden soll, wenn der User ihn sehen darf (Subscriber in Group ist) bzw. man sich in einer Gruppe befindet...
undpaul
Longevity Insights from Top Health Podcasts
nochmal ich :-) also bei
am 02.09.2008 - 13:23 Uhr
nochmal ich :-)
also bei folgendem code lasse ich oben den inhalt des feldes anzeigen und versuche diesen inhalt danach als teil der url zu verwenden. die anzeige klappt, im link steht weiter "Array[0]['nid']"...
<?php
global $user; ?> <?php
if ((arg(0) == 'node') && (is_numeric(arg(1)))) { $meinnode = node_load(arg(1));
print $meinnode->field_field_noderef_arbeitsschr[0]['nid'];
}
if (module_exists('og')) {
$group_node = og_get_group_context();
$gid02 = $group_node->nid;
$gid = (int)$gid02;
if ($gid02 === null) $gid = 0;
// only members can see this
if (in_array($gid, array_keys($user->og_groups)))
$output .= "<ul>
<li><a title=\"hinzufügen\" href=\"/grt2/node/add/aktivitaeten-ergebnisse?gids[]=$gid&edit[field_field_field_noderef_testa][0][node_name]=$meinnode->field_field_noderef_arbeitsschr[0]['nid']\">hinzufügen</a></li>
</ul>
";
print $output;
}
?>
undpaul
Longevity Insights from Top Health Podcasts
php Array-Ausgabe
am 02.09.2008 - 13:40 Uhr
... im link steht weiter "Array[0]['nid']" ...
Das schreibst Du ja auch da rein! :-)
...
$output .= "<ul>
<li><a title=\"hinzufügen\" href=\"/grt2/node/add/aktivitaeten-ergebnisse?gids[]=$gid&edit[field_field_field_noderef_testa][0][node_name]=$meinnode->field_field_noderef_arbeitsschr[0]['nid']\">hinzufügen</a></li>
</ul>
";
...
Funktioniert so nicht.
...
$nid = $meinnode->field_field_noderef_arbeitsschr[0]['nid'];
$output .= "<ul>
<li><a title=\"hinzufügen\" href=\"/grt2/node/add/aktivitaeten-ergebnisse?gids[]=$gid&edit[field_field_field_noderef_testa][0][node_name]=$nid\">hinzufügen</a></li>
</ul>
";
...
wird da schon eher funktionieren. Array-Ausgaben in Strings kann php nicht (ohne Gewähr; ist mir jedenfalls nicht bekannt). Du musst das Ergebnis des Array-Aufrufs erst in einer Variable ablegen und die dann verwenden.
Oder
"<ul><li><a title=\"hinzufügen\" href=\"/grt2/node/add/aktivitaeten-ergebnisse?gids[]=$gid&edit[field_field_field_noderef_testa][0][node_name]=". $meinnode->field_field_noderef_arbeitsschr[0]['nid'] ."\">hinzufügen</a></li></ul>"
Noch besser ist die Verwendung von l(). Da fügst Du die Werte dann per Parameter ein.
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hey Stefan, danke dir, das
am 02.09.2008 - 13:59 Uhr
Hey Stefan,
danke dir, das mit den Punkten hab ich mir auch grad zusammengebastelt und es hat geklappt! Man hat's schon schwer als Nicht-PHP-Mensch :-)
Mit "das mit den Punkten" meine ich
$output .= '<a href="/grt2/node/add/aktivitaeten-ergebnisse?gids[]=$gid&edit[field_field_field_noderef_testa][0][node_name]='. $meinnode->field_field_noderef_arbeitsschr[0]['nid'] .' ">hinzufügen</a>'
;
Ist hier und da noch etwas schief, aber ich kriege das ausgegeben was ich will. (Juhu) ***EDIT Code korrigiert, so klappt es perfekt! (JUHU) :-)
Nochmal danke fürs Mitdenken!!!
undpaul
Longevity Insights from Top Health Podcasts
l
am 02.09.2008 - 14:03 Uhr
Ist hier und da noch etwas schief, aber ich kriege das ausgegeben was ich will.
Fein.
Noch ein Tipp: verwende bitte die Funktion l(), um den Link zu bauen. Das sieht im Code wesentlich besser und verständlicher aus.
<?php
$query = 'gids[]='. $gid;
$query .= 'edit[field_field_field_noderef_testa][0][node_name]=';
$query .= $meinnode->field_field_noderef_arbeitsschr[0]['nid'];
$output .= l('hinzufügen',
'node/add/aktivitaeten-ergebnisse',
array('class' => 'dingens', 'title' => 'klick'),
$query
);
?>
So in der Art.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Ach Stefan. Du hast ja so
am 02.09.2008 - 14:22 Uhr
Ach Stefan. Du hast ja so recht. :-) Aber jetzt hab ich noch ein zweites Argument, um ein weiteres Feld mit Prepopulate auszufüllen... Eigentlich bin ich froh, dass es so funktioniert, alles andere würde wieder mindestens ne halbe Stunde rumfummeln bedeuten :-(
Liebe Grüße
Anja
undpaul
Longevity Insights from Top Health Podcasts
propopulate
am 02.09.2008 - 14:33 Uhr
Aber jetzt hab ich noch ein zweites Argument, um ein weiteres Feld mit Prepopulate auszufüllen...
Es gibt für alles eine Lösung :-)
<?php
$fields = array(
'gids[]' => $gid,
'edit[field_field_field_noderef_testa][0][node_name]' => $meinnode->field_field_noderef_arbeitsschr[0]['nid'],
'edit[irgendwas][0][anderes]' => 'Wert',
);
$query = '';
// Felder in $query einfügen
foreach($fields as $field => $value) {
$query .= $field . '=' . $value . '&';
}
// letztes "&" entfernen
if (strlen($query) > 0) {
$query = substr($query, 0, -1);
}
$output .= l('hinzufügen',
'node/add/aktivitaeten-ergebnisse',
array('class' => 'dingens', 'title' => 'klick'),
$query
);
?>
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Oh danke, sehr hilfsbereit
am 02.09.2008 - 15:45 Uhr
Oh danke, sehr hilfsbereit :-)
undpaul
Longevity Insights from Top Health Podcasts