[gelöst, irgendwie] Inhalt einer Node auslesen

am 17.11.2009 - 01:46 Uhr in
Hallo Forum,
nach stundenlangem Suchen wende ich mich nun an euch mit folgender Frage:
Ich möchte den Inhalt einer Node auslesen und benötige für mein selbsterstelltes Modul eine solche Funktion, die mir einfach nur den Titel und den Inhalt einer Node zurück gibt.
Wie man das alles setzt, habe ich gefunden, aber das auslesen der aktuell aufgerufenen Node scheint schwierig zu sein..?
Gibt es ein gutes Tutorial, das solche grundlegenden Funktionen (speziell diese) erklärt?
<?php
$node = new StdClass;
$node->type = 'story';
$node->body = 'Textfeld bla bla';
$node->title = 'Titel';
$node->uid = 1;
$node->status = 1;
$node->active = 1;
$node->promote = 1;
node_save($node);
?>
Danke für eure Hilfe,
Flo
edit: Habe gerade die Funktion "node_load()" gefunden, kann aber damit nichts anfangen... bin ich damit auf dem Holzweg?
- Anmelden oder Registrieren um Kommentare zu schreiben
node_load ist genau
am 17.11.2009 - 07:56 Uhr
node_load ist genau richtig:
<?php
$nid = 23;
$node = node_load($nid);
print $node->title;
//usw.
?>
Devel Modul kann sehr nützlich sein, dann kannst du nämlich folgendes machen dsm($node) und es sieht hübsch aus.
______________________________
Yet Another Drupal Site (YADS)
http://www.rapsli.ch
******************************
______________________________
Yet Another Drupal Site (YADS)
http://www.rapsli.ch
******************************
Node-ID auslesen
am 17.11.2009 - 11:40 Uhr
Danke für die schnelle Hilfe - und wie finde ich heraus, auf welcher Node ich gerade bin? Würde das immer gerne für die Seite, auf der man sich befindet, ausgeben?
Tausend Dank,
Florian
arg()
am 17.11.2009 - 11:49 Uhr
und wie finde ich heraus, auf welcher Node ich gerade bin? Würde das immer gerne für die Seite, auf der man sich befindet, ausgeben?
Dazu kannst Du einerseits im Template (node.tpl.php) einfach
<?php print $node->nid; ?>
schreiben oder an einer beliebigen anderen Stelle (zum Beispiel in der page.tpl.php oder in einem Block) die Funktion arg() verwenden.Dabei überprüfst Du, ob
arg(0)
mit 'node' übereinstimmt undarg(1)
ein numerischer Wert ist.<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
print t('You are viewing node #!nid', array('!nid' => arg(1)));
}
?>
hth,
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
kommt drauf an, von wo aus
am 17.11.2009 - 11:54 Uhr
kommt drauf an, von wo aus du den code ausführst...
preprocess_node() -> dann hättest du auch gerade den aktuellen node
______________________________
Yet Another Drupal Site (YADS)
http://www.rapsli.ch
******************************
______________________________
Yet Another Drupal Site (YADS)
http://www.rapsli.ch
******************************
Genial - gelöst!
am 17.11.2009 - 12:58 Uhr
Suuuuper, danke! Arg(1) werde ich nehmen :)
Hier für alle nochmal zum Mitschreiben:
<?php
$nid = arg(1);
$node = node_load($nid);
$node_content = $node->title;
$node_content .= $node->body;
?>
Liefert den Titel und den Inhalt der Node, in der man sich gerade befindet!
Danke,
Flo
Nachfrage: Meta-Daten auslese?
am 17.11.2009 - 16:48 Uhr
Kann ich dazu auch die Meta-Daten auslesen? Habe das entsprechend Modul installiert... Gibt es eine Lösung dafür?
Danke,
Flo
florianj schrieb <?php$nid
am 17.11.2009 - 16:53 Uhr
<?php
$nid = arg(1); // <!--- tsts
$node = node_load($nid);
...?>
Du kannst Dir nicht sicher sein, dass arg(1) eine Zahl (und überhaupt gesetzt) ist. Daher ist es besser, die von mir beschrieben Abfrage zu verwenden.
Kann ich dazu auch die Meta-Daten auslesen?
Meta-Daten? Welche Meta-Daten?
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Er meint sicher Keywords und
am 17.11.2009 - 18:10 Uhr
Er meint sicher Keywords und dergleichen aus dem Metatags Modul.
Mach doch einfach mal ein
<?php print_r($node); ?>
sobald du den $node geladen hast, dann siehst du wo da überall die Daten drinstehen. Oder, deutlich komfortabler, beschäftige dich etwas mit dem Devel-Modul und dem im Paket enthaltenen Theme Untermodul. Das Modul stellt auch deutlich komfortablere "Arschabwischerfunktionen" bereit, die PHPs print_r() ablösen, z.B. dprint_r() und dsm().
Siehe auch http://drupal.org/node/174575
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
war mal wieder ein wenig
am 17.11.2009 - 22:57 Uhr
war mal wieder ein wenig Inspiration für einen Blogeintrag: http://www.rapsli.ch/drupal/drupal/node-mit-drupal-laden-und-aendern
______________________________
Yet Another Drupal Site (YADS)
http://www.rapsli.ch
******************************
______________________________
Yet Another Drupal Site (YADS)
http://www.rapsli.ch
******************************
Danke!
am 18.11.2009 - 19:06 Uhr
Super, danke für eure Hilfe!!
Flo
Node properties
am 18.11.2009 - 19:52 Uhr
Suuuuper, danke! Arg(1) werde ich nehmen :)
Hier für alle nochmal zum Mitschreiben:
<?php
$nid = arg(1);
$node = node_load($nid);
$node_content = $node->title;
$node_content .= $node->body;
?>
Liefert den Titel und den Inhalt der Node, in der man sich gerade befindet!
Danke,
Flo
In der node.tpl.php stehen die Node Variablen ($node mit allen properties) immer zur Verfügung.
Ein node_load ist vollkommen überflüssiger Overhead.
$node->title oder $node->body usw. stehen auch ohne node_load zur Verfügung.
vg
--
md - DrupalCenter.de
mdwp*
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
Habe ich gerade versucht.
am 19.11.2009 - 10:36 Uhr
Habe ich gerade versucht. Führt leider zu Fehlern... arbeite nicht im tpl, sondern im .module! Stehen die da auch zur Verfügung?
Flo
kann man nicht so sagen ;)
am 19.11.2009 - 10:52 Uhr
kann man nicht so sagen ;) ... je nach dem in welchem hook du dich befindest.
______________________________
Yet Another Drupal Site (YADS)
http://www.rapsli.ch
******************************
______________________________
Yet Another Drupal Site (YADS)
http://www.rapsli.ch
******************************
florianj schrieb Habe ich
am 19.11.2009 - 12:19 Uhr
Habe ich gerade versucht. Führt leider zu Fehlern... arbeite nicht im tpl, sondern im .module! Stehen die da auch zur Verfügung?
Flo
Ich weiß ja nicht was für ein Modul du schreibst, aber wenn du in arg(1) eine node id erwartest, dein Modul also die Ausgabe für einen Node generiert, spricht doch nichts dagegen, wenn du alles weitere in der node.tpl.php machst.
Das ist ja die grundsätzliche Architektur von Drupal: Module stellen Daten zur Verfügung und in den Templates geschieht die Ausgabe. Mal sehr vereinfacht gesprochen.
vg
--
md - DrupalCenter.de
mdwp*
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
<?php // set up the
am 19.11.2009 - 14:20 Uhr
<?php
// set up the block
$block_content = "Dies ist mein Inhalt";
$block['content'] = $block_content;
return $block;
?>
Ich mach das so ;)
Node?
am 19.11.2009 - 16:12 Uhr
Aha, also ein Block Modul. Und was hat das jetzt mit einem node zu tun? So ganz versteh ich deine ursprüngliche Fragestellung nicht mehr.
vg
--
md - DrupalCenter.de
mdwp*
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
Nicht so schlimm...
am 19.11.2009 - 16:19 Uhr
... hab alles so hinbekommen, wie ich es wollte! Nehme mir den Inhalt und verarbeite ihn weiter, so dass aus dem Content automatisch eine Tagcloud erstellt wird. Die fertigen Module von Drupal liefern nur schlechte, manuelle Tagclouds und das ist mir zu viel Arbeit ;)
Flo
Solche Antworten sind für
am 19.11.2009 - 16:48 Uhr
Solche Antworten sind für unsere Benutzer sehr hilfreich :-(
vg
--
md - DrupalCenter.de
mdwp*
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services