Node-Inhalt in eine Node inkludieren
Eingetragen von paulap (72)
am 24.10.2005 - 14:51 Uhr in
am 24.10.2005 - 14:51 Uhr in
Hi,
gibt es eine einfache Möglichkeit den Inhalt einer Node in eine andere Node zu inkludieren?
Ich möchte gerne eine Basisnode haben und darin einzelne (zum Teil auch von anderen Benutzer gewartete) Nodes integrieren, so quasi über ein inklude-Statement.
Bitte um Feedback.
paulap
- Anmelden oder Registrieren um Kommentare zu schreiben
was genau willst du denn
am 24.10.2005 - 15:36 Uhr
was genau willst du denn damit machen ?
vorausgesetzt du kennst die genaue Node-ID kannst du das z.B. so hier machen
// Node-Objekt laden
$my_node = node_load(array('nid' => 52));
// Node Überschrift
print $my_node->title;
// ### Alternativ ### Node Überschrift mit HTML Formatiert
print '<h3>'.$my_node->title.'</h3>';
// Inhalt des Nodes
print $my_node->content;
// ### Alternativ ### da nicht klar ist, wie der Inhalt ausschaut, mit div umgeben (das ist semantisch nicht unbedingt richtig, aber eigentlich IMMER W3C konform)
print '<div>'.$my_node->content.'</div>';
// ### Alternative die das obige ersetzt ### wenn du dir das einzelne Lesen von Werten im Node-Objekt sparen willst kannst du nach der node_load Funktion auch einen Node inkludieren der das Template der node.tpl.php deines Themes nutzt, damit der produzierte HTML Code dir nicht dein Design zerstört, könntest du das Ergebnis in ein div mit eigener Klasse kapseln um dann via CSS korrigierend einzugreifen
print theme_node($my_node);
Beschreibung der node_load Funktion
Beschreibung der theme_node Funktion
ps: wie immer ohne Gewähr, sollte aber - bis auf Schreibfehler - funktionieren, wenn nicht einfach nochmal nachfragen
MfG Micha
- work in progress mit Langmi.de
Danke; Funktioniert (fast)
am 24.10.2005 - 18:36 Uhr
Micha,
danke mal für die schnelle Hilfe.
Ich habe den PHP-Code in eine node integriert.
Folgendes Ergebnis:
1. es funktioniert nur, wenn ich mit print theme_node($my_node); arbeite
2. dann aber habe ich lt. template auch immer den titel und zu beginn den autor (schau mal ans Ende der Seite http://www.pitschek.com/portal/?q=node/249&anbieterid=55&info=full)
2.a. ab er vielleicht ist das gar kein template Problem?
3. die anderen ausgaben von content funktionieren komischerweise nicht
4. den titel kann ich jedoch so ausgeben
Vielleicht kannst Du wieder helfen.
Vielen Dank im Voraus.
paulap
das Titel und Autor
am 25.10.2005 - 08:41 Uhr
das Titel und Autor dargestellt werden, liegt daran, dass mit der theme_node Funktion genau das gemacht wird, was Drupal auch mit "normalen" Nodes macht, d.h. wenn das Theme Nodes mit Titel und Autor darstellt dann tuts die theme_node Funktion natürlich auch
das $my_node->content nicht funktioniert ist mein Fehler, hab die Namen der Objektwerte mit phptemplate Variablen verwechselt
statt $my_node->content muss es hier also $my_node->body heißen
...und falls du noch mehr Anforderungen hast....
ich nehm an du benutzt phptemplate, dann schau dir mal die
function phptemplate_node an, dort werden die Variablen belegt die dann später in der node.tpl.php ausgegeben werden
falls du noch mehr brauchst, schau in die /root/database/database.mysql unter "CREATE TABLE node"
alle Werte die kein Primary Key oder Key davor stehen haben, sind mit $my_node->name auslesebar
MfG Micha
- work in progress mit Langmi.de
thx
am 25.10.2005 - 14:25 Uhr
Super, jetzt klappt alles!
Danke auch für die inhaltlichen Hinweise.
mfg
paulap
eigenes template für inline nodes
am 26.10.2005 - 09:38 Uhr
aus Interesse und weil ich automatisierte Ansätze mag
hab ich mich gefragt, ob man nicht - relativ einfach - dafür sorgen kann, dass für inline Nodes ein selbstgewähltes template_inline_node.tpl.php genutzt werden kann
die Idee
mittels PHP innerhalb eines Nodes
der letzte Punkt bezieht sich wieder mal auf template wechsle dich
für einen Funktionstest hab ich wohl erst nächste Woche Zeit
ps: ob man das Objekt einfach um ein Attribut erweitern kann, ist mir nicht ganz klar, in Java ginge das natürlich nicht, mal schauen was hier so möglich ist
MfG Micha
- work in progress mit Langmi.de