Aug 12

Für ein Shop-Projekt auf Basis von Gambio GX2 (Version 2.0.10g) habe ich das bekannte XT:Commerce-Bundle-Module von API Solutions angepasst.

Bei der Darstellung des Bundles im Shop wird von jedem Einzelprodukt eines Bundles das Bild, der Name, die Anzahl und der Einzelpreis angezeigt. Ferner wird die Summe der Einzelpreise angezeigt.

Dabei habe ich den Code an einigen Stellen optimiert und umgestellt. Außerdem eine komplett neue Anleitung geschrieben, die es auch PHP-Anfängern ermöglichen sollte das Modul zu implementieren.

Die Gambio-spezifischen Overloads werden nun teilweise auch schon benutzt. Das Modul ist zwar noch nicht komplett Update-Sicher, kann aber nach einem Update mit relativ wenig Aufwand wieder reimplementiert werden.

Gegenüber der Original-Version habe ich auch auf einige für mich unnötige Funktionen verzichtet. So werden nun keine verschachtelten Bundles mehr unterstützt (wobei das ursprüngliche Modul diese auch nur unvollständig unterstützte).

In der Anleitung habe ich dafür aufgezeigt welche Stellen angepasst werden müssen damit mehr als 6 Produkte pro Bundle verwaltet werden können. Grundsätzlich können beliebig viele Bundle-Sub-Items möglich gemacht werden. Die Tabellenstruktur ist flexibel genug.

Dies ist eine BETA-Version. Die Benutzung erfolgt auf eigene Gefahr und ich übernehme keinerlei Haftung! Beachten Sie die Anleitung!

Für Hinweise zu Fehlern und Unstimmigkeiten bin ich dankbar.

Download Bundle_Gambio_GX2.zip

Update 03.12.2012: Ich habe eine neue Version 0.9.1 online gestellt. Damit ist der Fehler bei der Darstellung im Frontend behoben.

 

Das ursprüngliche Modul stammt aus dieser Quelle:

http://www.xtc-load.de/2010/07/product-bundle-fur-xtcommerce/

 

So sieht die Bundle-Verwaltung im Admin-Bereich aus:

Die Bundle-Verwaltung im Admin-Bereich

Jul 22

Was kommt nach Full-HD? Natürlich QFHD (Quad-Full HD) – also die 4-fache Auflösung. Dieser Technologiesprung bei den Displays nennt sich auch 4k-Auflösung, weil die horizontale Auflösung entsprechender Monitore mit 4k = 4096 Pixeln angegeben wird.

Die Technik ist im Prinzip bereits verfügbar – erste 4k-Monitore lassen sich bereits käuflich erwerben. Allerdings derzeit noch zum Preis eines Kleinwagens. Da aber auf dem Papier auch schon 8k-Monitore geplant werden, ist der Zug wohl nicht aufzuhalten und die Technik wird aus dem Profibereich (High-End-Videoschnitt) recht bald auf den Massenmarkt überschwappen.

Ich vermute, dass bei dieser Auflösungsstufe – anders als bei Full-HD – die Computerindustrie der Vorreiter sein wird. Denn es ist den Leuten schwer beiszubringen, dass Ihre teuer erstandenen HD-Fernseher und HD-DVD-Player schon zum Alteisen gehören. Obgleich auch schon 4k-Filmmaterial im Netz kursiert, sehe ich den Run auf 4k eher aus dem Gamer-Bereich und natürlich aus der “Schmuddel-Ecke” des Webs. Die vervierfachte Auflösung bringt mehr Spielspaß und mehr Übersicht.

Zweifellos gehört dazu auch noch ein Generationswechsel bei den Rechnern und teilweise auch bei den Betriebssystemen. So unterstützt das aktuelle MAC OS X keine 4k-Auflösung.

Die Entwicklung ist spannend – sehr spannend sogar. Daher habe ich zu dem Thema einen separaten Blog aufgesetzt: www.4k-monitore.de.

Jul 12

In meinem letzten Beitrag habe ich versucht ein wenig die “moralische” Seite der SEO-Arbeit im Allgemeinen zu beleuchten. Solche Fragestellungen finde ich spannend. Meine Kunden wollen – verständlicher Weise – dann doch eher wissen, wie sie bei Google auf die vorderen Plätze der SERPs gelangen und was sie dafür tun müssen.
Meine erste Aussage zum Thema SEO versuche ich immer möglichst schonend rüberzubringen: “Geduld haben”. Das hört man nicht gerne. Bedeutet es doch eine längere Wartezeit und auch entsprechende Kosten bei der SEO-Arbeit.

Ist diese “Hürde” im Beratungsgespräch genommen, geht es meist sehr schnell um die Frage wie schaffen wir es sinnvoll Backlinks aufzubauen. Die Antwort muss man individuell mit dem Kunden erarbeiten. Denn gut und preiswert sind erst einmal die Links, die der Kunde selber besorgen kann indem er mit Kunden, Lieferanten und anderen Partnern spricht. Ideal ist es, wenn man dann noch einen Kunden hat, der selber in dem einen oder anderen Forum aktiv ist und dort selber postet.

Diese Resourcen sind aber endlich und schnell erschöpft. Wie geht es weiter mit dem Linkbuilding? Das ist dann meine Arbeit. Wie jeder SEO-Worker versuche ich hier den richtigen “Mix” zu finden. Readaktionelle Links, Social-Links, Forenarbeit, Gastartikel in Blogs etc. Alles nichts neues. In einigen Fällen – besonders wenn es das Thema sonst schwer macht geeignete Linkpartner zu finden, bediene ich mich auch des – von Google so sehr gescholtenen – kommerziellen Linkhandel. Die bekannten Plattformen bieten mir gerade zu Beginn der SEO-Maßnahmen einen schnellen Durchgriff auf eine Vielzahl sinnvoller Linkpartner.

Die Kehrseite ist der zumeist verhältnismäßig hohe Preis. Die monatlichen Kosten sind kaum unter 5 Euro pro Link. Das schröpft das Linkbuilding-Budget doch arg. Daher lasse ich diese Links meist nur 6 bis 12 Monate laufen und kündige sie dann wieder. Dabei ist natürlich auch der gebotene Service nicht zu unterschätzen. Die gebuchten Links werden täglich von der Plattform geprüft und ich muss wirklich nur erbrachte Leistungen bezahlen. Das ist bei den Linkbuilding-Maßnahmen auf Basis von Einmal-Zahlungen oder Linktausch deutlich schwieriger. Hier muss man selber nachhalten mit den bekannten SEO-Tools oder schlicht “vertrauen”.

Um dann doch nochmal den Anschluß an mein letztes Posting zum Thema SEO-Moral zu finden: Viele gute Blogs, die ehrlichen und interessanten Content liefern, refinanzieren sich teilweise über gekaufte Links. Das finde ich legitim und sehe hier auch kaum die Gefahr einer Wettbewerbsverzerrung oder gefährlichen “Manipulation” gegeben. Als mündiger Leser ist es ja ohnehin an mir die dargestellten Meinungen und Links – egal ob rein redaktionell oder “gekauft” – zu bewerten. Und gekaufte Links müssen ja gar nicht “falsch” sein. Es kommt einerseits auf den Kontext an und natürlich auch, ob ich aktuell etwas mit dem Werbelink anfangen kann. Schlimmsten Falls schließe ich das Browserfenster wieder :-)

Die Link-Handelsplattformen haben noch einen weiteren, wertvollen Nutzen für alle Beteiligten. Sie sorgen für Tranzparenz und damit für eine faire Preisbildung. Auf den großen Plattformen bekomme ich schnell einen Überblick darüber was der “Markt” hergibt und zu welchem Preis. Würde alles nur “unter der Hand” ablaufen – und Google zwingt uns dazu – dann wäre die Preisfindung mehr Glückssache als “Marktwirtschaft”. Daher möchte ich auch mal ein “Danke schön” an die Link-Plattformen richten. Sie sind ein wertvoller Marktpartner – egal ob man Sie nutzt oder nicht.

Jul 04

Wer sich mit Suchmaschinenoptimierung beschäftigt, der wird eher früher als später an den Punkt gelangen, wo es darum geht mehr Backlinks für die Website zu bekommen. Backlinks sind nach wie vor die “Währung” für gutes Ranking bei Google & Co. Wenngleich sich der Wert der einzelnen Backlinks immer wieder verschiebt – die letzten Google-Ranking-Algorithmus-Updates sind dafür Beleg genug – so bleiben Backlinks das Top-Thema für SEO-Arbeiter.

Normaler Weise stellen sich dabei eher folgende Fragen:

  • Woher nehme ich Backlinks?
  • Welche Sprachen, Ankertags, Follow-Eigenschaften, Platzierungen etc. sollten meine Backlinks haben?
  • Welchen “Preis” bin ich bereit dafür zu bezahlen?
  • Wie tracke ich meine Backlinks?

Ich möchte mich hier eher der Frage widmen:

Sind Backlinks “moralisch” vertretbar?

Damit ist gemeint, ob ich es als Mensch und Internet(be)nutzer “moralisch” vertreten kann, dass ich als SEO-Dienstleister das Web, Google und andere Internetnutzer mit “gekauften” Backlinks “manipuliere”? Handele ich vertretbar, wenn ich beispielsweise meine Backlinks bei Teliad und Konsorten feilbiete?

Niemand wird gerne manipuliert. Bei der Suche nach Internetseiten möchte ich gerne die objektiv “besten” Seiten finden. Sehr oft vertraue ich hierbei auf Google (oder andere, ähnliche arbeitende Suchmaschinen). Die SERPs bei Google sind im Allgemeinen durchaus tauglich um die “guten” von den “weniger guten” Sites zu trennen.
Natürlich begegnet man immer wieder SERPs bei denen man deutlich sieht, dass hier gute SEO-Worker gewirkt haben. Gerade bei Business-Websites, die keinen wirklich innovativen Content haben, sondern “nur” etwas verkaufen. Google ist natürlich nicht in der Lage die Angebote und Preise zu vergleichen (hinsichtlich Qualität, Preis-Leistungsverhältnis etc.). Auch hier zählen Backlinks als Haupt-Rankingfaktor.

Würde es keine aktive SEO-Arbeit geben, so könnte man meinen, dass durch User-Generated-Content diejenigen Sites die meisten und besten Links bekämen, die am “besten” sind. Das dies kaum der zutreffend ist, dürfte schnell klar werden, wenn man Keywords zum Bereich “Restaurants” betrachtet. Natürlich rankt hier McDonals mit ganz oben und würde es auch ohne SEO-Arbeit tun. Dort gehen nun mal viele Menschen “essen” und erleben dort etwas. Ist deshalb McDonalds besonders empfehlenswert?

Das zeigt schon das Dilemma von Google sehr deutlich: Google-Rankings sind immer sehr einseitig. Und natürlich kann Google auch kaum anhand der Suchbegriffe die wahre Intention des Suchenden erfassen. Und verstehen schon gleich gar nicht. Auch den “Wert” von Backlinks kann Google nur unzureichend “verstehen”. Folglich wird Google auf absehbare Zeit immer “dumme” Ergebnislisten liefern, die mal besser und mal schlechter dem entsprechen, was ich suche.

Hier legt Google eine Doppelmoral an den Tag. Google gauckelt dem “durchschnittlichen” Nutzer vor gute Trefferlisten zu haben. Daher nimmt Google für sich in Anspruch einen validen Ranking-Algorithmus zu haben und verbittet sich  jegliche Manipulation (die Grenze zwischen Manipulation und zulässigen Optimierungen ist dabei völlig nebulös – nicht zuletzt dank Googles Geheimniskrämerei). Aber macht Google etwas besseres? Die Rankings sind auch nur bedingt “richtig” und bedürfen immer der Filterung durch den Suchenden. Google manipuliert also auch die Suchenden. Und dabei meine ich jetzt nur die SERPs – ohne Adwords.

Andererseits zeigt eine Website mit starken SEO-Aktivitäten, dass die Betreiber ihre Website ernst nehmen und bereit sind Geld (und/oder Zeit) zu investieren. Das ist meiner Meinung nach auch ein guter Indikator für eine Website. Das möchte Google aber lieber “abstrafen”.

Ich räume gerne ein, dass Googles derzeitige Marktmacht und SEO-Strategie dafür sorgt, dass SEO-Arbeit von einer gewissen Qualität geprägt sein muss. “Echter” Content von “echten” Website wird wertvoller. Das ist gerade aus Sicht der Webnutzer zu begrüßen. Andererseits tragen Googles Kriterien auch nur sehr bedingt dazu bei, dass der beste Content in den SERPs obsiegt.

Letztlich ist der Ansatz von Suchmaschonen à la Google grundsätzlich “krank”. DMOZ & Co sind der bessere Ansatz. Aber auch hier gibt es Probleme.

Der Kampf um die SERPS bleibt auf jeden Fall spanndend – technisch und “moralisch”.

Jun 21

Tja – nun hatte ich meinen nächsten Favoriten auserkoren. SugarSync. Eine Empfehlung aus der Zeitschrift c’t. Leider gibt es dort die selben Probleme wie bei LiveDrive. Die große Anzahl Dateien macht dem System zu schaffen. Der Client stürzt immer ab.

Immerhin war bei SugarSync der Support auf Zack und hat schnell geantwortet. Man hat mir auch sehr schnell bestätigt, das die große Anzahl an Dateien das Problem ist. Mehr als 50.000 Files pro Backup-Folder geht derzeit nicht. Man empfahl mir für jeden Ordner einen eigenen SugarSync-Ordner anzulegen (was aber nur mit einer Neuinstallation geht). Dumm nur, dass ich u.a. einen Webshop betreue, der allein schon 70.000 Bilder hat. Und jedes neue Projekt müsste ich dann auch separat bei SugarSync einbuchen. Eine Joomla-Standard-Installation hat ja schon zwischen 5.000 und 10.000 Dateien.
Ne Leute – das kann’s nicht sein bei einer BackupLösung für die ich über 200 Euro pro Jahr hinblättern soll.

Laut Support arbeite man zwar an einer Lösung, konnte mir aber keinen konkreten Zeithorizont nennen. Daher habe ich heute meine 30-Tage-Trial-Periode beendet.

Alles in allem auch verwunderlich, dass dieses Manko bei den c’t-Tests nicht auffiel…

May 29

Seit einiger Zeit liebäugele ich mit einem Cloud-Backup-Tool. Natürlich habe auch ich Bedenken bzgl. der Datensicherheit (Big Brother is stealing) und der laufenden Kosten. Andererseits: Externe Festplatten sind nicht wirklich preiswert, wenn man beruflich bedingt Datenmengen im Bereich > 10GB pro  Monat erzeugt und auch gerne noch mehrere Datenstände gesichert hätte. Hinzu kommt das Probleme, dass solche Festplatten auch zusammen mit dem Rechner geklaut werden könnten oder einer Feuersbrunst anheim fallen. Bisher habe ich mir damit beholfen, die externen Festplatten in zwei verschiedenen Gebäuden zu lagern. Nicht sehr praktisch und die Aktualität der Daten ist auch nicht immer gewährleistet.

Für das Online-Backup sprechen die hohe Aktualität (Breitband-Internetverbindung vorausgesetzt) und die hohe Verfügbarkeit.
Nach einigen Recherchen hatte ich LiveDrive zum Favoriten erkoren (livedrive.com). Für 149,95€ pro Jahr bekomme ich in der LiveDrive Pro Suite folgende, für mich überzeugende,  Funktionen und Features:

  • Online Backup für bis zu 5 Rechner (Mac und PC) inkl. Synchronisation zwischen den Rechnern
  • 5 TB Briefcase Space (ermöglicht den Austausch von Daten zwischen den Rechnern und den Online-Zugriff)
  • File-Sharing-Funktionen
  • FTP-Zugriff
  • Bis zu 30 Versionen pro Datei verfügbar

Da ich drei Rechner (1x Mac und 2x PC) sichern möchte, fand ich das Gesamtpaket sehr verlockend und habe gebucht.

Die Softwareinstallation lief reibungslos (erstmal nur auf einen PC unter Windows 7). Das Tool bietet gute Konfigurationsmöglichkeiten – insbesondere auch hinsichtlich des Bandbreitenverbrauchs.
Als erstes definiert man die zu sichernden Verzeichnisse und dann beginnt das Tool mit einem Scan um parallel die gefundenen Dateien hochzuladen.
Logged man sich in das Online-Portal ein, so kann man ebenfalls sehr gut den verbrauchten Speicherplatz etc. überwachen.

Bis hierher ist alles prima. Leider crasht die Anwendung nach einiger Zeit. Und zwar jedesmal!
Was passiert? Ich kann es nur vermuten. Im Taskmanager sieht man, wie der RAM-Verbrauch kontinuierlich steigt. In meinem Fall konnte ich sehen, dass die Applikation bis zu 1,3GB RAM zog bevor sie abstürzte. Da der Rechner 16GB physisches RAM hat, ist Speicherplatz durchaus vorhanden. Ich vermute eher, dass die Anzahl der Dateien und Ordner das Problem darstellt und irgendwelche internen Strukturen dafür nicht ausreichen. Insgesamt wollte ich gut 900.000 Dateien  (jedes Joomla-Kundenprojekt hat ja schon rund 10.000 Dateien) sichern.

Zum Glück bietet das Tool die Möglichkeit einen Crash-Report zu senden. Das habe ich mehrfach getan. Und dann auch ein Support-Ticket dazu eröffnet. Nach 3 Werktagen hatte ich immer noch keine Antwort. Auch waren keine Produktupdates verfügbar.
Alles in allem hat das kein gutes Gefühl bei mir hinterlassen. Was nützt mir ein Backup-Tool dem ich nicht trauen kann? Folglich habe ich heute meinen Account gekündigt und von der 30-Tage-Geld-Zurück-Garantie Gebrauch gemacht.

Wenige Stunden nachdem ich das Ticket eröffnet hatte, wurde ich gefragt, ob ich das denn wirklich möchte und auch mein erstes Supportticket – wegen der Abstürze – wurde nun beantwortet.
Man hat sich wegen der langen Wartezeit entschuldigt und mir dann beschrieben wie ich die Software deinstallieren kann und wieder neu installieren kann – auf dem Mac!
Offensichtlich hat man mein Ticket nicht mal richtig gelesen – denn darin ist deutlich von Windows7 die Rede. Mein Misstrauen war also berechtigt.
Quintessenz: Ich kann also derzeit von LiveDrive (meine Version war die 1.8.0.0) nur abraten. Instabiles Produkt und schlechter Support.

May 28

Im folgenden fasse ich die wesentlichen, technischen Regeln und Kniffe zusammen, die es erlauben gestaltete HTML-Newsletter zu verfassen, die auf (fast) allen Mail-clients gut (im Sinne von „wie beabsichtigt“) dargestellt werden. Die Einschränkung auf „fast alle“ mache ich, weil es bestimmt noch irgendwelche Exoten-Mailprogramme gibt, die ich nicht getestet habe. Mit den hier gesammelten Techniken sollte die Mail jedoch sowohl in Outlook (aktuelle Version und auch ältere), Thunderbird, Apple Mail, Blackberry und iPhones „heile“ ankommen.

Ein Problem lässt sich übrigens nie ganz abstellen – das Problem des unterschiedlichen Schriftrenderings. Verschiedene Systeme stellen die gleiche Schriftart unterschiedlich dar. Das kann – und wird – auch dazu führen, dass Zeilenumbrüche anders auftreten. Es ist daher nicht zu empfehlen manuelle (weiche) Zeilenumbrüche einzufügen um den Flattersatz zu optimieren.

Von Blocksatz würde ich auch ganz abraten, da der Ausgleich der Zeilenlänge in vielen Mail-Programmen nicht gut gelingt.

Was ist denn nun das besondere ander HTML-Codierung für Newsletter? Des Pudels Kern ist die HTML-Rendering-Engine von Outlook. Diese ist leider extrem schlecht – und hat in der letzten Version sogar einen Rückschritt gemacht. Daher versteht Outlook viele Standard-HTML-Attribute und CSS-Regeln nicht oder nur unvollständig.
Letztlich ist man gezwungen auf die eigentlich schon ausgestorbenen HTML-Tabellen-Layouts zurück zu greifen. Dabei kommen auch wieder die guten, alten Spacer-GIFs zum Einsatz.

Bevor es um die technische Umsetzung geht, muss noch eine Frage mit dem Desiger geklärt werden: Wie breit soll das Layout sein (in Pixeln)? Viele Menschen haben Ihr Mailprogramm so eingerichtet, dass für die Darstellung der Nachricht nicht die volle Bildschirmbreite zur Verfügung steht. Wie groß ist also die maximale Breite damit die große Mehrheit der Betrachte die ganze Mailbreite sehen kann? Messungen sind mir hierzu nicht bekannt. Daher ist es sinnvoll sich anzuschauen welche Breiten andere Newsletter-Versender benutzen. Hier kommt man zu dem Schluß, dass die meisten Versender Breiten zwischen 580 und 650 Pixeln benutzen. Es gibt aber auch breitere Newsletter bis 750 Pixel. Organisationen von denen man annehmen darf, dass Sie in diese Frage schon etwas mehr Hirnschmalz investiert haben, versenden wie folgt:

  • Facebook: 620 Pixel
  • XING: 580 Pixel
  • Google: 600 Pixel (Google Alerts) / 650 Pixel (Google Adwords)
  • Google+: 713 Pixel
  • PayPal: 580 bis 600 Pixel
  • Ebay: 600 Pixel
  • Amazon: 650 Pixel
  • Conrad Electronic: 631 Pixel
  • 1&1: 583 Pixel

Abgesehen von Google+ versenden alle untersuchten Big Player in einer eher schmalen Breite zwischen 580 und 650 Pixel.

Eine Grundregel für Newsletter-HTML-Layouts, die man häufiger liest, besagt, dass man die HTML-Tabellen nicht zu sehr verschachteln soll. Bis zu einer Verschachtelungstiefe von 4 Tabellen konnte ich aber noch keine negativen Auswirkungen feststellen. Es mag aber auch von der Tabellenkomplexität abhängen – also wie sehr man rowspan und colspan einsetzt.

Bei meinen Newslettern umfasse ich sogar mein komplettes Layout mit einer großen Tabelle, die nur aus einer einzigen Zelle besteht und deren breite die gewünschte Layoutbreite beträgt. Diese äußere Tabelle hat mir geholfen ein sporadisch auftretendes „Auseinandergehen“ der inneren Tabellen in Outlook zu verhindern. Ohne diese Äußere Tabelle hat Outlook ohne erkennbaren Grund manche Spalten oder Zeilen breite bzw. höher gemacht als angegeben und nötig wäre.

Damit haben wir also als äußeres Skelet folgenden Code:

<center>
	<table width="650" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000" style="width: 650px; background-color:#000000;">
		<tr>
			<td valign="top"> ... Hier steht weiterer Code ... </td>
		</tr>
	</table>
</center>

Die center-Tags können entfallen, wenn man die Ausgabe nicht zentriert haben möchte. Auch die Angabe für die Hintergrundfarbe und die Breite muss man seinem Layout noch Anpassen. Wie unschwer zu erkennen ist, benutze ich sowohl Inline-Styles als auch Attribute um Breite und Hintergrundfarbe zu definieren. Doppelt hält besser :-)

Als nächstes folgt die Grundtabelle, die bei mir immer aus genau 3 Spalten und sehr vielen Zeilen besteht. Die 3Spalten ergeben sich daraus, dass eigentlich jedes Newsletter-Layout vorsieht, dass der Text links und rechts einen Abstand zum Layout-Rand hat. Man könnte versucht sein mit Padding- oder Margin-angaben zu arbeiten. Aber solche CSS-Attribute sollten nur dann eingesetzt werden, wenn sich der gewünschte Effekt nicht so einfach mit Tabellen erzeugen lässt – also fast nie :-)

Der nachfolgende Screenshot aus Dreamweaver visualisiert das eben Gesagte:

Grundtabelle eines HTML-Newsletters

Grundtabelle eines HTML-Newsletters

Die Headline ganz oben und das logo-Banner darüber sitzen ebenfalls in dieser 3-spaltigen Tabelle. Logischer Weise haben diese Zellen einen colspan-Wert von 3. Die erste Tabellenzeile in der alle 3 Spalten als einzelne Zelle auftreten dient dann dazu die Breiten zu definieren und mittels Spacer-GIFs festzuzurren.

Wer sich noch nie mit Spacer-GIFs abgegeben hat, dem sei gesagt, dass dieses kleines Hilfsmittel ein transparents GIF ist – meist nur 1×1 Pixel groß. Man kann es also unsichtbar in die Tabelle platzieren und duch Angabe der Width- und Height-attribute im IMG-Tag kann das GIF jede beliebige Größe annehmen und erzwingt dadurch, dass die umgebende Tabellenzelle ebenfalls diese Breite und Höhe mindestens hat. Alle Zellen der selben Spalte haben dann auch mindestens diese Breite und alle Zellen der selben Zeile haben dann auch mindestens diese Höhe.
Man sollte immer sowohl width als auch height für das GIF definieren, weil sonst die fehlende Größenangebe undefiniert ist. Manche HTML-Interpreter belassen den nicht definierten Wert auf den Wert, den das Bild hat (in unserem Fall also 1 Pixel), andere Interpreter skalieren das Attribut proportional mit.

Die im Screenshot gekennzeichneten Stellen haben jeweils ein solches Spacer-GIF mit einer Breite von 45 Pixeln und einer Höhe von von 10 Pixeln.
Es wäre auch nicht verkehrt der mittleren Spalte ebenfalls ein Spacer-GIF zu verpassen um zu verhindern, dass die Randspalten breiter werden als gewünscht. In dem hier gezeigten Falle ist es unnötig, weil die Tabelle in der mittleren Spalte andere Bilder (nicht auf dem Screeenshot sichtbar) beinhaltet, die diese mittlere Spalte komplett ausfüllen.

Weiteres zum Thema HTML-Codierung von Newslettern folgt in Kürze in Teil 2 dieses Artikels.

Jan 22

Für mich persönlich stellt JavaScript seit einiger Zeit immer wieder eine große Herausforderung dar. Insbesondere seit in Titanium Appcelerator das JSCommon Framework zum Einsatz kommen darf und soll. Meine erste iPad-App soll nun endlich fertig werden und ich stand vor der Herausforderung innerhalb einer Klasse setInterval für periodische Aufgaben benutzen zu wollen. Jede Klassen-Instanz sollte natürlich seinen eigenen Timer benutzen. Hier ist meine Lösung – runtergekocht auf eine Minimal-App bestehend aus der obligatorischen app.js und dem Module processingQueue.js:

Als Screenshots:

app.js - titanium appcelerator

Die eigentliche OOP-Klasse

 

Und hier nochmal als Quelltext zum rauskopieren :-)

Die Datei app.js instanziert zwei Objekte der Klasse processingQueue

  1. // App.js
  2. var pq = require('modules/processingQueue');
  3.  
  4. Ti.API.info("Erstelle PQ1:");
  5. PQ1 = new pq.processingQueue(200, "-Eins");
  6. Ti.API.info("Erstelle PQ2:");
  7. PQ2 = new pq.processingQueue(500, "#Zwei");

 

Das JSCommon Module processingQueue implementiert die gleichnamig Klasse, die ein Timer-Objekt initialisiert:

  1. // JavaScript Object Class processin Queue using JSCommon Modules
  2.  
  3. // Constructor:
  4. function processingQueue(timerInterval, theName) {
  5. this.myName = theName;
  6.  
  7. if(!(this.queueTimerHandle)) {
  8. var holder = this;
  9. this.queueTimerHandle = setInterval( function() {
  10. holder.applicationQueueProcessing(holder);
  11. }, timerInterval);
  12. }
  13. };
  14.  
  15. // This function is called timer based
  16. processingQueue.prototype.applicationQueueProcessing = function(me) {
  17. Ti.API.info("Processing Queue Name:" + me.myName);
  18. }
  19.  
  20. exports.processingQueue = processingQueue;

Ich hoffes es hilft jemandem…