Search API Page und Facets mit Ajax
am 11.09.2014 - 14:26 Uhr in
Hallo Forum,
es tut mir Leid euch hier mit irgendwelchen Such-Themen-Fragen zu nerven, es muss leider sein.
Ich habe meine Suche-Seite mit Search Page und zwei Facetten jetzt so hinbekommen, wie ich mir das im ersten Schritt gewünscht habe. Leider bekomme ich es jetzt nicht hin, dass ich den Node der hinter einem Titel (wird in der Suchliste angezeigt) mit einem Mausklick als Overlay hinbekomme. Es scheint jede Menge Möglichkeiten diesbezüglich zu geben. Bei der einfachsten: ein Javascript-Code hinzufügen und das Overlay füllen, wird leider die gesamte Seite angezeigt. Die anderen Varianten mit Eingriffen in den Quellcode habe ich noch nicht so richtig verstanden gibt es eventuell ein Tutorial was für einen absoluten Anfänger taugt?
Das gleich gilt mit den Facetten, bei jedem Klick wird die ganze Seite neu geladen, das würde ich auch gerne ändern.
mit freundlichem Gruß
Tim
- Anmelden oder Registrieren um Kommentare zu schreiben
Ok, jenachdem wie du es
am 11.09.2014 - 14:35 Uhr
Ok, jenachdem wie du es machen willst ist das eher Themeing und hat mit Search-API etc. nichts mehr zu tun. Ich finde ja die Foundation Modals ganz nett, schau dir das doch mal an:
http://foundation.zurb.com/docs/components/reveal.html
Und wie das geht :https://www.drupal.org/node/2052525
Quick and Dirty-Lösung für das Node-Loading.
am 12.09.2014 - 13:37 Uhr
Hier meine Lösung:
Mit einem eigenen Modul stelle ich den puren Node zur Verfügung:
<?php
function ajaxmodul_menu()
{
<------>$items = array();
<------>$items['ajaxmodul'] = array(
<------><------>'title' => 'sendNode',
<------><------>'description' => 'Gibt einen Node aus',
<------><------>'page callback' => 'loadsearchednode',
<------><------>'page_arguments' => array(1,'foo'),
<------><------>'access callback' => TRUE,
);
return $items;
}
function loadsearchednode($nodeid)
{
$node = node_load($nodeid);
print drupal_render(node_view($node));
}
mit der URL http://domain/ajaxmodul/nodeid wird der pure Node aufgerufen.
Meinem Theme habe ich an entsprechende Stelle folgenden JavaScript-Quellcode beigefügt:
(function ($)
{
Drupal.behaviors.ajaxsuche =
{
<------>attach:function(context,settings)
<------>{
<------> $('.search-result .title').on('click',function(e)
<------> {
<------><------>e.preventDefault(); //Deaktiviert den eigentlichen Link
<------><------>//console.log($('a',this).attr('href'));
<------><------>//Hier muss jetzt die Ajax Funktion rein
<------><------>var nodeid_string = $('a',this).attr('href'); //Link ablegen
<------><------>var nodeid = nodeid_string.replace(/\D/g,''); //Nodeid aus dem Link extrahieren
<------><------>$('.l-region--detail').text(nodeid); //Nodeid in das Ziel-DIV laden, dient nur zu Testzwecken
<------><------>$.ajax(
<------><------>{
<------><------> url: 'http://domain/ajaxmodul/'+nodeid,
<------><------> success: function(response,status)
<------><------> {
<------><------><------>//console.log(response);
<------><------><------>$('.l-region--detail').html(response); //ID wird wieder überschrieben und die Nodeinhalte werden in das Ziel-DIV geladen
<------><------> }
<------><------>});
<------> });
<------>}
};
})(jQuery);
sicherlich gibt es da eine deutlich elegantere Lösung, die nicht so sehr an Drupal vorbei entwickelt wurde, aber die muss aktuell ein wenig warten.
mit bestem Dank und ein schönes WE wünschend
Tim
Jetzt mache ich mich noch ans ajaxify der Facetten.
www.geoportal.de