Wie erstelle ich Benutzerbenachrichtigungen im Facebook-Stil?

14

Mit Heartbeat konnte ich mithilfe von Rules-Triggern effektiv Streams von Benutzeraktivitäten erstellen. Ich möchte jedoch in der Lage sein, Benutzer über neue Aktivitäten zu informieren und die Anzahl der neuen Aktivitäten wie bei Facebook oder sogar die Anzahl der neuen E-Mails in den meisten E-Mail-Systemen zu erfassen.

In Drupal 6 gab es einige Module, die dies gut erreichen konnten. Wie kann dies jedoch in Drupal 7 geschehen?

Ich habe diesbezüglich umfangreiche Recherchen durchgeführt, kann jedoch noch nicht das richtige Modul finden: Es gibt die Module User Notifications und Notifier , die die perfekte Lösung darstellen, außer dass nur D6-Versionen existieren. Es gibt Benachrichtigungen, die nicht in ein Aktivitätsprotokollierungsmodul integriert werden können, da es keine ordnungsgemäße Regelunterstützung bietet. Zwei interessante Implementierungen sind Appbar und Taskbar , die Dropdown-Leisten mit Aktivitätenlisten bereitstellen, jedoch nicht die Anzahl der neuen Aktivitäten zählen und nicht mehr in Rules integriert werden. Endlich DLike als dynamischer Zähler, auch wenn derzeit nur Flags gezählt werden und ein Link zu einer Liste der markierenden Benutzer bereitgestellt wird. Vielleicht könnte es mit einigen Optimierungen über die Integration von Flags Rules verwendet werden, um die letzten (markierten) Aktivitäten zu verfolgen und eine Verknüpfung zu einer Liste dieser letzten Aktivitäten herzustellen.

Ist es möglich, in Drupal 7 eine ähnliche Funktionalität zu erreichen? Facebook

David Gurran 82
quelle
1
Dies ist keine Antwort, ich hatte eine ähnliche Anforderung und keines der Module war funktionsfähig. Also habe ich dies mit einem benutzerdefinierten Block erreicht, der die Anzahl der Benachrichtigungen mit Dropdown und Details anzeigt. Für Echtzeitbenachrichtigungen benutze ich das nodejs-Modul, um neue Benachrichtigungen anzufügen. Das Ereignis für nodejs wird von Regeln mit PHP-Code aufgerufen.
j2r
Ich habe so etwas: drupal.stackexchange.com/questions/158932/…
drupaluser

Antworten:

4

Ansatz 1: Menüabzeichen

Verwenden Sie das Modul " Menü-Ausweise" , um solche Benachrichtigungen zu einem Menüelement und / oder einer Menüregisterkarte Ihrer Wahl hinzuzufügen . Hier sind einige Details dazu (von der Projektseite):

Stellt eine Methode zum Hinzufügen von Abzeichen im iOS-Stil zu Menüelementen bereit. (siehe Screenshot)

Bildbeschreibung hier eingeben

Hinzufügen von Abzeichen zu Menüs

Sobald aktiviert, gehen Sie zu Administration > Structure > Menusund klicken Sie auf "Links auflisten" neben dem Menü, das das Zielelement enthält. Klicken Sie neben dem Element auf "Bearbeiten" und wählen Sie das anzuzeigende Abzeichen mit dem Auswahlfeld "Menü-Abzeichen anzeigen" aus.

Hinzufügen von Abzeichen zu Registerkarten

Zum Hinzufügen von Ausweisen zu Menü-Registerkarten gibt es eine Registerkarte unter der Administration > Structure > MenusBezeichnung "Registerkarten-Menü-Ausweise". Suchen Sie nach dem Pfad des Menü-Routers der Registerkarte, die Sie ändern möchten, und wählen Sie dann ein Abzeichen aus dem entsprechenden Auswahlfeld aus.

Abzeichentypen

Das Modul enthält fünf Beispiel-Badges, und neue Badges können einfach mit Ansichten erstellt werden . Module können auch ihre eigenen Ausweise mit einer Hook-Implementierung liefern. Weitere Informationen finden Sie in der Datei README.txt .

Aufgrund der Integration in das Modul " Ansichten" reduzieren Sie die Lösung für jede Art von Benachrichtigung im Wesentlichen auf "Erstellen Sie einfach eine entsprechende Ansicht davon".

Videoanleitungen:

Ansatz 2: Nachrichtenstapel

Verwenden Sie den Nachrichtenstapel , der aus diesen Modulen besteht (Anführungszeichen stammen von der Projektseite des Moduls):

  • Nachricht :

    Das Nachrichtenmodul ist der Kern des Nachrichtenstapels. Es ermöglicht die Protokollierung und Anzeige von Systemereignissen in verschiedenen Anwendungsfällen. Ereignisse, die im Laufe der Zeit aufgezeichnet werden, werden manchmal als Aktivitätsströme bezeichnet. Exportierbare Nachrichtensubtypen können für verschiedene Anwendungsfälle mit benutzerdefinierten Feldern und Anzeigemodi (Ansichtsmodi) erstellt werden.

  • Nachricht Benachrichtigen .

    Dieses Modul bietet eine Methode zum Senden einer Nachricht über ein Benachrichtigungs-Plugin. Message Notify wird mit Plugins für E-Mail und SMS geliefert und kann bei Bedarf auf andere Transportmechanismen erweitert werden.

  • Nachricht abonnieren .

    Mit diesem Modul werden Benutzer, die Inhalte abonnieren, benachrichtigt, wenn Ereignisse eintreten, die diese Inhalte betreffen. Das Modul nutzt das Flag-Modul, das Benutzern eine Abonnementfunktion bietet.

Dies sind die grundlegenden Komponenten und Abhängigkeiten des Nachrichtenstapels:

Bildbeschreibung hier eingeben

Einige beliebte Drupal-Distributionen, die bereits für diesen Message Stack übernommen wurden, wie z. B. Commerce Kickstart , Drupal Commons , ERPAL und Open Atrium .

Wenn Sie sich den Nachrichtenstapel in Ihrer eigenen Umgebung genauer ansehen möchten, probieren Sie das Modul " Antworten" (Offenlegung: Ich bin Mitbetreuer) zusammen mit dem Untermodul " Antwortenbenachrichtigung" aus , mit dem Sie sich anmelden können Benutzer können ausgewählte Fragen abonnieren, damit sie Benachrichtigungen (über den Nachrichtenstapel ) erhalten, wenn Fragen Antworten erhalten.

Mit dem Nachrichtenstapel sind Sie auch für Drupal 8 gut positioniert (aufgrund der objektorientierten Architektur der Module). Obwohl es noch kein 8.x-dev gibt, enthält das Message Code Repository bereits etwas (allerdings noch nicht für die 2 anderen Module). Ich gehe davon aus, dass der wipTeil des Filialnamens für "Work In Progress" steht.

Pierre.Vriens
quelle
will make you well positioned for Drupal 8 also.Du meinst in der Zukunft? Ich sehe, dass keines der Nachrichtenmodule eine Drupal 8-Version hat, nicht einmal ein Entwickler.
Kein Sssweat
1
Hey @NoSssweat ... Ich habe meine Antwort leicht erweitert (und dann beendet), um den D8-Teil zu verdeutlichen.
Pierre.Vriens
Vielen Dank für Ihre freundliche Antwort @ Pierre.Vriens, ich werde alle zugehörigen Dokumente überprüfen in der Hoffnung, dass ich eine klare Vorstellung über den Nachrichtenstapel habe ...
Charbel El Azzi
1
Ich meine, ich bin mit der Funktionsweise des Benachrichtigungssystems zwischen den Benutzern auf meiner Website vertraut und habe jetzt mehr über den Nachrichtenstapel erfahren. .
Charbel El Azzi
1
Ein weiteres Beispiel, um mein Problem besser zu verstehen: Schauen Sie sich das Dropdown-Menü an, wenn Sie auf der Commerce-Kickstart-2-Website über den Einkaufswagen fahren (wenn Sie mit der Kickstart-Distribution vertraut sind) ... ein solches Dropdown-System, nach dem ich suche Meine Frage ... Nochmals vielen Dank für Ihre Zeit und Mühe, lieber @ Pierre.Vriens, Gott segne Sie.
Charbel El Azzi
3

Es gibt ein relativ neues Modulpaar, von dem ich denke, dass es sich hervorragend dafür eignet : Message und Message-notify .

Nachricht ist im Grunde ein Rahmen zum Erstellen von "Nachrichten", die in Ihrem Fall Benachrichtigungselemente wären. Eine coole Sache ist, dass diese eigentlich alle als Entitäten erstellt wurden, so dass es einfach ist, sie in einem Dropdown-Block anzuzeigen, eine Seite "Alle Benachrichtigungen" sowie ein benutzerdefiniertes Feld oder Flag darauf zu haben, das angibt, ob sie vorhanden sind gesehen (oder sind neu). Sie können dies dann mit E-Mail-Benachrichtigungen über das Modul Nachrichtenbenachrichtigung verbinden .

Beachten Sie jedoch, dass die Integration in Ihre Site mehr eine Entwicklungsaufgabe als eine Site-Erstellungsaufgabe ist. Das Modul verfügt über eine gute API, die in geeigneten Hooks usw. zum Erstellen von Nachrichten verwendet werden kann, aber ich bin nicht sicher, wie die Rules-Integration verläuft.

Goron
quelle
3

Für die Echtzeitintegration können Sie das nodejs-Modul verwenden.

Dieses Modul integriert Node.js mit Drupal.

Es bietet eine API, die andere Module verwenden können, um Drupal Echtzeitfunktionen hinzuzufügen, insbesondere um Aktualisierungen an offene verbundene Clients zu senden.

RajneeshB
quelle