Comments ist für die Kommentare zuständig und nimmt auch Trackbacks an. Der Aufruf ist einfach:
{execmacro="comments"}
Wobei auch noch ein Parameter möglich ist. Dieser enthält 4 Buchstaben: ctmf
Diese geben die Ausgabe an.
c: Kommentare
t: Trackbacks
m: Message
f: Formular
Will man Beispielsweise zuerst das Formular und dann die Kommentare und Trackbacks benutzt man:
{execmacro="comments" param="mfct"}
(Das m für Message gibt dem Anwender wichtige Hinweise, z. B. ob sein Kommentar gespeichert wurde und sollte nicht fehlen)
Eine weitere Möglichkeit ist die Abfrage auf einer Seite abgegebener Kommentare. Dazu benutzt man
{execmacro="comments" param="info=pos:1.2.3"}
Man enthält die Anzahl der Kommentare auf der Seite 1.2.3 zurück. Das ist nützlich, wenn man z. B. auf der Übersichtsseite gleich die Anzahl der Kommentare anzeigen will.
Das Modul benötigt eine ganze Reihe von Vorlagen. Ich liste diese nachfolgend auf, so wie sie hier im Blog benutzt werden.
comment/error/captcha
<a name="message"></a>
<span class="headline" style="font-size:24px;">Falscher Code. Bitte versuchen Sie es erneut.</span><br />
Diese Vorlage wird ausgegeben, wenn der CAPTCHA-Code falsch angegeben wurde.<span class="headline" style="font-size:24px;">Falscher Code. Bitte versuchen Sie es erneut.</span><br />
comment/error/twice
<a name="message"></a>
<span class="headline" style="font-size:24px;">Ihr Kommentar wurde bereits gespeichert. </span><br />
Falls der Anwender versehentlich einen Kommentar doppelt absendet, erhält er diese Antwort.<span class="headline" style="font-size:24px;">Ihr Kommentar wurde bereits gespeichert. </span><br />
comment/form
<span class="headline">Neuen Kommentar verfassen:</span>
<form action="{action}&#message" method="POST">
<table callpadding="0" cellspacing="0" border="0">
<tr><td>Name:</td><td><input type="text" id="fieldName" name="Name" value="{Name}"></td></tr>
<tr><td>Email:</td><td><input type="text" id="fieldMail" name="Mail" value="{Mail}"> <span class="small">(wird nicht veröffentlicht)</span></td></tr>
<tr><td>Website:</td><td><input type="text" id="fieldWebsite" name="Website" value="{Website}"></td></tr>
<tr><td valign="top">Text:</td><td><textarea name="text:Text" rows="5" cols="40">{Text}</textarea></td></tr>
<tr><td> </td><td><input type="checkbox" name="InformAboutNewComments" {InformAboutNewComments}> Bei neuen Kommentaren per Email benachrichtigen</td></tr>
<tr><td> </td><td><input type="checkbox" name="store" {store}> Angaben (Name, Email, Website) speichern</td></tr>
<tr><td valign="top"><br>Code:</td><td>{captchaimage}<br /><input type="text" name="captcha"> (Bitte Code von oben eingeben)</td></tr>
<tr><td> </td><td><input type="submit" name="send" value="Absenden"></td></tr>
</table>
</form>
<script>
function getCookie(name){
// Cookie-Wert auslesen
var i=0
var suche = name+"="
while (i<document.cookie.length){
if (document.cookie.substring(i, i+suche.length)==suche){
var ende = document.cookie.indexOf(";", i+suche.length)
ende = (ende>-1) ? ende : document.cookie.length
var cook = document.cookie.substring(i+suche.length, ende)
return unescape(cook)
}
i++
}
return ''
};
if (document.getElementById('fieldName').value+document.getElementById('fieldMail').value+document.getElementById('fieldWebsite').value==''){
document.getElementById('fieldName').value=getCookie('cName');
document.getElementById('fieldMail').value=getCookie('cMail');
document.getElementById('fieldWebsite').value=getCookie('cWebsite');
}
</script>
Das ist das eigentliche Formular. Wie üblich enthält es Platzhalter, um bei einer Wiederholung (falls z. B. das CAPTCHA falsch angegeben wurde) die Felder gleich wieder befüllen zu können. Das Script am Schluss befüllt die Felder aus einem evtl. vorhandenen Cookie. Das muss an dieser Stelle per Javascript passieren, weil ewm komplett mit statischen Seiten arbeitet und die Werte so nciht dynamisch pro Benutzer einfügen kann.<form action="{action}&#message" method="POST">
<table callpadding="0" cellspacing="0" border="0">
<tr><td>Name:</td><td><input type="text" id="fieldName" name="Name" value="{Name}"></td></tr>
<tr><td>Email:</td><td><input type="text" id="fieldMail" name="Mail" value="{Mail}"> <span class="small">(wird nicht veröffentlicht)</span></td></tr>
<tr><td>Website:</td><td><input type="text" id="fieldWebsite" name="Website" value="{Website}"></td></tr>
<tr><td valign="top">Text:</td><td><textarea name="text:Text" rows="5" cols="40">{Text}</textarea></td></tr>
<tr><td> </td><td><input type="checkbox" name="InformAboutNewComments" {InformAboutNewComments}> Bei neuen Kommentaren per Email benachrichtigen</td></tr>
<tr><td> </td><td><input type="checkbox" name="store" {store}> Angaben (Name, Email, Website) speichern</td></tr>
<tr><td valign="top"><br>Code:</td><td>{captchaimage}<br /><input type="text" name="captcha"> (Bitte Code von oben eingeben)</td></tr>
<tr><td> </td><td><input type="submit" name="send" value="Absenden"></td></tr>
</table>
</form>
<script>
function getCookie(name){
// Cookie-Wert auslesen
var i=0
var suche = name+"="
while (i<document.cookie.length){
if (document.cookie.substring(i, i+suche.length)==suche){
var ende = document.cookie.indexOf(";", i+suche.length)
ende = (ende>-1) ? ende : document.cookie.length
var cook = document.cookie.substring(i+suche.length, ende)
return unescape(cook)
}
i++
}
return ''
};
if (document.getElementById('fieldName').value+document.getElementById('fieldMail').value+document.getElementById('fieldWebsite').value==''){
document.getElementById('fieldName').value=getCookie('cName');
document.getElementById('fieldMail').value=getCookie('cMail');
document.getElementById('fieldWebsite').value=getCookie('cWebsite');
}
</script>
Genau gesagt: Ich will unbedingt mit statischen Seiten arbeiten. 8-)
Das #message hinter der Form-Action dient dazu, gleich zur richtigen Stelle nach dem Absenden zu springen. Falls ein längerer Artikel kommentiert wird, macht das durchaus Sinn.
comment/mail-inform
tdbmail
{Mail}
informer@eforia.de
Neuer Blog-Kommentar auf eforia.de
Hallo {ReceiverName},
Sie haben auf dem Blog von eforia.de kommentiert und möchten über neue Kommentare informiert werden. Es wurde ein neuer Kommentar verfasst.
Von {Name} ({Date} Uhr):
{Text}
Zum Kommentar geht es mit diesem Link:
{Url}
Falls Sie bei neuen Kommentaren nicht mehr informiert werden möchten, klicken Sie bitte den folgenden Link:
{RemoveUrl}
Wenn jemand über neue Kommentare informiert werden will, erhält er eine Mail mit dieser Vorlage.{Mail}
informer@eforia.de
Neuer Blog-Kommentar auf eforia.de
Hallo {ReceiverName},
Sie haben auf dem Blog von eforia.de kommentiert und möchten über neue Kommentare informiert werden. Es wurde ein neuer Kommentar verfasst.
Von {Name} ({Date} Uhr):
{Text}
Zum Kommentar geht es mit diesem Link:
{Url}
Falls Sie bei neuen Kommentaren nicht mehr informiert werden möchten, klicken Sie bitte den folgenden Link:
{RemoveUrl}
comment/mail-inform-admin
tdbmail
{Mail}
informer@eforia.de
Neuer Blog-Kommentar auf eforia.de
Hallo Chef,
es wurde ein neuer Kommentar ({Type}) verfasst.
Von {Name} ({Date} Uhr):
{Text}
Zum Kommentar geht es mit diesem Link:
{Url}
Diese Mail geht an den Admin, wenn er das möchte, bei einem neuen Kommentar oder neuen Trackback.{Mail}
informer@eforia.de
Neuer Blog-Kommentar auf eforia.de
Hallo Chef,
es wurde ein neuer Kommentar ({Type}) verfasst.
Von {Name} ({Date} Uhr):
{Text}
Zum Kommentar geht es mit diesem Link:
{Url}
comment/message
<a name="message"></a>
<span class="headline" style="font-size:24px;">Vielen Dank für Ihren Kommentar.</span><br />
Muss ich diese Vorlage erklären? 8-)<span class="headline" style="font-size:24px;">Vielen Dank für Ihren Kommentar.</span><br />
comment/remove-inform
<span class="headline" style="font-size:24px;">Sie erhalten keine weiteren Benachrichtigungen per Email bei neuen Kommentaren zu diesem Artikel.</span><br /><br />
Wenn jemand die Benachrichtigungen abonniert hat und auf den Abbestellen-Link klickt, erhält er diesen Text.comment/view-comment
<a name="message{lfd}"></a>
{if="'{Website}'#''"}<a href="{Website}"{if="{Nofollow}=1"} rel="nofollow"{end}>{Name}</a>{else}{Name}{end} sagte am {[0]write="'{Date}'[1,10]"} um {[0]write="'{Date}'[12,5]"} Uhr:<br />
<div style="padding:8px;background-color: #eeeeee;">{Text}</div>
<hr width="100%" size="1" color="#FABF84">
So wird ein kommentar ausgegeben. Man sieht die Felder als Platzhalter. Etwas kompliziert sind die if-Abfragen, diese dienen einfach dazu unterschiedliche Ausgaben zu machen, je nachdem ob der Kommentator eine Website angegeben hat oder nicht. Und wenn eine angegeben ist, ob wir diese auf Nofollow setzen. {Date} liefert einen String mit Datum und Uhrzeit zurück, deswegen wird dieser per {write...} zerteilt dargestellt.{if="'{Website}'#''"}<a href="{Website}"{if="{Nofollow}=1"} rel="nofollow"{end}>{Name}</a>{else}{Name}{end} sagte am {[0]write="'{Date}'[1,10]"} um {[0]write="'{Date}'[12,5]"} Uhr:<br />
<div style="padding:8px;background-color: #eeeeee;">{Text}</div>
<hr width="100%" size="1" color="#FABF84">
{lfd} liefert die laufende Nummer des Kommentars. Daadurch ist es möglich zu jedem Kommentar direkt zu springen. Besonders in den Mail-Benachrichtigungen macht das Sinn.
Bei der Ausgabe kann man mit {User} abfragen. Beispielsweise kann mit einem Konstrukt wie {if="{User}=0"}background-color: #eeeeee;{end} die Hintergrundfarbe von Kommentaren bei angemeldeten Benutzern farbig hinterlegt werden.
comment/view-trackback
<a name="message{lfd}"></a>
{if="'{Website}'#''"}<a href="{Website}"{if="{Nofollow}=1"} rel="nofollow"{end}>{Name}</a>{else}{Name}{end} trackbackte am {[0]write="'{Date}'[1,10]"} um {[0]write="'{Date}'[12,5]"} Uhr:<br />
<div style="padding:8px;background-color: #eeeeee;">{Text}</div>
<hr width="100%" size="1" color="#FABF84">
Das gleiche wie für Kommentare nun für Trackbacks.{if="'{Website}'#''"}<a href="{Website}"{if="{Nofollow}=1"} rel="nofollow"{end}>{Name}</a>{else}{Name}{end} trackbackte am {[0]write="'{Date}'[1,10]"} um {[0]write="'{Date}'[12,5]"} Uhr:<br />
<div style="padding:8px;background-color: #eeeeee;">{Text}</div>
<hr width="100%" size="1" color="#FABF84">
Das waren die Vorlagen. Am besten einfach übernehmen und an die eigenen Bedürfnisse anpassen.
Fehlt noch die comments.ini:
[comments]
moderateall=1
// when 1, all comments are stored with Hidden=1. Admin has to remove this first before the comment is shown. This is for spam protection.
moderateunknown=0
// moderate all which not from a known user
allowhtml=0
// when NOT 1 all HTML and eforia tags will be converted when saving a message
// more info: i want use html and eforia tags in comments. Iam the admin and i know what iam doing. But i dont want that users cant use it. So it shall not possible to enter html and eforia tags, but it should possible that i edit comments and use it then.
// so in generall html shall be simply output at viewer, but it should not be entered.
// I think a simple converting < and > to < and > and { to /{ should be help when saving the form.
// when allowhtml=1 this conversion shall not be done
inform=irgendwer@mail.de
// Send a mail to this address, when a new comment is added
informhidden=mail@adresse.de
// Send a mail to this adress, when a new comment is added as hidden
nofollow=0
// New comments get default nofollow=no
doubleoptin=1
// Mail Informer for users requires a double-opt-in
[trackbacks]
moderateall=1
// when 1, all trackbacks are stored with Hidden=1. Admin has to remove this first before it is shown. This is for spam protection.
allowmissingbacklink=0
// Normal trackbacks with no backlink get hidden=1. When allowmissingbacklink=1 then trackbacks with no backlinks are allowed.
Name={blog_name}
Text=<span class="highlighted">{title}</span><br>{excerpt}
inform=some@mailadress.com
// Send a mail to this address, when a new trackback is added
informhidden=mail@adresse.de
// Send a mail to this adress, when a new trackback is added as hidden
nofollow=1
// New comments get default nofollow=yes
moderateall=1
// when 1, all comments are stored with Hidden=1. Admin has to remove this first before the comment is shown. This is for spam protection.
moderateunknown=0
// moderate all which not from a known user
allowhtml=0
// when NOT 1 all HTML and eforia tags will be converted when saving a message
// more info: i want use html and eforia tags in comments. Iam the admin and i know what iam doing. But i dont want that users cant use it. So it shall not possible to enter html and eforia tags, but it should possible that i edit comments and use it then.
// so in generall html shall be simply output at viewer, but it should not be entered.
// I think a simple converting < and > to < and > and { to /{ should be help when saving the form.
// when allowhtml=1 this conversion shall not be done
inform=irgendwer@mail.de
// Send a mail to this address, when a new comment is added
informhidden=mail@adresse.de
// Send a mail to this adress, when a new comment is added as hidden
nofollow=0
// New comments get default nofollow=no
doubleoptin=1
// Mail Informer for users requires a double-opt-in
[trackbacks]
moderateall=1
// when 1, all trackbacks are stored with Hidden=1. Admin has to remove this first before it is shown. This is for spam protection.
allowmissingbacklink=0
// Normal trackbacks with no backlink get hidden=1. When allowmissingbacklink=1 then trackbacks with no backlinks are allowed.
Name={blog_name}
Text=<span class="highlighted">{title}</span><br>{excerpt}
inform=some@mailadress.com
// Send a mail to this address, when a new trackback is added
informhidden=mail@adresse.de
// Send a mail to this adress, when a new trackback is added as hidden
nofollow=1
// New comments get default nofollow=yes
Die Einstellungen sind den Kommentaren bereits zu entnehmen. Lediglich Name und Text bei den Trackbacks ist offen. Wenn ein Trackback empfangen wird, werden die Informationen blog_name, title und excerpt übertragen. Hier wird nun angegeben wie diese Informationen in der eigenen Datenbank gespeichert werden. Im Beispiel wird also der blog_name als Name übernommen und der Text mit title als Überschrift und excerpt gebildet.
Verwaltet werden die Kommentare und Trackbacks über Tools/Comments.
Double-Opt-In
Benutzt man die Double-Opt-In-Funktion (was dringend empfohlen wird) benötigt man die folgenden Vorlagen:
comment/mail-doubleoptin
Das ist die Nachricht mit dem Bestätigungslink. Diese sollte in etwa so aussehen:
tdbmail
{eMail}
blog@ihre_domain.de
Blog-Name - Bitte bestätigen Sie die Benachrichtigung über Kommentare
Vielen Dank für Ihren Kommentar im Blog-Name beim Artikel
*{title}*
Sie haben die Option gewählt, dass Sie über neue Kommentare zu diesem Artikel informiert werden möchten. Da dies das erste Mal ist, müssen Sie die Benachrichtigung per Klick bestätigen. Für alle weiteren Kommentare, bei der Sie die gleiche Mail-Adresse verwenden, ist dies nicht mehr notwendig.
Sie müssen die Benachrichtigungsfunktion mit dem folgenden Link bestätigen.
{linktoactivate}
__________________________________________________________
Rechtlicher Hinweis:
Dies ist keine Werbemail! Der Zweck dieser eMail ist die Überprüfung des Wunsches einer Benachrichtigung bei neuen Kommentaren.
Dieses Verfahren (Double-Opt-In) soll sicherstellen keine unverlangten eMails zu versenden.
Weiterhin wird mit dieser eMail der Informationspflicht laut BDSG § 33 Abs. 1 sowie TDDSG § 4 Abs. 1 nachgekommen.
Ihre eMail-Adresse wurde in unserer Datenbank für Kommentare gespeichert. Ohne Aktivierung wird sie nach angemessener Zeit automatisch gelöscht.
Falls Sie nicht wissen, warum Sie diese Mail bekommen haben, hat sich vermutlich jemand einen Scherz erlaubt und Ihre eMail Adresse unberechtigt eingetragen.
Solange Sie nicht den obigen Link zum aktivieren benutzen werden Sie keine weiteren eMails erhalten.
{eMail}
blog@ihre_domain.de
Blog-Name - Bitte bestätigen Sie die Benachrichtigung über Kommentare
Vielen Dank für Ihren Kommentar im Blog-Name beim Artikel
*{title}*
Sie haben die Option gewählt, dass Sie über neue Kommentare zu diesem Artikel informiert werden möchten. Da dies das erste Mal ist, müssen Sie die Benachrichtigung per Klick bestätigen. Für alle weiteren Kommentare, bei der Sie die gleiche Mail-Adresse verwenden, ist dies nicht mehr notwendig.
Sie müssen die Benachrichtigungsfunktion mit dem folgenden Link bestätigen.
{linktoactivate}
__________________________________________________________
Rechtlicher Hinweis:
Dies ist keine Werbemail! Der Zweck dieser eMail ist die Überprüfung des Wunsches einer Benachrichtigung bei neuen Kommentaren.
Dieses Verfahren (Double-Opt-In) soll sicherstellen keine unverlangten eMails zu versenden.
Weiterhin wird mit dieser eMail der Informationspflicht laut BDSG § 33 Abs. 1 sowie TDDSG § 4 Abs. 1 nachgekommen.
Ihre eMail-Adresse wurde in unserer Datenbank für Kommentare gespeichert. Ohne Aktivierung wird sie nach angemessener Zeit automatisch gelöscht.
Falls Sie nicht wissen, warum Sie diese Mail bekommen haben, hat sich vermutlich jemand einen Scherz erlaubt und Ihre eMail Adresse unberechtigt eingetragen.
Solange Sie nicht den obigen Link zum aktivieren benutzen werden Sie keine weiteren eMails erhalten.
comment/message-doubleoptin
Das sieht der Benutzer, wenn er den Link angeklickt hat und alles war OK. Beispiel:
<a name="message"></a>
<span class="headline" style="font-size:24px;">Vielen Dank. Sie erhalten nun eine Benachrichtigung, falls zu diesem Artikel ein neuer Kommentar verfasst wird.</span><br />
<span class="headline" style="font-size:24px;">Vielen Dank. Sie erhalten nun eine Benachrichtigung, falls zu diesem Artikel ein neuer Kommentar verfasst wird.</span><br />
comment/message-doubleoptin-error
Das wird angezeigt, wenn es Probleme mit dem Bestätigungslink gibt. Beispielsweise wenn der Geheimcode nicht stimmt. Den brauchen wir ja, sonst könnte man die Bestätigung für andere übernehmen. Beispiel für die Vorlage:
<a name="message"></a>
<span class="headline" style="font-size:24px;">Es ist leider ein Problem aufgetreten.</span><br />
Die Bestätigung für den Empfang von Benachrichtigungen bei Kommentaren kann leider nicht akzeptiert werden.
Möglicherweise haben Sie den Link nicht korrekt aufgerufen oder zu lange gewartet.
<br /><br />
<span class="headline" style="font-size:24px;">Es ist leider ein Problem aufgetreten.</span><br />
Die Bestätigung für den Empfang von Benachrichtigungen bei Kommentaren kann leider nicht akzeptiert werden.
Möglicherweise haben Sie den Link nicht korrekt aufgerufen oder zu lange gewartet.
<br /><br />
Die letzten Kommentare anzeigen
Dazu einfach {execmacro="comments" param="last=5"} um die letzten 5 Kommentare auszugeben. Benutzt wird dazu eine Vorlage
comment/last-comment
<li><span class="small"><a href="{link="lfd:{PageLfd}"}#message{lfd}" class="small">{Name}</a>
bei <a href="{link="lfd:{PageLfd}"}" class="small">{PageTitle}</a>
({SDate} {STime} Uhr)</small></li>
bei <a href="{link="lfd:{PageLfd}"}" class="small">{PageTitle}</a>
({SDate} {STime} Uhr)</small></li>