Ich möchte Kommentare von Knoten anzeigen, die nach Abstimmungsergebnis geordnet sind (beliebtester Kommentar oben in der Liste). Ich habe das Voting-API- , Rate- und Views- Modul installiert . Fügen Sie dann Kommentaren eine Ja / Nein-Abstimmung hinzu und aktivieren Sie das Threading für Kommentare, damit Benutzer sich gegenseitig antworten können.
Ich habe eine Ansicht erstellt, um Kommentare in der beliebtesten Reihenfolge mit den folgenden Sortierkriterien anzuzeigen:
Comment: Thread (asc)
SUM(Votes: Value)
Das Problem besteht nun darin, dass beim Versuch, den Thread beizubehalten, das Thema nach dem Post-Datum (ASC / Disc) sortiert wird und die zweiten Sortierkriterien nicht angezeigt werden.
Wie kann ich Kommentare nach Abstimmungsergebnissen sortieren und dabei das Threading fortsetzen?
Comment: Thread (asc)
?Antworten:
Hauptproblem
Derzeit gibt es keine Möglichkeit, alle Kommentare von Kindern und Enkelkindern an den Hauptelternteil (Original / allererster Elternteil) zu binden. Benötigen Sie auch eine Möglichkeit, den Hauptelternteil von allen Kindern zu trennen.
TL, DR-Lösung
Verwenden Sie das Feldansichtsmodul Ansichten, um die untergeordneten Elemente vom übergeordneten Hauptelement zu trennen und alle untergeordneten Elemente als Feld hinzuzufügen. Auf diese Weise können wir die Haupteltern nach Stimmen sortieren, ohne die Kinder und Enkelkinder zu beeinträchtigen.
Es gibt jedoch keine Möglichkeit, nur alle Kinder und Enkelkinder einer Haupteltern-CID zu zeigen. Erstellen Sie daher ein benutzerdefiniertes Modul, um dieses Problem zu lösen, damit wir die Ansichtsfeldtechnik verwenden können.
Detaillierte Lösung
Anforderungen :
Ansichtsfeldansicht , Entitäts-API , Haupt-PID (benutzerdefiniertes Modul unten).
main_pid.info
main_pid.module
Fügen Sie nun in den Kommentaren ein neues Feld mit dem Namen Haupt-PID mit dem Computernamen von hinzu
field_main_pid
. Sie können dies programmgesteuert oder über die Drupal-Benutzeroberfläche tun (das überlasse ich Ihnen).Verstecken Sie nun das Feld vor der Anzeige
Aus Ihrer Sicht:
Fügen Sie in Feldern hinzu
Comment: Rendered Comment
(Dank Entity API)Fügen Sie in Feldern hinzu
Comment ID
Fügen Sie nun einen neuen Block hinzu
Klicken Sie auf Block und ändern Sie den Anzeigenamen
In Feldern hinzufügen
Depth
Fügen Sie in Feldern hinzu
Comment: Rendered Comment
(Dank Entity API)Mit den Stileinstellungen können Sie die untergeordneten Elemente mit CSS einrücken.
Beispiel:
Fügen Sie unter Filterkriterien hinzu
Content: Main PID
Nur der Hauptelternteil hat eine PID von 0, daher werden nur alle Kinder angezeigt
Fügen Sie dann
Content: Thread
Sortieren undMain PID
Kontextfilter hinzuIhre Kinderansicht sollte also folgendermaßen aussehen:
Zurück zur ersten Ansicht :
Fügen Sie unter Filterkriterien die Haupt-PID hinzu
Diesmal gleich 0, da wir nur die Haupteltern wollen.
Fügen Sie nun in Felder hinzu
Global: View
(Dank Ansichten Feldansicht)Ihre Original- / Hauptansicht sollte folgendermaßen aussehen:
Wichtig: Fügen Sie hier einen Kontextfilter für NID hinzu (haben Sie das vergessen).
Zuletzt fügen Sie unter Sortierkriterien das hinzu
Votes Value
(wird auf dem Screenshot nicht angezeigt, da ich mich nicht um die Installation von Voting API und Rate gekümmert habe) und entfernen Sie die StandardeinstellungPost date
.quelle
I add fields in views one by one the vote API module does not work. I mean it works just when I use rendered entity
aber in meiner AntwortComment: Rendered Comment
rendert das Feld die Entität (Kommentar) ... (es ist nicht erforderlich, Felder einzeln , Titel, Text usw. hinzuzufügen), daher sollte es auch hier funktionieren. Hast du meine Antwort ausprobiert?Second, I can not add a field to comments because I have three tabs sorting comments by oldest, newest and most popular.
Auf Ihrem Screenshot sehe ich dies nicht. Warum wirkt sich das Hinzufügen eines Felds auf Ihre Registerkarte aus?