<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
   <channel>
      <title>eforia web manager Blog</title>
      <link>http://www.eforia.de/blog</link>
      <description>eforia web manager: Praxiseinsatz, Tipps und Tricks, Suchmaschinenoptimierung,  und vieles mehr.</description>
      <language>de-de</language>
      <pubDate>Tue, 09 Mar 2010 10:36:00 +0100</pubDate>
      <lastBuildDate>Tue, 09 Mar 2010 10:40:00 +0100</lastBuildDate>
      <docs>http://www.eforia.de</docs>
      <generator>eforia RSS Generator</generator>
      <managingEditor>horst.klier@tdb.de</managingEditor>
      <webMaster>horst.klier@tdb.de</webMaster>
<item>
        <title><![CDATA[Javascript Scrolltext]]></title>
        <description><![CDATA[Meine kleinen Javascript-Tipps scheinen gut anzukommen. Deswegen mache ich gleich weiter. Heute ein simpler Scrolltext. Als eforia Vorlage ist dieser einfach zu benutzen.  Wir brauchen dazu eine Vorlage, die so aussehen könnte: scrolltext &lt;d[...]
]]></description>
        <content:encoded><![CDATA[<a target="_blank" href="http://www.eforia.de/blog/javascript-scrolltext.html"><h1>Javascript Scrolltext</h1></a>
Meine kleinen Javascript-Tipps scheinen gut anzukommen. Deswegen mache ich gleich weiter. Heute ein simpler Scrolltext. Als eforia Vorlage ist dieser einfach zu benutzen.<br /><br />
Wir brauchen dazu eine Vorlage, die so aussehen könnte:<br /><strong>scrolltext</strong><br />
<div class="code">&lt;div onclick="window.location.href='{param2}';" class="zweispaltig" style="width:450px;cursor:pointer;padding:0;font-size:24px;font-weight:bold;height:32px;color:#52668C;padding-top:7px;background-color:#CF6C3A;overflow:hidden;"&gt;<br />
&lt;span id="scroller" style="position:relative;left:450px;"&gt;&lt;nobr&gt;{param1} {param1} {param1} &lt;/nobr&gt;&lt;/span&gt;<br />
&lt;/div&gt;<br /><br />
&lt;script&gt;<br />&nbsp; var x=0;<br />&nbsp; var nwidth=0;<br />&nbsp; nwidth=document.getElementById("scroller").offsetWidth;<br />&nbsp; nwidth=nwidth/3;<br />&nbsp; function movescroller(){<br />&nbsp;&nbsp;&nbsp; x--;<br />&nbsp;&nbsp;&nbsp; document.getElementById("scroller").style.left=x+'px';<br />&nbsp;&nbsp;&nbsp; if(x&lt;=(-1*nwidth)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x=0;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp; };<br />
window.setInterval('movescroller()', 10);<br />
&lt;/script&gt;<br /></div><br />
Benutzt wird diese dann, einfach so:<br /><span class="code">{template="scrolltext" param1="eforia ist das beste Web Content Management System 8-)" param2="http://www.eforia.de"}</span><br /><br />
Aussehen tut das dann so:<br />
<div onclick="window.location.href='http://www.eforia.de';" class="zweispaltig" style="width:450px;cursor:pointer;padding:0;font-size:24px;font-weight:bold;height:32px;color:#52668C;padding-top:7px;background-color:#CF6C3A;overflow:hidden;">
<span id="scroller" style="position:relative;left:450px;"><nobr>eforia ist das beste Web Content Management System 8-) eforia ist das beste Web Content Management System 8-) eforia ist das beste Web Content Management System 8-) </nobr></span>
</div>

<script>
  var x=0;
  var nwidth=0;
  nwidth=document.getElementById("scroller").offsetWidth;
  nwidth=nwidth/3;
  function movescroller(){
    x--;
    document.getElementById("scroller").style.left=x+'px';
    if(x<=(-1*nwidth)){
      x=0;
    }
  };
window.setInterval('movescroller()', 10);
</script>
<br />
Die Breite ist dabei leicht anpassbar, ebenso die Gestaltung. Das ist einfach im Div-Container. Wer keinen anklickbaren Link benötigt, kann das onclick-Event weg lassen. Damit es gut aussieht, sollte der enthaltene Text länger sein, als der Container breit ist.&nbsp; Das &lt;nobr&gt; ist nicht wirklich schön und dient eher der Sicherheit. Man weiß ja nie, was die verschiedenen Browser so darstellen. Ich gebe zu, meine langjährigen Erfahrungen als Demo-Programmierer sind ganz hilfreich für solche Hacks. 8-)<br /><br />
Ich würde mich über Feedback freuen. Wenn es gefällt, kann ich gerne öfter kleine Tipps geben. Beispielsweise hätte ich eine Lösung hier, wie man ganz einfach ein wenig Twitter über deren API anzapft. Das geht verblüffend einfach.<br /><hr />
<a target="_blank" href="http://www.eforia.de/blog/javascript-scrolltext.html#comments">Im Blog kommentieren.</a>

]]></content:encoded>
        <category><!--[CDATA[praxistipp]]--></category>
        <category><!--[CDATA[javascript]]--></category>
        <category><!--[CDATA[html]]--></category>
        <category><!--[CDATA[scrolltext]]--></category>
        <category><!--[CDATA[scroller]]--></category>
   <link><![CDATA[http://www.eforia.de/blog/javascript-scrolltext.html]]></link>
   <pubDate>Tue, 09 Mar 2010 10:36:00 +0100</pubDate>
   <comments>http://www.eforia.de/blog/javascript-scrolltext.html#comform</comments>
   <guid isPermaLink="true">http://www.eforia.de/blog/javascript-scrolltext.html</guid>
</item>
<item>
        <title><![CDATA[DropDown-Menü mit Javascript supereinfach]]></title>
        <description><![CDATA[Nachdem der Praxistipp von letzter Woche so gut angekommen ist, hier gleich nochmal etwas aus der Praxis. Diesmal aber vollkommen unabhängig von eforia. Es handelt sich schlicht um ein minimalistisches DropDown-Menü. Minimalistisch bezieht sich[...]
]]></description>
        <content:encoded><![CDATA[<a target="_blank" href="http://www.eforia.de/blog/dropdown-menue-mit-javascript-supereinfach.html"><h1>DropDown-Menü mit Javascript supereinfach</h1></a>
Nachdem der Praxistipp von letzter Woche so gut angekommen ist, hier gleich nochmal etwas aus der Praxis. Diesmal aber vollkommen unabhängig von eforia. Es handelt sich schlicht um ein minimalistisches DropDown-Menü. Minimalistisch bezieht sich dabei auf die verwendete Technik. Es sind nämlich nur 2 Inline-Javascript-Funktionen, die notwendig sind.<br /><br /><strong>Beispiel:</strong><br /><br />

<div onmouseover="document.getElementById('easydropdown').style.height='80px';"
onmouseout="document.getElementById('easydropdown').style.height='30px';" id="easydropdown"
style="height:30px;width:120px;background:url(/gfx/eforia-revolution-cup-33x30.jpg) no-repeat;background-position:top left;padding:0;overflow:hidden;border:1px dashed #cccccc;">
<img src="../sysimg/spacer.gif" width="40" height="30" align="left">Hover mich<br /><br />

<a href="http://www.eforia.de/index.html">Startseite</a><br />
<a href="http://www.eforia.de/blog/index.html">Blog</a><br />
<a href="http://www.eforia.de/text/eforia_web_manager/download.html">Download</a><br />
</div>
<br /><br />
Es wird einfach ein Div dargestellt, dessen Höhe beschnitten ist. Erst ein onmouseover macht den verdeckten Teil sichtbar. Ultrasimpel und effektiv. Durch Verwendung von Hintergrundgrafiken im Div kann man auch leicht einen grafischen Button erzeugen. Besonders wenn man etwas schöner gestaltet und ein Padding nutzt, ist das oft einfacher als eine Grafik im Inhalt.<br /><br />
In der obigen Variante verschiebt sich der folgende Inhalt nach hinten. Das kann man leicht ändern, indem man dem div ein position:relative verpasst. Ebenso könnte man die Höhe so groß setzen, dass sofort alles sichtbar ist und erst mit einer zusätzlichen Script-Anweisung die Höhe beschränken. Dann wäre der Inhalt auch bei abgeschalteten Javascript verfügbar.<br /><br /><strong>Hier der Code für das Beispiel:</strong><br />
<div class="code">&lt;div onmouseover="document.getElementById('easydropdown').style.height='80px';" onmouseout="document.getElementById('easydropdown').style.height='30px';" id="easydropdown" style="height:30px;width:120px;background:url(/gfx/eforia-revolution-cup-33x30.jpg) no-repeat;background-position:top left;padding:0;overflow:hidden;border:1px dashed #cccccc;"&gt;<br />
&lt;img src="../sysimg/spacer.gif" width="40" height="30" align="left"&gt;Hover mich&lt;br /&gt;&lt;br /&gt;<br />
&lt;a href="{link="/eforia® web manager"}"&gt;Startseite&lt;/a&gt;&lt;br /&gt;<br />
&lt;a href="{link="/eforia® web manager/Blog"}"&gt;Blog&lt;/a&gt;&lt;br /&gt;<br />
&lt;a href="{link="/eforia® web manager/Download"}"&gt;Download&lt;/a&gt;&lt;br /&gt;<br />
&lt;/div&gt;</div><br />
Mir ist bekannt, dass man sowas viel toller und besser machen kann.
Auch mit vielen Javascript-Frameworks. Aber es geht eben auch ganz
einfach. Und einfach finde ich immer besser. Ich habe nämlich wenig Lust, bei jeder Neuerscheinung eines Browsers alle alten Projekte nochmal anpassen zu müssen. Ich will hier keine Namen nennen, aber mit einigen Javascript-Frameworks ist (bzw. wäre) das notwendig.<br /><br /><hr />
<a target="_blank" href="http://www.eforia.de/blog/dropdown-menue-mit-javascript-supereinfach.html#comments">Im Blog kommentieren.</a>

]]></content:encoded>
        <category><!--[CDATA[praxistipp]]--></category>
        <category><!--[CDATA[javascript]]--></category>
        <category><!--[CDATA[html]]--></category>
        <category><!--[CDATA[navigation]]--></category>
   <link><![CDATA[http://www.eforia.de/blog/dropdown-menue-mit-javascript-supereinfach.html]]></link>
   <pubDate>Mon, 22 Feb 2010 10:58:00 +0100</pubDate>
   <comments>http://www.eforia.de/blog/dropdown-menue-mit-javascript-supereinfach.html#comform</comments>
   <guid isPermaLink="true">http://www.eforia.de/blog/dropdown-menue-mit-javascript-supereinfach.html</guid>
</item>
<item>
        <title><![CDATA[Dateien tabellarisch ausgeben]]></title>
        <description><![CDATA[Am Freitag habe ich versprochen, ich verrate, wozu man das neue Tag table nutzen kann. Wozu braucht man die interne Tabellennummer einer Datenbank Zum Zugriff auf diese natürlich. Nun muss ich zugeben, dass man das durchaus auch mit Bordmitteln[...]
]]></description>
        <content:encoded><![CDATA[<a target="_blank" href="http://www.eforia.de/blog/dateien-tabellarisch-ausgeben.html"><h1>Dateien tabellarisch ausgeben</h1></a>
Am Freitag habe ich versprochen, ich verrate, wozu man das neue Tag table nutzen kann. Wozu braucht man die interne Tabellennummer einer Datenbank? Zum Zugriff auf diese natürlich. Nun muss ich zugeben, dass man das durchaus auch mit Bordmitteln hätte lösen können, aber wenn man auf eine Tabelle zugreifen möchte, von der man nicht weiß, ob sie bereits geöffnet ist, ist das etwas Aufwand. Das table-Tag macht das schlicht einfacher.<br /><br />
Ein Beispiel:<br />
Angenommen ich habe bei eforia einige Dateien, die ich direkt als Tabelle zum Download anbieten möchte. Mit einem kleinen Script ist das schnell erledigt. Dieses Beispiel greift hier auf die Echtdaten zu. Ich gebe alle Dateien aus, die in eforia mit "presse/" gespeichert sind. Das Resultat sieht so aus:<br /><br />
<table width="100%">
<tr>
<td><b>Datum</b></td>
<td><b>Name</b></td>
<td><b>Download</b></td>
</tr>
<tr>
<td>08.08.2005</td>
<td>ewm_box.zip</td>
<td><a href="../files/ewm4_box.zip" target="_blank">Download</a></td>
</tr>
<tr>
<td>08.05.2003</td>
<td>ewm_logo.zip</td>
<td><a href="../files/eforia_web_manager_logo.zip" target="_blank">Download</a></td>
</tr>
<tr>
<td>17.11.2005</td>
<td>halloween</td>
<td><a href="../files/eforia-halloween.zip" target="_blank">Download</a></td>
</tr>
<tr>
<td>21.03.2006</td>
<td>ostern</td>
<td><a href="../files/eforia-ostern.zip" target="_blank">Download</a></td>
</tr>
<tr>
<td>08.08.2005</td>
<td>screenshots.zip</td>
<td><a href="../files/ewm_screenshots.zip" target="_blank">Download</a></td>
</tr>
<tr>
<td>17.11.2005</td>
<td>xmas</td>
<td><a href="../files/eforia-xmas.zip" target="_blank">Download</a></td>
</tr>

</table>
<br /><br />
Und der Code dafür ist:<br />
<div class="code">&lt;table width="100%"&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;b&gt;Datum&lt;/b&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;b&gt;Download&lt;/b&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
{execprog}<br />&nbsp; var fhAusgabe,nEL,nEL2 : integer<br />&nbsp; var db,nRec : integer<br />&nbsp; var cELFiles : string[99999,1]<br />&nbsp; var cTemp : string<br />&nbsp; setpara('ec 0')<br />&nbsp; fhAusgabe:=Rewrite('ramtext:out',0)<br /><br />&nbsp; db:={[9]table:cms_files}<br />&nbsp; Access(db,'cms_files.id')<br />&nbsp; nEL:=0<br />&nbsp; nRec:=FindRec(db,'presse/','cms_files.id')<br />&nbsp; While nRec&gt;0 Do<br />&nbsp;&nbsp;&nbsp; ReadRec(db,nRec)<br />&nbsp;&nbsp;&nbsp; If GetField(db,'Name') like 'presse/*' then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cELFiles[nEL,0]:=GetField(db,'Name')<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cELFiles[nEL,1]:=GetField(db,'Dateidatum')<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nEL++<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nRec:=NextRec(db)<br />&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nRec:=0<br />&nbsp;&nbsp;&nbsp; End<br />&nbsp; End<br /><br />&nbsp; StrSort(cELFiles,nEL-1,0,'0')<br /><br />&nbsp; nEL2:=0<br />&nbsp; while nEL2&lt;nEL do<br />&nbsp;&nbsp;&nbsp; writeln(fhAusgabe,'&lt;tr&gt;')<br />&nbsp;&nbsp;&nbsp; writeln(fhAusgabe,'&lt;td&gt;'+cELFiles[nEL2,1]+'&lt;/td&gt;')<br />&nbsp;&nbsp;&nbsp; cTemp:=cELFiles[nEL2,0]<br />&nbsp;&nbsp;&nbsp; cTemp:=cTemp[length('presse/')+1,255]<br />&nbsp;&nbsp;&nbsp; writeln(fhAusgabe,'&lt;td&gt;'+tohtml(cTemp)+'&lt;/td&gt;')<br />&nbsp;&nbsp;&nbsp; writeln(fhAusgabe,'&lt;td&gt;&lt;a href="{[4]file="'+cELFiles[nEL2,0]+'"}" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;')<br />&nbsp;&nbsp;&nbsp; writeln(fhAusgabe,'&lt;/tr&gt;')<br />&nbsp;&nbsp;&nbsp; nEL2++<br />&nbsp; end<br /><br />&nbsp; setpara('ec 1')<br />&nbsp; close(fhAusgabe)<br />
{/execprog}<br />
&lt;/table&gt;</div><br />
Wie man sieht, öffne ich die Tabelle noch ganz einfach in Standard-HTML-Code. Nur die Zeilen werden dann per Execprog-Script eingefügt. Die Datenbank wird mit {table:cms_files} abgefragt. Die Ermittlung der Datensätze und die Ausgabe sind 2 Schleifen. Das hat einfach den Sinn, dass man dazwischen noch beliebig sortieren kann.<br /><br />
Selbstverständlich könnte man dafür auch ein eigenes Modul machen. In der Praxis ist aber jede Ausgabe immer wieder ein wenig anders. Da ist es schön einfach das kleine Code-Schnippsel schnell und direkt anpassen zu können.<br /><br /><hr />
<a target="_blank" href="http://www.eforia.de/blog/dateien-tabellarisch-ausgeben.html#comments">Im Blog kommentieren.</a>

]]></content:encoded>
        <category><!--[CDATA[beispiel]]--></category>
        <category><!--[CDATA[table]]--></category>
        <category><!--[CDATA[execprog]]--></category>
        <category><!--[CDATA[praxistipp]]--></category>
   <link><![CDATA[http://www.eforia.de/blog/dateien-tabellarisch-ausgeben.html]]></link>
   <pubDate>Mon, 15 Feb 2010 09:52:00 +0100</pubDate>
   <comments>http://www.eforia.de/blog/dateien-tabellarisch-ausgeben.html#comform</comments>
   <guid isPermaLink="true">http://www.eforia.de/blog/dateien-tabellarisch-ausgeben.html</guid>
</item>
<item>
        <title><![CDATA[Update Nachtrag]]></title>
        <description><![CDATA[Heute gab es noch einen kleinen Nachschlag zum gestrigen Update. Ein neuer Mailman nutzt die Änderungen, die auch schon im Newsletter gemacht wurden. Außerdem wurde der Linkchecker leicht geändert. Dieser nutzt bei Https-Verbindungen wget als F[...]
]]></description>
        <content:encoded><![CDATA[<a target="_blank" href="http://www.eforia.de/blog/update-nachtrag.html"><h1>Update Nachtrag</h1></a>
Heute gab es noch einen kleinen Nachschlag zum gestrigen Update. Ein neuer Mailman nutzt die Änderungen, die auch schon im Newsletter gemacht wurden. Außerdem wurde der Linkchecker leicht geändert. Dieser nutzt bei Https-Verbindungen wget als Fallback. Dafür ist nun ein geringerer Timeout angegeben und die Anzahl Wiederholungen heruntergeregelt. Bisher konnte es in Einzelfällen einfach ganz schön lange dauern, bis die Nichtereichbarkeit einer Adresse festgestellt wurde.<br /><hr />
<a target="_blank" href="http://www.eforia.de/blog/update-nachtrag.html#comments">Im Blog kommentieren.</a>

]]></content:encoded>
        <category><!--[CDATA[ewm5]]--></category>
        <category><!--[CDATA[update]]--></category>
        <category><!--[CDATA[mailman]]--></category>
        <category><!--[CDATA[linkcheck]]--></category>
   <link><![CDATA[http://www.eforia.de/blog/update-nachtrag.html]]></link>
   <pubDate>Sat, 13 Feb 2010 15:32:00 +0100</pubDate>
   <comments>http://www.eforia.de/blog/update-nachtrag.html#comform</comments>
   <guid isPermaLink="true">http://www.eforia.de/blog/update-nachtrag.html</guid>
</item>
<item>
        <title><![CDATA[Update Newsletter]]></title>
        <description><![CDATA[Es gibt wieder mal ein kleines Update für ewm5. Die Änderungen sind eher intern. Die Routine, welche den Newsletter codiert wurde ganz leicht geändert um ein Spam-Signal zu umgehen. D.h. die Wahrscheinlichkeit, dass ein verschickter Newsletter [...]
]]></description>
        <content:encoded><![CDATA[<a target="_blank" href="http://www.eforia.de/blog/update-newsletter.html"><h1>Update Newsletter</h1></a>
Es gibt wieder mal ein kleines Update für ewm5. Die Änderungen sind eher intern. Die Routine, welche den Newsletter codiert wurde ganz leicht geändert um ein Spam-Signal zu umgehen. D.h. die Wahrscheinlichkeit, dass ein verschickter Newsletter als Spam eingestuft wird, ist einfach etwas geringer. Wer es genauer wissen will, darf mich gerne fragen.<br /><br />
Außerdem gibt es einen neuen Tag {table:tabellenname}. Dieser fügt schlicht die Tabellennummer der angegebenen Datenbank-Tabelle ein. Wozu das gut sein soll, verrate ich am Montag. 8-)<br /><hr />
<a target="_blank" href="http://www.eforia.de/blog/update-newsletter.html#comments">Im Blog kommentieren.</a>

]]></content:encoded>
        <category><!--[CDATA[ewm5]]--></category>
        <category><!--[CDATA[update]]--></category>
        <category><!--[CDATA[newsletter]]--></category>
        <category><!--[CDATA[tags]]--></category>
   <link><![CDATA[http://www.eforia.de/blog/update-newsletter.html]]></link>
   <pubDate>Fri, 12 Feb 2010 13:49:00 +0100</pubDate>
   <comments>http://www.eforia.de/blog/update-newsletter.html#comform</comments>
   <guid isPermaLink="true">http://www.eforia.de/blog/update-newsletter.html</guid>
</item>
<item>
        <title><![CDATA[Gewinnspiel: Startup-Checklisten]]></title>
        <description><![CDATA[Es ist Weihnachten. Da kommt es gerade richtig, ein kleines Geschenk zu verlosen. eforia hat im Sack eine Lizenz der Startup-Checklisten von Tobias Knoof. Dabei handelt es sich um eine Informationssammlung rund ums Info-Marketing-Business.&nbsp[...]
]]></description>
        <content:encoded><![CDATA[<a target="_blank" href="http://www.eforia.de/blog/gewinnspiel-startup-checklisten.html"><h1>Gewinnspiel: Startup-Checklisten</h1></a>
Es ist Weihnachten. Da kommt es gerade richtig, ein kleines Geschenk zu verlosen. eforia hat im Sack eine Lizenz der Startup-Checklisten von Tobias Knoof. Dabei handelt es sich um eine Informationssammlung rund ums Info-Marketing-Business.&nbsp;<br />
<h3><a href="http://www.startupchecklisten.de/2/?downloads=563" target="_blank" rel="nofollow"><img border="0" src="http://www.startupchecklisten.de/bilder/banner-300x250.png" align="right" width="300" height="250"></a>Info Marketing?</h3>Einfach ausgedrückt erstellen Info-Marketer elektronische Bücher und verkaufen diese im Internet.<br /><br />
Die Startup-Checklisten enthalten nun viel Grundlagenwissen, was man genau dafür benötigt. Aber auch wer nicht unbedingt dieses Geschäftsmodell verfolgt, findet wertvolle Informationen. Gerade was das Online-Marketing angeht, habe ich den Eindruck, die Info-Marketer sind dem Rest der Branche immer eine Nasenlänge voraus. Wer sich also ernsthaft mit Online-Marketing befasst, der kommt an dieser "Szene" kaum vorbei. Für Werbe- und Web-Agenturen ergibt sich dadurch ein echter Vorsprung.<br /><br />
Die Startup-Checklisten sind ein hervorragender Einstieg. Ich muss Tobias Knoof neidlos zugestehen, dass seine Startup-Checklisten viele Informationen enthalten, die auch für mich neu waren. Besonders in den Linksammlungen habe ich manchen Schatz entdeckt. Die professionelle Aufmachung tut ein übriges.<br /><br />
<h3>Gewinnspiel</h3>Weil ich eine Lizenz übrig habe, verlose ich diese. Zur Teilnahme einfach einen beliebigen Kommentar auf diesen Beitrag schreiben. Der Rechtsweg ist ausgeschlossen. Unter allen Teilnehmern bis zum Jahresende (31.12. 23:59 Uhr) verlose ich die Lizenz.<br /><br />
PS: <a href="http://www.startupchecklisten.de/2/?downloads=563" target="_blank" rel="nofollow">Hier klicken für nähere Informationen zu den Startup-Checklisten</a>.<br /><br />
<h3 style="text-align: center;">Fröhliche Weihnachten und viel Glück wünschen eforia und Horst Klier</h3>
<h3 style="text-align: center;"><img src="http://www.eforia.de/gfx/eforia-xmas.jpg" border="0" style="width: 360px; height: 391px;" /></h3><br /><br /><hr />
<a target="_blank" href="http://www.eforia.de/blog/gewinnspiel-startup-checklisten.html#comments">Im Blog kommentieren.</a>

]]></content:encoded>
        <category><!--[CDATA[gewinnspiel]]--></category>
        <category><!--[CDATA[xmas]]--></category>
        <category><!--[CDATA[online-marketing]]--></category>
   <link><![CDATA[http://www.eforia.de/blog/gewinnspiel-startup-checklisten.html]]></link>
   <pubDate>Wed, 23 Dec 2009 13:13:00 +0100</pubDate>
   <comments>http://www.eforia.de/blog/gewinnspiel-startup-checklisten.html#comform</comments>
   <guid isPermaLink="true">http://www.eforia.de/blog/gewinnspiel-startup-checklisten.html</guid>
</item>
<item>
        <title><![CDATA[Neuer Scheduler]]></title>
        <description><![CDATA[Ich habe soeben ein kleines Update abgestellt, was nur einen neuen Scheduler enthält. Dieser hat auch nur eine kleine neue Funktion. Falls er gestartet wird, prüft er, wann der letzte Lauf beendet wurde. Ist das weniger als 5 Sekunden her, bric[...]
]]></description>
        <content:encoded><![CDATA[<a target="_blank" href="http://www.eforia.de/blog/neuer-scheduler.html"><h1>Neuer Scheduler</h1></a>
Ich habe soeben ein kleines Update abgestellt, was nur einen neuen Scheduler enthält. Dieser hat auch nur eine kleine neue Funktion. Falls er gestartet wird, prüft er, wann der letzte Lauf beendet wurde. Ist das weniger als 5 Sekunden her, bricht er sofort wieder ab.<br /><br /><strong>Was für einen Sinn hat das?</strong><br /><br />
Angenommen der Scheduler wird per Cron jede Minute aufgerufen. Ein Lauf benötigt aber mehr als eine Minute. Cron queued nun die Aufrufe, was zu einer endlosen Schlange heranwachsen kann und die Serverlast unnötig erhöht. Mit der 5 Sekunden Zwangspause kann das nicht mehr auftreten.<br /><br />
Ein Problem dürfte das nur in den wenigsten Fällen sein. Aber die neueste Funktion zum automatischen prüfen von ausgehenden Links muss beispielsweise immer auf Antwort vom anderen Server warten. Da kann sich die Laufzeit schon mal erhöhen. Deswegen das kleine Sicherheitsfeature, damit der Server nicht unnötig belastet wird.<br /><br /><hr />
<a target="_blank" href="http://www.eforia.de/blog/neuer-scheduler.html#comments">Im Blog kommentieren.</a>

]]></content:encoded>
        <category><!--[CDATA[ewm5]]--></category>
        <category><!--[CDATA[update]]--></category>
        <category><!--[CDATA[scheduler]]--></category>
   <link><![CDATA[http://www.eforia.de/blog/neuer-scheduler.html]]></link>
   <pubDate>Mon, 30 Nov 2009 16:09:00 +0100</pubDate>
   <comments>http://www.eforia.de/blog/neuer-scheduler.html#comform</comments>
   <guid isPermaLink="true">http://www.eforia.de/blog/neuer-scheduler.html</guid>
</item>
<item>
        <title><![CDATA[Kleines Update]]></title>
        <description><![CDATA[Wieder mal gibt es ein Mini-Update für die 5er Version.   Ein neues Tag  gibt schlicht die Versionsnummer aus. Der Sinn davon ist, ein Generator Meta-Tag einfügen zu können wie  &lt;meta name="GENERATOR" content="eforia web manager "&gt;Google [...]
]]></description>
        <content:encoded><![CDATA[<a target="_blank" href="http://www.eforia.de/blog/kleines-update.html"><h1>Kleines Update</h1></a>
Wieder mal gibt es ein Mini-Update für die 5er Version.<br /><br />
<ul>
  <li>Ein neues Tag <span class="code">{eforiaversion}</span> gibt schlicht die Versionsnummer aus. Der Sinn davon ist, ein Generator Meta-Tag einfügen zu können wie<br />
    <div class="code">&lt;meta name="GENERATOR" content="eforia web manager {eforiaversion}"&gt;</div>Google beachtet sowas ja neuerdings und informiert Webmaster über Updates ihrer CMS. Da will ich mal den Weg nicht versperren, auch eforia mit aufzunehmen. 8-)<br /><br /></li>
  <li>ping.prg: Bisher wurden Dienste nicht mehr angepingt, wenn der Fehlerzähler das angegebene Maximum erreichte. Auch bei einem neuen Ping wurde nicht erneut versucht. Nun wird pro Ping-Aktion der Fehlerzähler wieder zurück gesetzt. Das nützt, wenn der Dienst nur temporär nicht funktioniert hat oder die Fehlermeldung als Rückgabe gefälscht ist.<br /><br /></li>
  <li>Kommentare: <a title="Halloween-Update Kommentare" href="http://www.eforia.de/blog/halloween-update-kommentare.html">Seit kurzem</a> gibt es die Möglichkeit, den Kommentaren auch Nutzer zuzuordnen. Nun kann man konsequenterweise auch festlegen, dass Kommentare von Nutzer sofort sichtbar sind, solche von Gästen aber moderiert werden. Dazu dient<br />
    <div class="code">moderateunknown=1</div>in der <span class="code">comments.ini</span> (nur bei Kommentaren, nicht bei Trackbacks). Mit dieser Einstellung stehen alle Kommentare von Nicht-Usern erstmal auf "hidden". Das macht natürlich nur Sinn, wenn nicht schon <cite>moderateall=1</cite> gesetzt ist. Dann werden natürlich weiterhin alle Kommentare moderiert.<br />
Außerdem habe ich eine zweite Informer-Adresse eingerichtet. Neben<br />
    <div class="code">inform=mail@adresse.de</div>gibt es nun auch<br />
    <div class="code">informhidden=mail@adresse.de</div>Eben bei Kommentaren die zu moderieren sind (Status hidden), wird eine Mail an diese Adresse statt der anderen geschickt.<br /><br /><span class="subline">Tipp:</span> Es macht vor allem bei Trackbacks Sinn, informhidden einfach leer zu lassen. Zumindest bei mir kommen täglich mehrere hundert Spam-Trackbacks an, die auf diese Weise keine Informer-Mails mehr erzeugen.</li>
</ul><br /><hr />
<a target="_blank" href="http://www.eforia.de/blog/kleines-update.html#comments">Im Blog kommentieren.</a>

]]></content:encoded>
        <category><!--[CDATA[ewm5]]--></category>
        <category><!--[CDATA[update]]--></category>
        <category><!--[CDATA[ping]]--></category>
        <category><!--[CDATA[comments]]--></category>
        <category><!--[CDATA[tags]]--></category>
   <link><![CDATA[http://www.eforia.de/blog/kleines-update.html]]></link>
   <pubDate>Fri, 27 Nov 2009 10:10:00 +0100</pubDate>
   <comments>http://www.eforia.de/blog/kleines-update.html#comform</comments>
   <guid isPermaLink="true">http://www.eforia.de/blog/kleines-update.html</guid>
</item>
<item>
        <title><![CDATA[Halloween-Update: Automail]]></title>
        <description><![CDATA[Automail dient zum automatisierten Versenden von Mails. Man kann also ein Formular anbieten, bei dem sich Anwender mit Namen und Mail-Adresse eintragen. An diese werden dann zeitgesteuert Mails verschickt. Doubleoptin und jederzeitiges austrage[...]
]]></description>
        <content:encoded><![CDATA[<a target="_blank" href="http://www.eforia.de/blog/halloween-update-automail.html"><h1>Halloween-Update: Automail</h1></a>
Automail dient zum automatisierten Versenden von Mails. Man kann also ein Formular anbieten, bei dem sich Anwender mit Namen und Mail-Adresse eintragen. An diese werden dann zeitgesteuert Mails verschickt. Doubleoptin und jederzeitiges austragen ist natürlich möglich. Diese Funktion wird von Info-Marketern gerne eingesetzt. Es würde hier aber zu weit führen, das hier genauer zu erklären.<br /><br />
Man legt eine Vorlage <strong>automail/ini</strong> an. Dort steht z.B.<br />
<div class="code">[set_1]<br />
template=ehrliche-lebensmittel<br />
inform_new=horst@klier.net<br />
inform_check=horst@klier.net<br />
inform_stop=horst@klier.net<br />
inform_sender=info@leben-ohne-diaet.de<br /></div><br />
Dabei ist die "1" hinter dem set_ die Id. Die Einträge darunter sind dieser einen Id zugeordnet. Es muss keine Zahl sein und auch nicht durchnummeriert werden. Das ist hier nur zufällig eine 1.<br />
template gibt an, unter welchem Namen die weiteren Vorlagen dazu angelegt sind. Die inform_xxx sind Mail-Adressen. new, check und stop sind dabei reine Informationsmails, die bei Neuanmeldungen, Doubleoptin-Bestätigungen und Abmeldungen verschickt werden können, der sender ist der Absender der verschickten Mails.<br /><br />
Zu dem Namen "ehrliche-lebensmittel" gibt es dann weitere Vorlagen:<br /><strong>automail/ehrliche-lebensmittel/ini</strong><br />
<div class="code">headline=Gesund Abnehmen ohne Diät<br />
targetpage=http://www.leben-ohne-diaet.de/programm/o.prg?pos=Automail<br />
mails=5<br />
hours_1=0<br />
hours_2=24<br />
hours_3=48<br />
hours_4=72<br />
hours_5=96<br /></div>headline ist die Überschrift. Diese kann man bei weiteren Vorlagen als Platzhalter verwenden. targetpage gibt eine Zielseite an, bei der das MOdul später eingebunden sein muss um An- und Abmeldungen anzunehmen. mails ist die Anzahl an Nachrichten, die verschickt werden. Darunter sind die jeweiligen Zeiten in Stunden angegeben, wann die Mails versendet werden.<br /><br /><strong>automail/ehrliche-lebensmittel/mail-opt-in</strong><br />
<div class="code">tdbmail<br />
{Mail}<br />
horst@klier.net<br />
Leben ohne Diät -&nbsp; Bitte bestätigen Sie den Empfang<br />
Hallo {Name},<br /><br />
Vielen Dank für Ihr Interesse!<br /><br />
Sie müssen den kostenlosen Empfang noch bestätigen.<br />
Benutzen Sie dafür den folgenden Link:<br /><br />
{linktoactivate}<br /></div>Das ist die Nachricht, die zum Double-Opt-In auffordert. Die Platzhalter dürften klar sein, oder?<br /><br /><strong>automail/ehrliche-lebensmittel/main</strong><br />
<div class="code">{success}<br />
&lt;h1 style="color:#ffffff;"&gt;Vielen Dank.&lt;/h1&gt;&lt;br /&gt;<br />
&lt;br /&gt;Sie erhalten in wenigen Minuten eine Mail, in der Sie den Empfang mit einem Klick bestätigen müssen.&lt;br /&gt;<br />
{/success}<br />
{error}<br />
&lt;h1 style="color:#ff4444;"&gt;Fehler&lt;/h1&gt;&lt;br /&gt;<br />
&lt;br /&gt;Es ist ein Fehler aufgetreten. Bitte prüfen Sie Ihre Angaben.&lt;br /&gt;<br />
{/error}<br />
{form}<br />
&lt;form action="{link="type:dynamic;/Automail"}&amp;id=1" method="post"&gt;<br />
&lt;table border="0" cellpadding="2" cellspacing="2"&gt;<br />
{nameerror}<br />
&lt;tr&gt;<br />&nbsp; &lt;td&gt;&lt;/td&gt;<br />&nbsp; &lt;td style="color:#880000;"&gt;Bitte geben Sie Ihren Vornamen an. &lt;/td&gt;<br />
&lt;/tr&gt;<br />
{/nameerror}<br />
&lt;tr&gt;<br />&nbsp; &lt;td&gt;&lt;b&gt;Vorname:&lt;/b&gt; &lt;/td&gt;<br />&nbsp; &lt;td&gt;&lt;input type="text" name="Name" size="66" value="{Name}" class="text" style="width:145px;"&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
{mailerror}<br />
&lt;tr&gt;<br />&nbsp; &lt;td&gt;&lt;/td&gt;<br />&nbsp; &lt;td style="color:#880000;"&gt;Bitte geben Sie Ihre Email-Adresse an. &lt;/td&gt;<br />
&lt;/tr&gt;<br />
{/mailerror}<br />
&lt;tr&gt;<br />&nbsp; &lt;td&gt;&lt;b&gt;Email:&lt;/b&gt; &lt;/td&gt;<br />&nbsp; &lt;td&gt;&lt;input type="text" name="Mail" size="66" value="{Mail}" class="text" style="width:145px;"&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />&nbsp; &lt;td&gt;&amp;nbsp;&lt;/td&gt;<br />&nbsp; &lt;td colspan="1" align="left"&gt;<br />
&lt;input type="hidden" name="Sourceid" value="{Sourceid}"&gt;<br />
&lt;input type="submit" value="Eintragen" name="OK" class="button"&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/form&gt;<br />
{/form}<br />
{opt-in-success}<br />
&lt;h1 style="color:#ffffff;"&gt;Vielen Dank.&lt;/h1&gt;&lt;br /&gt;<br />
&lt;br /&gt;Sie haben sich erfolgreich für den kostenlosen Empfang angemeldet.&lt;br /&gt;<br />
{/opt-in-success}<br />
{opt-in-error}<br />
&lt;h1 style="color:#ff4444;"&gt;Fehler&lt;/h1&gt;&lt;br /&gt;<br />
&lt;br /&gt;Ich kann Sie nicht eintragen. Ihre Adresse wurde nicht gefunden oder der Code stimmt nicht. Haben Sie sich vielleicht bereits an- und wieder abgemeldet?&lt;br /&gt;<br />
{/opt-in-error}<br />
{opt-out-success}<br />
&lt;h1 style="color:#ffffff;"&gt;Schade.&lt;/h1&gt;&lt;br /&gt;<br />
&lt;br /&gt;Sie wurden ausgetragen. Sie erhalten keine weiteren Nachrichten.&lt;br /&gt;<br />
{/opt-out-success}<br />
{opt-out-error}<br />
&lt;h1 style="color:#ff4444;"&gt;Fehler&lt;/h1&gt;&lt;br /&gt;<br />
&lt;br /&gt;Ich kann Sie nicht austragen. Ihre Adresse wurde nicht gefunden oder der Code stimmt nicht. Haben Sie sich vielleicht bereits abgemeldet?&lt;br /&gt;<br />
{/opt-out-error}<br /></div>Das ist also die Vorlage für Formular und Fehlermeldungen. Die einzelnen Abschnitte haben sprechende Namen. Was man beachten sollte ist, dass bei der Form-Action hinten die id angehängt wird. Das muss eben genau die sein, die in der automail/ini steht. Das Sourceid ist zum Durchschleifen einer Tracking-Information. Man will ja wissen, woher die Anmeldungen kommen.<br /><br /><strong>automail/ehrliche-lebensmittel/mail-1</strong><br />
<div class="code">tdbmail<br />
{Mail}<br />
horst@klier.net<br />
Leben ohne Diät - Teil 1 - Meine Geschichte<br />
Hallo {Name},<br /><br />
hier kommt auch schon der erste Teil.<br />
...<br />
________________________________________________________<br /><br />
Wenn Sie keine Nachricht mehr erhalten wollen, klicken Sie einfach den folgenden Link<br />
{linktounsubscribe}<br />
________________________________________________________<br /><br />
Dieser Newsletter wird herausgegeben von<br />
Horst Klier, Schwabenstr. 30, 91126 Schwabach<br />
Tel:&nbsp; 09122 632211<br />
Web:&nbsp; http://www.leben-ohne-diaet.de<br />
Mail: horst@klier.net<br /></div>Das ist die erste Mail, 5 entsprechende gibt es.&nbsp; Diese müssen einfach durchnummeriert sein.<br /><br />
Das wars? Nein. Automail soll ja automatisch Mails versenden. Deswegen brauchen wir einen Eintrag in der <strong>schedul.ini</strong>:<br />
<div class="code">program_14=automail.prg &gt;&gt;../logfiles/automail.log<br />
dir_14=../custprg<br />
next_start_14=27.10.2009 10:10<br />
every_min_14=10<br /></div><br />
Und eingebunden werden muss das Modul auch noch. In der ini steht eine Targetpage. Dort muss das Modul auf jeden Fall eingebunden werden:<br />
<div class="code">{execmacro="automail"}</div>Mehr muss nicht auf die Seite. Weil das nur die Zielseite ist. Theoretisch müsste man dafür keine extra Seite anlegen, aber ich finde es besser, wenn keine störenden Elemente zu sehen sind.<br /><br />
Zur Einbindung des Formulars benutzt man<br />
<div class="code">{execmacro="automail" param="1;sourceid=Tracking"}</div>Die 1 ist wieder die Id. Die SourceId ist optional und dient dazu, hinterher zu wissen, woher die Eintragung gekommen ist.<br /><br />
<h2>Beispiel</h2>Und weil ich weiß, dass auch das wieder viel komplizierter klingt, als es ist, lade ich sie zu einem Beispiel ein. Unter <a href="http://www.leben-ohne-diaet.de/text/buch/bestellen.html" target="_blank">http://www.leben-ohne-diaet.de/text/buch/bestellen.html</a> finden Sie unten ein Formular "Noch nicht überzeugt?". Wenn Sie sich dort eintragen, sehen Sie den Automailer in Aktion.<br /><hr />
<a target="_blank" href="http://www.eforia.de/blog/halloween-update-automail.html#comments">Im Blog kommentieren.</a>

]]></content:encoded>
        <category><!--[CDATA[ewm5]]--></category>
        <category><!--[CDATA[update]]--></category>
        <category><!--[CDATA[halloween]]--></category>
        <category><!--[CDATA[automail]]--></category>
   <link><![CDATA[http://www.eforia.de/blog/halloween-update-automail.html]]></link>
   <pubDate>Sat, 31 Oct 2009 10:15:00 +0100</pubDate>
   <comments>http://www.eforia.de/blog/halloween-update-automail.html#comform</comments>
   <guid isPermaLink="true">http://www.eforia.de/blog/halloween-update-automail.html</guid>
</item>
<item>
        <title><![CDATA[Halloween-Update: Newsletter]]></title>
        <description><![CDATA[Die Neuerung im Newsletter ist eher etwas für Profis. Falls man eine umfangreichere Benutzerverwaltung verwendet, hat man dort oft direkt die Verwaltung, ob der Nutzer einen Newsletter empfangen will oder nicht. Das Feld, wo man das festlegt, k[...]
]]></description>
        <content:encoded><![CDATA[<a target="_blank" href="http://www.eforia.de/blog/halloween-update-newsletter.html"><h1>Halloween-Update: Newsletter</h1></a>
Die Neuerung im Newsletter ist eher etwas für Profis. Falls man eine umfangreichere Benutzerverwaltung verwendet, hat man dort oft direkt die Verwaltung, ob der Nutzer einen Newsletter empfangen will oder nicht. Das Feld, wo man das festlegt, kann man nun einfach in der newsletter.ini angeben. Beispielsweise<br />
<div class="code">[user]<br />
cms_usermanagement=Newsletter</div><br />
Das bedeutet, dass es ein Feld Newsletter (Boolean) in der usr_user geben muss. Beim versenden eines Newsletters bekommen alle Nutzer dort eine Mail, bei denen in diesem Feld eine 1 steht.<br /><br /><hr />
<a target="_blank" href="http://www.eforia.de/blog/halloween-update-newsletter.html#comments">Im Blog kommentieren.</a>

]]></content:encoded>
        <category><!--[CDATA[ewm5]]--></category>
        <category><!--[CDATA[update]]--></category>
        <category><!--[CDATA[halloween]]--></category>
        <category><!--[CDATA[newsletter]]--></category>
   <link><![CDATA[http://www.eforia.de/blog/halloween-update-newsletter.html]]></link>
   <pubDate>Fri, 30 Oct 2009 10:15:00 +0100</pubDate>
   <comments>http://www.eforia.de/blog/halloween-update-newsletter.html#comform</comments>
   <guid isPermaLink="true">http://www.eforia.de/blog/halloween-update-newsletter.html</guid>
</item>
   </channel>
</rss>