Ich muss einem meiner Inhaltstypen Flags hinzufügen . Eigentlich zwei Arten:
- Ich werde mich darum kümmern
- Gelöst
Das zweite Flag sollte nur für den Knotenautor verfügbar sein und nur, wenn das erste bereits ausgelöst wurde. Aber das ist ein einfacher Teil. Die erste Art von Flag ist auch für angemeldete Benutzer trivial.
Der Punkt ist - ich muss die erste Art von Flag auch für anonyme Benutzer verfügbar machen. Und ich muss sicherstellen, dass ich ihre gültigen E-Mail-Adressen habe. Der Standard-Bestätigungslink in der E-Mail wäre in Ordnung. Wie mache ich das?
Ich weiß, dass ich ein benutzerdefiniertes Modul von Grund auf neu entwickeln kann, und ich werde es bei Bedarf tun, aber ich war mir sicher, dass es bereits eine sofort einsatzbereite Lösung gibt, und ich kann sie jetzt einfach nicht finden.
Nur um einige Dinge klar zu machen:
- Das Flag- Modul funktioniert für anonyme Benutzer, wenn Sie die Sitzungs-API installieren . Kein Problem hier.
- Ich hatte vor, E-Mails im E-Mail-Feld anzuhängen, um sie selbst zu kennzeichnen. Für angemeldete Benutzer wird standardmäßig ihre E-Mail-Adresse verwendet, und wenn sie sich dazu entschließen, diese zu ändern, kann ich sie trotzdem erreichen. Für anonym möchte ich, dass es durch einen Link in einer E-Mail überprüft wird, und wenn es nicht rechtzeitig überprüft wird, möchte ich das Flag löschen. Das Löschen wird mit CRON und Rules oder einem einfachen Hilfsmodul einfach sein. Die Überprüfung ist kompliziert (und ich hoffe, sie ist bereits gelöst).
Antworten:
Ich würde hook_flag_link_type_info () verwenden , um einen Link-Typ wie den vom Flag-Modul bereitgestellten Link-Typ "Bestätigen" bereitzustellen. Kopieren Sie ihren Ansatz, aber fragen Sie auf dem Bestätigungsformular nach der E-Mail-Adresse des Benutzers (wenn der Benutzer anonym ist). Sie speichern den Wert in dem E-Mail-Feld, das Sie Ihrer Flagge hinzugefügt haben, und das Regelmodul sollte den Rest für Sie erledigen können. Es erfordert ein bisschen benutzerdefinierten Code (nicht zu viel, würde ich vermuten), aber der größte Teil der Funktionalität (Markieren, Entflaggen, Regelintegration, ...) stammt immer noch aus dem Flaggenmodul.
[BEARBEITEN] Für den Überprüfungsteil: Fügen Sie Ihrem Flag ('Verifiziert') ein boolesches Feld hinzu, das Sie mit dem per E-Mail gesendeten Bestätigungslink ändern. Das Flag "Gelöst" kann mit hook_flag_access () ausgeblendet / angezeigt werden.
quelle
Ich habe 2 Module gemacht, die E-Mails senden. Eine für authentifizierte Benutzer, die ihren gekennzeichneten Inhalt per E-Mail erhalten, und eine, um einem Freund eine URL zu senden, die Ihnen gefällt.
Ich denke, es ist ein bisschen lang, den gesamten Code hier zu posten, also habe ich eine Zip-Datei online gestellt, um sie hochzuladen
Vielleicht können Sie eine Mischung aus beiden machen, um Ihr Ziel zu erreichen.
Ich hoffe es hilft.
quelle
Ich muss sagen, ich wünschte, ich hätte Jelles Weg benutzt . Aber ich habe es nicht getan. Ich weiß also nicht, ob es funktioniert.
Hier ist, wie ich es gemacht habe
Ich habe eine Flagge mit E-Mail-Feld erstellt. Ich habe die Flag-Schaltfläche erstellt, um zum Formular zu gelangen, sodass Benutzer es ausfüllen müssen. Es sind sowieso einige Felder für alle erforderlich.
Erforderlich nach Rolle gemacht E-Mail für anonym erforderlich. Angemeldete Benutzer können es ausfüllen, wenn sie andere E-Mails wünschen, und in diesem Fall sollten sie trotzdem überprüft werden, soweit so gut.
Ich habe die E-Mail-Feldüberprüfung installiert , sie aktiviert, das an das Flag angehängte E-Mail-Feld aktiviert und festgelegt, dass Inhalte gelöscht werden, wenn das Feld nicht bestätigt wird.
Warum ich wünschte, ich hätte es nicht getan
Diese Module sind fehlerhaft. Insbesondere die Überprüfung von E-Mail-Feldern - alle Fehler mussten behoben werden. Ich brauchte einige Patches und Hacks, damit alles so funktionierte, wie es sollte. Ich glaube, es könnte einfacher sein, es selbst zu schreiben. Zumindest hoffe ich, dass ich Patches beitragen kann.
quelle
Soweit ich weiß, gibt es nur einen anonymen Benutzer, dessen Konto von allen anonymen Benutzern geteilt wird. Wenn Sie die E-Mail-Adresse anonymer Benutzer verfolgen möchten, können diese dann keine eigenen Konten erhalten?
Die einzige Möglichkeit, Informationen für anonyme Benutzer zu speichern, besteht darin, ein Cookie zu setzen, das auf ihrem Computer gespeichert wird. Es würde jedoch ein Problem geben, bei dem verschiedene anonyme Benutzer einen Computer gemeinsam nutzen oder der anon-Benutzer zwei verschiedene Geräte verwendet.
quelle
Möglicherweise fehlen hier einige Ihrer Anforderungen, aber ich hätte gedacht, dass die E-Mail-Adresse eines anonymen Benutzers nicht mehr anonym ist, sobald Sie sie haben. Wenn dies akzeptiert wird, können Sie möglicherweise, anstatt anonymen Benutzern Flags zuzuweisen, mit dem Drupal-System arbeiten und ihnen einfach ein Konto auf niedriger Ebene erstellen, wenn sie etwas markieren. Sie können den Flag-Zugriff stattdessen nach Rollen unterscheiden.
Dazu müssten Sie den Benutzer sofort mit dem Modul " Benutzerregistrierungskennwort" anmelden . Sie können die Flag-Aktion ändern, um sie zuerst an die Registrierungsseite zu senden (nur auf E-Mail-Adresse vereinfacht), wobei die Flag-Details als Ziel in der Abfragezeichenfolge beibehalten werden. Auf diese Weise wird das Flag erst angewendet, nachdem der Benutzer angemeldet ist, aber eine E-Mail-Bestätigung anfordert .
quelle