Ich habe Kommentare zu Knoten, die nach Begriffen kategorisiert sind. Ich muss eine Ansicht der Begriffe anzeigen und wenn in einem der Knoten, mit denen dieser Begriff gekennzeichnet ist, neue Kommentare vorhanden sind.
Also, wenn ich folgendes habe:
Term1
-NodeA (has new comments)
-NodeB (has new comments)
Term2
-NodeC (no new comments)
-NodeD (no new comments)
Term3
-NodeE (no new comments)
-NodeF (has new comments)
Term4
Ich brauche meine Ansicht, um so auszusehen:
Term1 – new comments!
Term2
Term3 – new comments!
Term4
Zuerst habe ich versucht, Kommentare anzuzeigen, um das neue Kommentarfeld einzuschließen, und Beziehungen zu verwenden, um die Begriffe anzuzeigen. Wenn ein Begriff jedoch keine Knoten oder Kommentare enthält (in meinem Beispiel Term4), muss der Begriff weiterhin angezeigt werden.
Also habe ich dann versucht, mir die Begriffe anzusehen. Ich habe die Beziehungen 'Taxonomiebegriff: Inhalt mit Begriff' und das Feld 'Inhalt: Neue Kommentare' hinzugefügt, das diese Beziehung verwendet. Dies zeigt die Anzahl der neuen Kommentare wie erwartet an. Es gibt mir doppelte Ergebnisse (die ich möglicherweise mit Gruppierungsfeldern korrigieren kann), aber unerwartet werden auch die Begriffe ausgeblendet, die keine Kommentare oder Knoten enthalten.
Gehe ich das richtig an und wenn ja, wie kann ich verhindern, dass die "leeren" Begriffe versteckt werden?
UPDATE Ich habe den D-Core und einige Module mit neuen Versionen (aber nicht mit Ansichten) aktualisiert. Die Ansicht funktioniert gut mit der Beziehung "Beziehung konfigurieren: Taxonomiebegriff: Inhalt mit Begriff", wenn das Feld "Inhalt: Titel (Titel)" lautet. Wenn ich jedoch das Feld "Inhalt: Neue Kommentare" hinzufüge, werden Begriffe ohne Kommentare ausgeblendet.
UPDATE Ich habe Folgendes in einem Ansichtsfeld versucht:
if(intval($data->node_new_comments) > 0) {
if(!array_key_exists($data->tid, $static)) {
print "new comments !";
$static[$data->tid] = 1;
}
} else {
print "here you do whatever you want when there's no new comment";
}
UPDATE - Mit "neuen Kommentaren" meine ich Kommentare, die der angemeldete Benutzer nicht gelesen hat. Dies ist ein Standardfeld in Ansichten. Ich brauche dies eher als einen willkürlichen Stichtag. Entschuldigen Sie die Verwirrung.
Taxonomy term: Term name
und nichtContent: -term vocabulary-
(leicht Fehler zu machen!) 4) Haben Sie die gleiche Sache sehen , ob Sie eine neue Taxonomie Bedingungen sehen von Grund auf mit erstellen nur die Beziehung,Taxonomy Term: Term Name
undContent: New Comments
?Antworten:
Das funktioniert bei mir. Ich habe eine Termansicht, in der das Feld für den Termnamen angezeigt wird, und mein Code fügt das neue Kommentarflag nach dem Termnamen hinzu.
Der Code wird in einem benutzerdefinierten Modul gespeichert.
Sie müssen zu VIEW_NAME zu Ihrem Ansichtsnamen und zu TAXONOMY_FIELD_NAME zu dem Namen Ihres Felds wechseln (wie z. B. field_tags).
quelle
history
enthält die Tabelle Daten von Leseknoten nach UID.Durch Hinzufügen des Felds "Inhalt: Neue Kommentare" wird
INNER JOIN
der Tabelle "node_comment_statistics" eine hinzugefügt, die möglicherweise die Ursache für die aufgetretenen Probleme sein kann. (Zum Beispiel, wenn es keine Einträge ist für KnotenC, NodeD und Nodee in node_comment_statistics aus irgendeinem Grunde werden die Begriffe nicht auf die gezeigt werden ,JOIN
ein WesenINNER
ein.)Hilft die Neuerstellung von node_comment_statistics ?
quelle
Hier ist eine Skizze einer Antwort, die Sie den größten Teil des Weges dorthin bringt, denke ich. Erstellen Sie zunächst eine Ansicht der Knoten und fügen Sie dann die Taxonomie und die letzte Kommentarzeit als Felder hinzu.
Aktivieren Sie nun die Aggregation für die Ansicht und setzen Sie die Aggregation für das Taxonomiefeld in der Spalte "tid" auf "Gruppenergebnisse zusammen".
Ändern Sie die Aggregationseinstellung für das Kommentarzeitfeld auf "Maximum".
Sie sollten jetzt eine Ansicht haben, in der alle Taxonomiebegriffe (zumindest diejenigen mit Inhalt) mit dem Datum des letzten Kommentars aufgelistet sind. Der letzte Schritt besteht darin, den Kommentar-Zeitstempel in einem Ansichts-Hook oder Theming zu verarbeiten, damit er nach Bedarf angezeigt wird. Dies sollte relativ einfach sein.
quelle
Sie müssen zuerst eine weitere Abfrage durchführen, um die Begriffe mit Knoten mit neuem Inhalt abzurufen.
Dieser Thread hat mir geholfen .
Wie ich dir sagte, habe ich das alles in PHP-Felder geschrieben; Wenn Sie Zeit haben, ist es besser, sie in ein Modul, in einen views_query_alter oder sonst zu setzen.
Fügen Sie ein PHP-Feld hinzu und rufen Sie im Setup-Code die Liste der Begriffe mit neuem Inhalt auf:
Überprüfen Sie nun im Ausgabecode , ob sich Ihr Begriff in diesem Array befindet:
Dies ist das leichteste, das ich sehe, selbst wenn die Abfrage schwer sein kann, wenn Sie eine große Anzahl von Knoten und Kommentaren haben.
EDIT: Ich muss daran erinnern, dass das Einfügen von PHP in SQL mit Ansichten PHP keine gute Praxis ist. Ich lade Sie ein, all das so schnell wie möglich in ein benutzerdefiniertes Modul in hook_views_query_alter zu setzen.
quelle