Blog

 

Kontakt

Telefon:
+49 6151 46082-00

E-Mail:
info@capcom.de

   
Filtered by category Tipps & Tricks Reset filter

Ist die Webseite aktuell ?

10. April 2024, CAPCom WebTeam - Internet Trends, Tipps & Tricks

 

Wie kannst du herausfinden, ob eine Webseite aktuell ist oder schon etwas in die Jahre gekommen ist. Wir zeigen Dir ein paar kleine Tricks, die dir verraten, ob eine Webseite und ihr Design veraltet ist und unbedingt überarbeitet werden sollte oder ob es aktuell ist. Verschaffe dir schnell einen Überblick über die Webseite und Ihren Status.

Betrachte als erstes die Webseite aufmerksam und achte schon beim Aufrufen der Seite auf die Ladezeiten. Schau dir die Webseite aufmerksam und genau an. Veraltetes Webdesign erkennst du beispielsweise an eintöniger Farbgebung, verschachtelten grauen Tabellen, fehlender Zentrierung der Inhalte, falsch umbrechende Inhalte oder Inhalte, die aus Ihrem Container herauslaufen. Ein weiterer Hinweis sind auch ältere Standardschriftarten wie Times New Roman und Comic Sans. Die Verwendung von starken Farben, die wild miteinander kombiniert werden wie zum Beispiel blau und rot, grün und pink etc. Wenn interaktive Elemente oder Grafiken gänzlich fehlen, kann das ebenso ein Indikator sein. Auf folgende Punkte solltest du auch unbedingt achten:

  • Hat die Webseite ein responsives Design?
    Eine Webseite, die nicht für verschiedene Bildschirmgrößen und -geräte optimiert ist, könnte veraltet wirken. In der heutigen Zeit, in der die Nutzung von Smartphones und Tablets weit verbreitet ist, ist responsives Design entscheidend.
     
  • Nutzt die Webseite Flash?
    Die Verwendung von Adobe Flash wird zunehmend veraltet, da viele moderne Browser und Mobilgeräte Flash nicht mehr unterstützen. Websites, die immer noch stark auf Flash basieren, könnten veraltet erscheinen oder auch nicht mehr richtig gelesen werden.
     
  • Beinhaltet die Webseite veraltete Technologien?
    Wenn eine Website Technologien wie veraltete HTML-Tags, Framesets oder Tabellenlayouts verwendet, könnte dies auf veraltetes Design hinweisen. Moderne Webdesign-Praktiken bevorzugen semantischen HTML5-Code und CSS für das Layout.
     
  • Hat die Webseite langsame Ladezeiten?
    Veraltete Websites können langsam laden, insbesondere wenn sie nicht für Effizienz optimiert sind. Moderne Websites streben in der Regel schnelle Ladezeiten an, um die Benutzererfahrung zu verbessern.
     
  • Gibt es auf der Webseite Interaktivität?
    Moderne Websites bieten oft interaktive Elemente wie Animationen, eingebettete Videos oder benutzerdefinierte JavaScript-Funktionen. Eine Website, die solche Interaktionen nicht bietet, könnte als veraltet wahrgenommen werden.
     
  • Sind auf der Webseite veraltete visuelle Elemente sichtbar?
    Design-Trends ändern sich im Laufe der Zeit, daher können visuelle Elemente wie Farbschemata, Schriftarten und Grafiken, die veraltet wirken, auf eine veraltete Website hinweisen.
     
  • Ist die Navigation der Webseite verständlich und übersichtlich?
    Eine unübersichtliche oder verwirrende Navigation kann darauf hinweisen, dass eine Website nicht auf dem neuesten Stand ist. Moderne Websites streben eine klare und intuitive Navigation an.
     
  • Gibt es auf der Webseite Sicherheitsmaßnahmen?
    Websites ohne SSL-Verschlüsselung (erkennbar an "https://" anstelle von "http://") könnten als veraltet angesehen werden, da Sicherheit im modernen Webdesign von großer Bedeutung ist.
     
  • Ist die Webseite kompatibel mit modernen Browsern?
     Eine Website, die nicht korrekt in modernen Webbrowsern gerendert wird oder in älteren Browsern fehlerhaft angezeigt wird, könnte veraltet sein.

Wenn die Webseite mehr als drei der oben genannten Punkte erfüllt, sollte sie höchstwahrscheinlich überarbeitet werden damit sie wieder zeitgemäß und gewinnbringend ist.


Routenplaner mit Leaflet

23. February 2024, CAPCom WebTeam - Tipps & Tricks

 
 

Eine immer wieder nachgefragte Komponente für Webseiten ist eine Wegbeschreibung mit Routenplanung. Die Einbindung von Dienstleistern wie Google oder Bing erfordert jedoch die Einwilligung der Besucher zur Nutzung dieser Dienste unter Berücksichtigung der DSGVO. Bei der Verwendung von Leaflet mit OpenStreetMap, der Leaflet Routing Machine und Nominatim kann dies vermieden werden. Alle verwendeten Dienste können dank OpenSource auf Wunsch auch lokal installiert werden.

Diese Anleitung zeigt nur einen sehr kleinen und reduzierten Ausschnitt der Möglichkeiten, um einen schnellen Einstieg zu ermöglichen, aber auch den der am häufigsten auf Webseiten Verwendung findet: die Kartendarstellung des Standortes mit der Möglichkeit der Routenplanung von der Adresse des Besuchers (einzugeben) und dem Standort des Webseitenbetreibers (vorgegeben).

Die verwendeten Bibliotheken können hier heruntergeladen werden und liegen bei unserem Beispiel auch lokal auf unserem Filesystem bzw. Webserver:

Der erste Teil unserer HTML-Seite lädt die Bibliotheken und die zugehörigen Stylesheets. Diesen Teil erklären wir in diesem Artikel nicht.

<!DOCTYPE HTML>
<html>
<head>
<title>Routenplaner Mini</title>
<meta charset="utf-8" /> 
<link rel="stylesheet" href="leaflet.css" />
<script src="leaflet.js"></script>
<link rel="stylesheet" href="Control.Geocoder.css" />
<script src="Control.Geocoder.js"></script>
<link rel="stylesheet" href="leaflet-routing-machine.css" />
<script src="leaflet-routing-machine.js"></script>
<style>
.karte {
   position: relative;
   width: 100%;
   aspect-ratio: 4 / 3;
}
</style>
</head>

Den zweiten Teil unserer HTML-Seite erklären wir jetzt detaillierter. Alle Abschnitte folgen dem ersten Teil, natürlich ohne die Erläuterungen.
Wir bauen uns einen Abschnitt (div) im body der HTML-Seite zur Aufnahme unserer Karte.

<body>
<div id="karte" class="karte"></div>

Unser Script-Teil beginnt mit der Initialisierung der Kartenvariable. Durch das 'setView' setzen wir den primär sichtbaren Bereich der Karte durch Angabe des geographischen Mittelpunktes ( 49.87133, 8.624618) und des Zoomfaktors (19). Das muss natürlich auf die gewünschten Werte angepasst werden.

<script>
var karte = L.map('karte').setView([49.87164, 8.6243], 19);

Der Zielmarker (der entspricht hier dem Mittelpunkt der Karte vom Anfang) wird gesetzt und um eine zugehörige Beschriftung ergänzt.

var marker = L.marker([49.87164, 8.6243]).addTo(karte);
marker.bindPopup("<b>CAPCom AG</b>Ihre Webagentur").openPopup();

Wir konfigurieren hier den zu verwendeten Web Map Tile Service (WMTS), in diesem Fall den von OpenStreetMap angebotenen Demo-Service. Für den produktiven Betrieb benötigen sie entweder einen Link von einem der verfügbaren kommerziellen Dienstleister oder einen eigenen WMTS. Die Daten der Kacheln (Tiles) von OpenStreetMap sind frei verfügbar. Ergänzt wird auch der notwendige Copyright-Hinweis.

L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap contributors'
}).addTo(karte);

Jetzt konfigurieren wir die Navigation. Dazu nutzen die Funktion 'L.Routing.control'. Wir definieren den Beginn und das Ziel der Route. Den Beginn lassen wir allerdings offen, damit der Besucher seine eigene Adresse eintragen kann. Als Ziel wird der Ort des Zielmarkers, den wir schon konfiguriert haben, verwendet.

L.Routing.control({   
    waypoints: [
                L.latLng(),
                L.latLng(marker.getLatLng())
               ],

Weitere Optionen betreffen das Verhalten der Routing-Funktionalität, das Aussehen der Linie (lineOptions), ob das Routing auch beim Verschieben der Marker aktiv sein soll (routeWhileDragging), ob die Karte entsprechend der angezeigten Route gezoomt und positioniert werden soll (fitSelectedRoutes) und die angezeigte Sprache (language).

lineOptions: { styles: [{color: 'blue', opacity: 1,weight: 5}] },
routeWhileDragging: true,
fitSelectedRoutes: true,
language: 'de' ,

Jetzt aktivieren wir den Geocoder Nominatim. Mit diesem wandeln wir die Texteingaben in Längen- und Breitengrade um, die auf der Karte dargestellt werden können. Das funktioniert auch in die andere Richtung. Dies erkennt man daran, dass in der Routingeingabe unser Zielmarker als Adresse dargestellt wird.

geocoder: L.Control.Geocoder.nominatim()
}).addTo(karte);
</script>
</body>
</html>

Damit ist der Routenplaner fertiggestellt. Er enthält natürlich keine Anpassungen an den Stil der Website oder eine Integration in ein CMS, wo es manchmal einfacher ist, mit entsprechenden Extensions oder Plugins zu arbeiten.

Das komplette Beispiel kann hier heruntergeladen werden. Das Abrufen der Kacheln bei OpenStreetMap und das Umwandeln der Adressen via Nominatim erfordern in unserem Beispiel Internetzugriff.

 


Vom Spreadsheet nach JSON - Daten für den Browser lesbar machen

25. September 2023, CAPCom WebTeam - Tipps & Tricks

 

Wer kleine und mittlere Webanwendungen erstellt, kennt die Situation: Auf die Frage, wie die zu verarbeitenden Daten vorliegen, bekommt man eine Arbeitsmappe im MS Excel-Format. Darin wurden die Daten bislang gepflegt, und das soll auch so bleiben. Gesucht ist also ein Weg, die Spreadsheet-Daten in ein Format zu überführen, das Browser nativ verstehen, und der möglichst wenig Arbeit bereitet, besonders im Hinblick auf spätere Aktualisierungen der Daten. Hier beschreiben wir einen effizienten Weg zu einer JSON (JavaScript Object Notation)-Datei, die man dann in die Anwendung AJAXen kann.

Ausgangspunkt
Als Beispiel nehmen wir einen Produktkatalog(auszug), der Felder wir Produktnummer, Name, Kategorie und für jedes Produkt ein bin vier Varianten mit Bezeichnung und Code enthält. Der Katalog umfasst 500 Zeilen, das erfordert noch keinen Datenbankserver, ist aber definitiv zu viel für reine Handarbeit.

Werkzeuge
Gebraucht wird erstens ein Programm, das Excel-Arbeitsmappen nach CSV exportieren kann. Wir geben LibreOffice Calc den Vorzug, weil es auf Wunsch CSV erzeugt, in dem jeder Zelleninhalt in Anführungszeichen eingeschlossen ist. Für die Weiterverarbeitung ist es wichtig, dass die Inhalte die gleiche Form haben. Mit Microsoft Excel bekommt man das auch hin, aber nur durch Einsatz eines Makros.
Zweitens wird ein Texteditor benötigt, der Suchen und Ersetzen mit regulären Ausdrücken auf einen ganzen Bereich (aber nur einmal in jeder Zeile!) anwenden kann. Wer sich mit Vi Improved anfreunden kann, findet darin ein mächtiges Werkzeug. Wer mit Linux arbeitet, kann einfach sed verwenden. Es empfiehlt sich, die Schreibweise, die das gewählte Werkzeug für reguläre Ausdrücke verwendet, nachzuschlagen. Insbesondere Verweise auf gefundene Teilausdrücke werden unterschiedlich notiert. Die Beispiele hier beziehen sich auf Vi Improved, für sed wäre die Bereichsangabe "1,$" wegzulassen.

Der Auftakt: CSV exportieren
Wie angesprochen, soll das resultierende CSV jeden Zelleninhalt in Anführungszeichen einschließen. Das Trennzeichen ist relativ beliebig, unsere Beispiele beziehen sich auf den bei LibreOffice üblichen senkrechten Strich „|“. Die Zeichenkodierung sollte UTF-8 sein. Die Titelzeile wird aus dem Export entfernt.
Wenn die Arbeitsmappe mehrere Blätter umfasst, können diese in separate CSVs exportiert, getrennt umgebaut und später in eine gemeinsame Datei gepackt werden.

CSV schrittweise zu JSON umbauen
Ein dem Spreadsheet entsprechendes JSON-Objekt enthält ein Array von Objekten, die jeweils die Spaltenköpfe als Schlüssel und die Zellinhalte als Werte enthalten. Da wollen wir also hin. Die Werte sehen nach dem Export schon fast richtig aus, aber die Schlüssel und die Struktur fehlen noch. Hier kommt jetzt Suchen und Ersetzen zum Einsatz. Anfang und Ende der JSON-Notation ergänzen wir zum Schluss, dann müssen wir keine Zeilen von der Bearbeitung ausschließen.

Als Erstes müssen wir uns um einen Spezialfall kümmern: Anführungszeichen, die in den Zellinhalten vorkommen. Der Export hat diese verdoppelt, für JSON müssen sie aber maskiert werden. Als zusätzliche Schwierigkeit können diese doppelten Anführungszeichen direkt benachbart zu einer Feldgrenze auftreten, daher verwenden wir eine ganze Serie von Ersetzungen:

1,$s/"""$/\\""|/
1,$s/"""|/\\""|/
1,$s/^"""/"\\"|/
1,$s/|"""/|"\\"/
1,$s/\([^|\\]\)""/\1\\"/g

Jetzt beginnen den Einbau der Feldschlüssel damit, den Beginn des Objekts und den ersten Feldschlüssel an die Zeilenanfänge zu setzen. Für den Editor formulieren wir das als Ersetzen des Zeilenanfangs, das auf alle Zeilen der Datei angewendet wird:

1,$s/^/ { “prodNummer”: /

Dann kommen die weiteren Felder der Zeile an die Reihe. Da die Werte alle mit Anführungszeichen beginnen und enden und zwischen ihnen Trennzeichen stehen, können wir nach der Sequenz „|” suchen. Hier wird wichtig, dass der Editor die folgende Änderung zwar auf alle Zeilen anwendet, aber nur auf das erste Auftreten in jeder Zeile. Die genannten Werkzeuge machen das so (wenn man sie nicht anders anweist). Also:

1,$s/”|”/”, “prodName”: /

Das können wir nun für jede Spalte wiederholen. Um der Anwendung die Arbeit zu erleichtern, wollen wir aber die bis zu vier Produktvarianten als Array kodieren. Daher schließen wir beim Einfügen der ersten Variantenspalte den Beginn eines Arrays und eines Objekts mit ein:

1,$s/”|”/”, [ { “variantenCode”: /

Und bei der ersten Spalte der zweiten Variante muss zusätzlich das erste Objekt abgeschlossen werden:

1,$s/”|”/” }, { “variantenCode”: /

Wenn nicht alle Produkte die maximale Anzahl von Varianten haben, bleiben in der Zeile Trennzeichen stehen, die von den Ersetzungen nicht erfasst wurden. Die entfernen wir jetzt, bevor die Zeile abgeschlossen wird, denn dann stehen sie leicht adressierbar am Ende:

1,$s/|*$//

In unserem Beispiel kann das Abschließen des letzten Objekts und des Varianten-Arrays mit dem Abschluss der Datenzeile zusammen erfolgen. Hier zielen wir auf das Zeilenende (das abschließende Komma wird benötigt, weil die Datenzeilen ja den Inhalt eines Arrays bilden):

1,$s/$/ } ] },/

Abschließende Änderungen
Jetzt sind alle Zeilen umgebaut, aber noch ist das Ergebnis kein korrektes JSON, was ja genau ein Objekt beschreibt. Daher fügen wir jetzt noch am Anfang und am Ende die große Klammer ein. Vor den Anfang setzen wir:

{ “produktDaten”: [

Indem wir die Daten an einen Schlüssel hängen (anstatt ein anonymes Array als äußerste Struktur zu verwenden), ermöglichen wir, auch noch weitere Datenpakete in dieselbe Datei zu packen, das kommt oft genug vor, um hier vorzusorgen.
Von der letzten Zeile muss noch das abschließende Komma entfernt werden, das ist in JSON, im Gegensatz zu JavaScript, nicht erlaubt:

$s/,$//

Dann wird noch der Schluss von Array und Objekt eingefügt:

] }

Damit ist die Konvertierung abgeschlossen. Der resultierenden Datei sollte man noch die Endung .json geben.

Prüfen kann man das Resultat übrigens einfach, indem man die Datei im Browser öffnet. Der zeigt dann die Objektstruktur an – oder eben eine Fehlermeldung.

Der ganze Prozess liest sich kompliziert, aber jede einzelne Anweisung baut alle Datenzeilen um, in unserem Fall also ein gutes Dutzend Kommandos für 500 Zeilen. Das lohnt sich dann schon, selbst wenn man vielleicht manchen regulären Ausdruck mehrmals testen muss. Es empfiehlt sich, die erfolgreiche Sequenz von Anweisungen zu notieren, denn die nächste Version der Arbeitsmappe kommt bestimmt, und dann geht die Konvertierung schnell von der Hand.