|
Blog
Javascript Scrolltext
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
<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;">
<span id="scroller" style="position:relative;left:450px;"><nobr>{param1} {param1} {param1} </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>
Benutzt wird diese dann, einfach so: {template="scrolltext" param1="eforia ist das beste Web Content Management System 8-)" param2="http://www.eforia.de"}
Aussehen tut das dann so:
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-)
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. Das <nobr> 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-)
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.
Dieser Artikel wurde veröffentlicht am 09.03.2010 um 10:36 Uhr.
Noch kein Kommentar.
DropDown-Menü mit Javascript supereinfach
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.
Beispiel:
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.
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.
Hier der Code für das Beispiel:
<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="{link="/eforia® web manager"}">Startseite</a><br />
<a href="{link="/eforia® web manager/Blog"}">Blog</a><br />
<a href="{link="/eforia® web manager/Download"}">Download</a><br />
</div>
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.
Dieser Artikel wurde veröffentlicht am 22.02.2010 um 10:58 Uhr.
Noch kein Kommentar.
Dateien tabellarisch ausgeben
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.
Ein Beispiel:
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:
Und der Code dafür ist:
<table width="100%">
<tr>
<td><b>Datum</b></td>
<td><b>Name</b></td>
<td><b>Download</b></td>
</tr>
{execprog} var fhAusgabe,nEL,nEL2 : integer var db,nRec : integer var cELFiles : string[99999,1] var cTemp : string setpara('ec 0') fhAusgabe:=Rewrite('ramtext:out',0)
db:={[9]table:cms_files} Access(db,'cms_files.id') nEL:=0 nRec:=FindRec(db,'presse/','cms_files.id') While nRec>0 Do ReadRec(db,nRec) If GetField(db,'Name') like 'presse/*' then cELFiles[nEL,0]:=GetField(db,'Name') cELFiles[nEL,1]:=GetField(db,'Dateidatum') nEL++ nRec:=NextRec(db) Else nRec:=0 End End
StrSort(cELFiles,nEL-1,0,'0')
nEL2:=0 while nEL2<nEL do writeln(fhAusgabe,'<tr>') writeln(fhAusgabe,'<td>'+cELFiles[nEL2,1]+'</td>') cTemp:=cELFiles[nEL2,0] cTemp:=cTemp[length('presse/')+1,255] writeln(fhAusgabe,'<td>'+tohtml(cTemp)+'</td>') writeln(fhAusgabe,'<td><a href="{[4]file="'+cELFiles[nEL2,0]+'"}" target="_blank">Download</a></td>') writeln(fhAusgabe,'</tr>') nEL2++ end
setpara('ec 1') close(fhAusgabe)
{/execprog}
</table>
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.
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.
Dieser Artikel wurde veröffentlicht am 15.02.2010 um 09:52 Uhr.
Noch kein Kommentar.
Update Nachtrag
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.
Dieser Artikel wurde veröffentlicht am 13.02.2010 um 15:32 Uhr.
Noch kein Kommentar.
Update Newsletter
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.
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-)
Dieser Artikel wurde veröffentlicht am 12.02.2010 um 13:49 Uhr.
Noch kein Kommentar.
Gewinnspiel: Startup-Checklisten
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.
Info Marketing?Einfach ausgedrückt erstellen Info-Marketer elektronische Bücher und verkaufen diese im Internet.
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.
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.
GewinnspielWeil 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.
PS: Hier klicken für nähere Informationen zu den Startup-Checklisten.
Fröhliche Weihnachten und viel Glück wünschen eforia und Horst Klier

Dieser Artikel wurde veröffentlicht am 23.12.2009 um 13:13 Uhr.
3 Kommentare.
Neuer Scheduler
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.
Was für einen Sinn hat das?
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.
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.
Dieser Artikel wurde veröffentlicht am 30.11.2009 um 16:09 Uhr.
Noch kein Kommentar.
Kleines Update
Wieder mal gibt es ein Mini-Update für die 5er Version.
Dieser Artikel wurde veröffentlicht am 27.11.2009 um 10:10 Uhr.
Noch kein Kommentar.
Halloween-Update: Automail
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.
Man legt eine Vorlage automail/ini an. Dort steht z.B.
[set_1]
template=ehrliche-lebensmittel
inform_new=horst@klier.net
inform_check=horst@klier.net
inform_stop=horst@klier.net
inform_sender=info@leben-ohne-diaet.de
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.
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.
Zu dem Namen "ehrliche-lebensmittel" gibt es dann weitere Vorlagen: automail/ehrliche-lebensmittel/ini
headline=Gesund Abnehmen ohne Diät
targetpage=http://www.leben-ohne-diaet.de/programm/o.prg?pos=Automail
mails=5
hours_1=0
hours_2=24
hours_3=48
hours_4=72
hours_5=96
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.
automail/ehrliche-lebensmittel/mail-opt-in
tdbmail
{Mail}
horst@klier.net
Leben ohne Diät - Bitte bestätigen Sie den Empfang
Hallo {Name},
Vielen Dank für Ihr Interesse!
Sie müssen den kostenlosen Empfang noch bestätigen.
Benutzen Sie dafür den folgenden Link:
{linktoactivate}
Das ist die Nachricht, die zum Double-Opt-In auffordert. Die Platzhalter dürften klar sein, oder?
automail/ehrliche-lebensmittel/main
{success}
<h1 style="color:#ffffff;">Vielen Dank.</h1><br />
<br />Sie erhalten in wenigen Minuten eine Mail, in der Sie den Empfang mit einem Klick bestätigen müssen.<br />
{/success}
{error}
<h1 style="color:#ff4444;">Fehler</h1><br />
<br />Es ist ein Fehler aufgetreten. Bitte prüfen Sie Ihre Angaben.<br />
{/error}
{form}
<form action="{link="type:dynamic;/Automail"}&id=1" method="post">
<table border="0" cellpadding="2" cellspacing="2">
{nameerror}
<tr> <td></td> <td style="color:#880000;">Bitte geben Sie Ihren Vornamen an. </td>
</tr>
{/nameerror}
<tr> <td><b>Vorname:</b> </td> <td><input type="text" name="Name" size="66" value="{Name}" class="text" style="width:145px;"></td>
</tr>
{mailerror}
<tr> <td></td> <td style="color:#880000;">Bitte geben Sie Ihre Email-Adresse an. </td>
</tr>
{/mailerror}
<tr> <td><b>Email:</b> </td> <td><input type="text" name="Mail" size="66" value="{Mail}" class="text" style="width:145px;"></td>
</tr>
<tr> <td> </td> <td colspan="1" align="left">
<input type="hidden" name="Sourceid" value="{Sourceid}">
<input type="submit" value="Eintragen" name="OK" class="button"></td>
</tr>
</table>
</form>
{/form}
{opt-in-success}
<h1 style="color:#ffffff;">Vielen Dank.</h1><br />
<br />Sie haben sich erfolgreich für den kostenlosen Empfang angemeldet.<br />
{/opt-in-success}
{opt-in-error}
<h1 style="color:#ff4444;">Fehler</h1><br />
<br />Ich kann Sie nicht eintragen. Ihre Adresse wurde nicht gefunden oder der Code stimmt nicht. Haben Sie sich vielleicht bereits an- und wieder abgemeldet?<br />
{/opt-in-error}
{opt-out-success}
<h1 style="color:#ffffff;">Schade.</h1><br />
<br />Sie wurden ausgetragen. Sie erhalten keine weiteren Nachrichten.<br />
{/opt-out-success}
{opt-out-error}
<h1 style="color:#ff4444;">Fehler</h1><br />
<br />Ich kann Sie nicht austragen. Ihre Adresse wurde nicht gefunden oder der Code stimmt nicht. Haben Sie sich vielleicht bereits abgemeldet?<br />
{/opt-out-error}
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.
automail/ehrliche-lebensmittel/mail-1
tdbmail
{Mail}
horst@klier.net
Leben ohne Diät - Teil 1 - Meine Geschichte
Hallo {Name},
hier kommt auch schon der erste Teil.
...
________________________________________________________
Wenn Sie keine Nachricht mehr erhalten wollen, klicken Sie einfach den folgenden Link
{linktounsubscribe}
________________________________________________________
Dieser Newsletter wird herausgegeben von
Horst Klier, Schwabenstr. 30, 91126 Schwabach
Tel: 09122 632211
Web: http://www.leben-ohne-diaet.de
Mail: horst@klier.net
Das ist die erste Mail, 5 entsprechende gibt es. Diese müssen einfach durchnummeriert sein.
Das wars? Nein. Automail soll ja automatisch Mails versenden. Deswegen brauchen wir einen Eintrag in der schedul.ini:
program_14=automail.prg >>../logfiles/automail.log
dir_14=../custprg
next_start_14=27.10.2009 10:10
every_min_14=10
Und eingebunden werden muss das Modul auch noch. In der ini steht eine Targetpage. Dort muss das Modul auf jeden Fall eingebunden werden:
{execmacro="automail"} 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.
Zur Einbindung des Formulars benutzt man
{execmacro="automail" param="1;sourceid=Tracking"} Die 1 ist wieder die Id. Die SourceId ist optional und dient dazu, hinterher zu wissen, woher die Eintragung gekommen ist.
BeispielUnd weil ich weiß, dass auch das wieder viel komplizierter klingt, als es ist, lade ich sie zu einem Beispiel ein. Unter http://www.leben-ohne-diaet.de/text/buch/bestellen.html finden Sie unten ein Formular "Noch nicht überzeugt?". Wenn Sie sich dort eintragen, sehen Sie den Automailer in Aktion.
Dieser Artikel wurde veröffentlicht am 31.10.2009 um 10:15 Uhr.
Noch kein Kommentar.
Halloween-Update: Newsletter
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
[user]
cms_usermanagement=Newsletter
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.
Dieser Artikel wurde veröffentlicht am 30.10.2009 um 10:15 Uhr.
Noch kein Kommentar.
Zeige 1 - 10 von 91
|
 |


Hier bloggt Horst Klier mit und über eforia web manager und was dazugehört (HTML, Javascript, Internet, Webdesign, Such- maschinenoptimierung, usw.).
Übersicht über alle Beiträge
|