(gelöst) module_invoke() funktioniert nicht in Full Node View
Eingetragen von mtz (25)
am 01.11.2010 - 01:17 Uhr in
am 01.11.2010 - 01:17 Uhr in
Hi Leute,
in meiner node.tpl wird eine Google Map eingebunden. Ich lade den vom Gmap Modul bereitgestellten Block direkt in der node.tpl:
$blockView = module_invoke('gmap_location' ,'block', 'view', 0);
print $blockView['content'];
Wird die Node direkt aufgerufen, funktioniert alles einwandfrei.
Nun habe ich eine View (Page Display), die mir die jeweils aktuellste Node des Content Typs anzeigt (und zwar als vollständige Node). Problem: Der Block wird hier gar nicht geladen und ich stehe auf dem Schlauch. Hat jemand eine Idee, wie ich den da reinkriege?
Danke + Gruß
- Anmelden oder Registrieren um Kommentare zu schreiben
Dieser Aufruf gilt einer
am 01.11.2010 - 10:15 Uhr
Dieser Aufruf gilt einer Funktion im Gmap_Locations-Modul. Die ist so geschrieben, daß sie nur auf einer Node-Seite funktionieren kann. Es wird im Code explizit abgefragt, ob Argument 0 ==node ist und Argument 1 eine Zahl. Wenn nicht, erfolgt keine Ausgabe.
Für Deine Aufgabenstellung ist invoke_module('gmap_location' ,'block', 'view', 0) aber auch nicht nötig. Setze den Darstellungstyp in der View auf Gmap, dann bekommst Du Deine Karte.
Beste Grüße
Werner
Hi Werner, danke für deine
am 01.11.2010 - 11:35 Uhr
Hi Werner,
danke für deine Hilfe. Die Darstellung auf Gmap zu setzen hilft mir leider nicht, da dann ausschließlich die Karte gezeigt wird. In meiner node.tpl werden aber noch etliche andere CCK-Felder geladen und verarbeitet.
Es wird im Code explizit abgefragt, ob Argument 0 ==node ist und Argument 1 eine Zahl. Wenn nicht, erfolgt keine Ausgabe.
Das habe ich nicht ganz verstanden. Meinst Du damit die Argumente, mit denen ich module_invoke() aufrufe? In dem Fall dachte ich, dass Argument 0 (?) der Name des Moduls ist und Argument 1 eben besagt, dass der Block geladen werden soll?
Verstehe ich dich richtig, dass ich mein Problem lösen kann, wenn ich die Argumente beim Aufruf von module_invoke() ändere? Kannst Du mir sagen wie diese aussehen müssen?
Danke
Matze
Nein, Du hast da was falsch
am 01.11.2010 - 11:43 Uhr
Nein, Du hast da was falsch verstanden.
module_invoke('gmap_location' ,'block', 'view', 0)
ruft im Modul Gmap_Location die Funktion gmap_location_block auf. Diese Funktion von Gmap_location funktioniert nur und ausschließlich auf Seiten, deren URL node/xxx lautet. Da ist auch mit anderen Übergabeparametern nichts zu machen.Du mußt für Dein Problem dann eben 2 Views erstellen. Einen für die Daten und einen für die Karte und die dann aneinander hängen.
Beste Grüße
Werner
Workaround
am 01.11.2010 - 12:10 Uhr
Da meine Page View identisch mit der Detailansicht der Node ist und nur dazu diente jeweils die aktuellste Node des Content Types komplett anzuzeigen, habe ich jetzt folgenden Workaround genutzt. Vielleicht braucht es mal jemand:
Ich habe für das entsprechende Display ein eigenes Template erstellt, in meinem Fall "views-view--Deals--page-3.tpl.php" und darin folgenden Code:
drupal_goto('node/'.$view->result[0]->nid.'')
Somit wird man beim Aufruf der View direkt zur Detailseite der Node geschickt und dort wird der Gmap Block korrekt geladen.