Verwenden Sie Ajax für den exponierten Filter einer Ansicht, jedoch NICHT für den Pager dieser Ansicht

7

Ich experimentiere mit einer "Seiten" -Ansicht und möchte die exponierten Filter der Ansicht über Ajax senden, aber nicht denselben Pager für Ansichten. (Ich habe derzeit ein Kontrollkästchen "Hat einen Taxonomiebegriff" -Filter, das durch das BEF-Modul erweitert wurde .)

Wenn ich derzeit in der Spalte "Erweitert" der Ansichtseinstellungen "Ajax verwenden: Ja" auswähle, werden sowohl der Pager als auch der exponierte Filter über Ajax gesendet. Gibt es eine Möglichkeit, dies so zu gestalten, dass nur der exponierte Filter über Ajax gesendet wird und der Pager die Seite mit dem Standardparameter "? Page = X 'GET" neu lädt?

Ich dachte, ich könnte "Ajax verwenden: Nein" in den Ansichtseinstellungen belassen und dann die Ajax-Funktionalität über einen Hook irgendwie zur exponierten Form hinzufügen. (form_alter?) Oder vielleicht ein Inline-Javascript hinzufügen, das die Ajax-Funktionalität des Pagers deaktiviert? (Das ist nicht einmal eine Form.)

Ich hoffe, jemand könnte mich auf den richtigen Weg bringen. (Verwenden von Drupal 7 und Views 3)

Ericpugh
quelle

Antworten:

3

Ich bin mir sicher, dass Sie inzwischen eine Lösung / Problemumgehung dafür gefunden haben, aber dieser Thread wurde angezeigt, als ich mit demselben Problem konfrontiert war. Daher dachte ich, ich würde die Lösung teilen, die für mich funktioniert hat.

Ich habe lediglich den AJAX-Ereignishandler von Drupal mithilfe der Aufhebungsmethode von jQuery aus den Pager-Links entfernt , z.

$('.pager a').unbind();

Wenn die Ereignishandler entfernt werden, greifen die Paginierungslinks auf die HREF-URLs zurück, die in den Ankertags enthalten sind.

Nwoodland
quelle
Diese Methode funktioniert einwandfrei, außer dass der Pager auch dann ungebunden bleibt, wenn der Benutzer einen Filterwert ändert. Dies ist unerwünscht, da die neue Liste nicht auf der ersten Seite dieser Liste beginnt, sondern auf der Nummer, bei der der Pager zuletzt war einstellen. Es muss eine Möglichkeit geben, den Pager für diese Art von Ereignis neu zu starten. Ich werde einige Dinge ausprobieren.
Steve
1

Ich denke nicht, dass das, was Sie beschreiben, aufgrund der Art der Ajax-Funktion einfach sein wird.

Denken Sie hier nur laut nach (in Typ?): Lassen Sie Ajax eingeschaltet, begrenzen Sie die Ergebnisse auf 25. Fügen Sie den Kontextfiltern einen Offset-Filter hinzu, wobei der Standardwert "0" ist. Verwenden Sie eine benutzerdefinierte Paging-Funktion (benutzerdefinierte Fußzeile in Ansicht? Vorlage?) und generieren Sie Verknüpfungen mit dem Versatz (und Ihren Formularwerten?) zur Verwendung durch Ihre Kontextfilter.

jdu
quelle