Teaser mittels Ajax/AHAH durch vollen Text ersetzen
am 16.03.2011 - 11:28 Uhr in
Hi,
ich möchte gerne innerhalb einer Node nur den Teaser zeigen, welcher dann zum vollen Text aufgeklappt werden kann. Kann man irgendwie den Inhalt einzelner Felder per Ajax abfragen?
Alternativ könnte ich auch Teaser und vollen Text gleichzeitig rendern und mittels jQuery die Teile ein-/ausblenden. Doch wie kann ich in der node.tpl.php beides rendern lassen? Bei der Render-Funktion gibt es ja keine Paramater, womit man bestimmen könnte, was gerendert werden soll.
Gruß, Tekl
- Anmelden oder Registrieren um Kommentare zu schreiben

Formular AHAH
am 17.03.2011 - 09:12 Uhr
double post
Formular AHAH
am 17.03.2011 - 09:12 Uhr
Hallo Tekl,
habe gerade zum ersten Mal was mit AHAH gemacht. Bei Formelementen ist es leicht möglich, diese durch beliebige Inhalte zu ersetzen. Allerdings habe ich das in einem Modul gebaut. Setzt du eineigenes Modul ein ?
Ich bin nach folgender Anleitung vorgegangen: http://drupal.org/node/331941
Allerdings ist dein Nodeteaser ja kein Formular. Generell kannst du nodeInhalte ja per PHP mit node_load($nid) laden.
$nid kannst du über die real URL rausfinden z.B. bei Pfad yourdomain.de/node/355 ist arg(1) in PHP deine NID.
Auf den "more" Link kannst du ja eine javascriptfunktion legen (onclick oder href). Du musst halt nur noch das JS in die spezielle Seite bekommen. Das geht folgendermassen für die Funktionen :
drupal_add_js( drupal_get_path ( 'module', 'mysard' ) . '/scripts/teaser.js' ); (hier: im Modul -- siehe drupal_get_path auf api.drupal.org)drupal_add_js(array('fullnode' => $node->body), "setting");Dein Javascript könnte dann in etwa so aussehen:
Drupal.behaviors.teaser = function() {
// aus dem PHP per drupal_add_js hier drin:
var mycontent = Drupal.settings.fullnode;
$('div.mycontainerforcontent').html(mycontent);
// allgemein deine JQUERY-Manipulationen
});
Hey, super. Vielen, vielen
am 17.03.2011 - 14:23 Uhr
Hey, super. Vielen, vielen Dank für die ausführliche Erklärung. Habe es mittlerweile so hinbekommen, dass in der node.tpl beide Texte angezeigt werden. Das hat auch den Vorteil, dass die Suchmaschinen den vollen Body-Text als Futter vorgeworfen bekommen.
Hier die Objekte, welche die beiden Texte beinhalten:
<?php
print $node->body[$language][0]['safe_value'];
print $node->body[$language][0]['safe_summary'];
?>