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
name = Main PID
description = Links all children and grandchildren comments to the main parent by saving main parent cid into main_parent_pid field when comment is saved.
package = custom
core = 7.x
main_pid.module
<?php
/**
* Implements hook_comment_presave()
*/
function main_pid_comment_presave($comment) {
$pid = $comment->pid;
if ($pid > 0){
while ($pid > 0) {
// Implements comment_load()
$load_comment = comment_load($pid);
$pid = $load_comment->pid;
$cid = $load_comment->cid;
}
$comment->field_main_pid[LANGUAGE_NONE][0]['value'] = $cid;
}
elseif ($pid == 0) {
$comment->field_main_pid[LANGUAGE_NONE][0]['value'] = 0;
}
}
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:
.depth-1 { width: 480px; margin-left: 10px; }
.depth-2 { width: 470px; margin-left: 20px; }
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 und Main PID
Kontextfilter hinzu
Ihre 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 Standardeinstellung Post date
.