Programmierung für Versandkosten planen

tempa wrote this 03:44:

Transportbedingungen

  1. Maße und Gewichte
    Unser Shop sammelt diese Informationen nicht, doch er kann einzelnen Artikeln einen Versandkostenaufschlag zuweisen.
  2. Artikel die keine Versandkosten produzieren
  3. Versandwege
  4. Versandmenge (Anzahl der Artikel)
  5. Aufrtagsvolumen

Wo und wann werden diese Versandkosten gesammelt?

  1. Direkt beim Artikel (Punkt 1 und 2 s.o.)
  2. Am Ende der Bestellliste (Restlichen Punkte)

Wie wirken sich die Faktoren auf die Versandkosten aus?
Welche Fälle gilt es zu unterscheiden?

Zunächst einmal betrachten wir die Fallunterscheidungen:
Fallunterscheidungen Versandkosten

Unterschieden werden muss auch noch ob bei Aufschlag noch weitere Informationen eingeholt werden müssen.

Anschließend heißt es die Fallunterscheidungen abzuarbeiten. Das einfachste ist es mit dem Sonderfall keine Versandkosten anzufangen, denn dann kann man sich alles Rechnen sparen. Anschließend prüft man ob die Bedingungen für die Basiskosten gegeben sind und wenn hier keine Sonderfälle also Aufschläge vorliegen, kann man die Basiskosten ausgeben und dem Bestellwert addieren und schließlich gilt es die Sonderfälle mit den Aufschlägen abzuarbeiten:
Programmplanung Versankosten

Bei den Aufschläge gilt es zu unterscheiden zwischen einem Aufpreis, der den bisherigen Kosten zugeschlagen also addiert wird, einem Faktor, über den die bisher ermittelten Versandkosten sich erhöhen und einem Versandkostenbetrag, der den ermittelten Betrag ersetzt.

Den Versandradius könnte mit einem Faktor vernünftig abgedeckt werden. Artikelmengen hingegen dürften Addition oder Ersetzen sinnvoll erscheinen lassen. Eine Möglichkeit hier dem Shopbetreiber die Entscheidung zu überlassen ist es, lediglich den Rahmen vorzugeben und die Bezeichungen der Umgang mit den ermittelten Versandkosten dem Shopbetreiber zu überlassen, so wie das z.B. beim cpFormhandler in Bezug auf Formulare gelöst ist. Damit hat man die größtmögliche Flexibilität und die zig verschiedenen Sonderfälle mit denen unterschiedliche Händler mit unterschiedlichen Warensortimenten mit einem Schlag abgedeckt.

Zu Unterscheiden ist auch, ob noch Informationen eingeholt werden müssen. Glücklicher Weise kommen hier nur drei Formular-Varainten in Frage: Selektfelder, Radiobutton oder Checkboxen und man kann sich überlegen hier die Auswahl gurndsätzlich noch einzuschränken.

Das e mit dem Krönchen im IE6

tempa wrote this 13:16:

Der IE6 lässt die Tschechen im Stich. Nicht dass der IE6 nicht die Maskierung ĕ verstünde, das ein e mit Krönchen bzw. dem vertikal gespiegelten „Accent Dächle“ ê darstellt wird vom IE6 genau einmal auf einer Seite dargestellt, ansonsten zeigt es ein olles leeres Schächtelchen. Ich bitte also die Tschechen um Verzeihung. Aber da ist ein einfaches e der Lesbarkeit doch dienlicher.
Kleines e mit Kroenchen
Update: Es scheint als sei der iE mit ĕ nicht einverstanden und hätte gerne stattdessen: ě sososo.

Die Reptilienbörse Ulm lädt also nun in fünf Sprachen ein, u.a. in Tschechisch.

Alles in allem ging selbst eine so sonderzeichenlastige Sprache wie Tschechisch recht problemlos umzusetzen. Es ist etwas umständlich zu schreiben da viele der Zeichen über Copy&Paste in die Seite gemogelt werden müssen. Es fehlt einfach der Ascii-Wert für die meisten Buchstaben mit Krönchen. Ansonsten aber ist das arbeiten mit dem Plugins cpSprache für Editland bequem und einfach.

Update: Wenn man den Zeichensatz ändert, klappts auch mit dem Nachbarn. Tschechisch erfordert im IE6 — Maskierung hin oder her — UTF8 oder Windows-1250. Da UTF-8 aller wahrscheinlichkeit noch weitreichendere Anderungen erfordert hätte, habe ich erst einmal Windows-1250 genommen, den Standard, den man auch auf tschechischen Seiten findet. Etwas umständlich gestaltet sich noch die Eingabe, wenn keine tschechische Tastatur verwendet wird. Die Sonderzeichen gibt man dann direkt in Editland via copy&paste ein. Das beste ist es also, dem tschechischen Übersetzer direkt Zugang zur Präsenz zu geben.

Nun muss noch in Editland bei den Formulareingaben der Doctype und Charset via Variable gesetzt werden und schon sollte man auch die Menübezeichnungen der Navigation korrekt widergeben können. Kommt mehr Zeit, kommt auch hier noch das letzte Quentchen Perfektion

Planen, testen und liefern — eine echte Freude

tempa wrote this 10:35:

Eben mache ich für einen Kunden eine weitere Spracherweiterung und öffne den Ordner der Sprachverwaltung und es prangt mir schon in knallegelb auf der ersten Seite ein dicker Hinweis entgegen, dass neue Sprachen hinzugekommen sind.

Hier hat jemand mitgedacht. Claudia Reiser zeichnet sich unteranderem dadurch aus, dass Sie mitdenkt und ihre Plugins gründlich alle Eventualitäten abklappern. Wenn Sie mir Dinge in Bata zusendet sind diesen selten so Beta sondern sehr oft schon ziemlich Alpha.

Ich arbeite verflucht gerne mit Claudia Reiser von creisi production zusammen. Das musste hier mal geschrieben werden.

Danke, Claudia!

Was Kapitelnummern mit Array_slice() zu tun haben

tempa wrote this 21:30:

Bei manchen Problemstellungen ist es recht nervend, wenn man nicht dran bleiben kann. Das Menüsystem ist ein solches. Aber Endlich kommt Teil III zum fehlenden Puzzle, damit aus einer Liste mit vorangestellten Leerschritten ein in Ebenen unterteilte geordnete oder ungeordnete Liste wird. Letzter Stand dieser offenen Baustelle war eine Kapitelnummer:

2.3.1.1

Dass hier ein Array im Spiel ist, ist mehr als offensichtlich. Doch wie wird man die Array-Elemente los, wenn einer neuen Seite auf einem bestehenden Kapitel weiter geht? (mehr …)

Der Linkbaum der Navigation in Editland

tempa wrote this 23:07:

Jedem Link seine Kapittelnummerierung

Das ist dann Teil II der Überlegung, wie man mit möglichst wenig Heckmeck die Informationen einer dynamisch mit PHP generierten Navigationsstruktur beikommt. In Teil I ging es noch darum, festzustellen, wann eine Ebene wechselt und mitzuführen wo man sich befindet. Führt man beim ersten Durchlauf Kapitelnummern mit, so muss man den Baum nur noch einmal durchlaufen, bevor man anschließend anhand von Bedinungen den Navigationsbaum schreibt. Hierbei wird bei der aktiven Seite ein Marker gesetzt, so wie bei der versteckten Seite ein Marker diese Kennzeichnet. Dieser Marker macht aus der Kapitelnummer den Array anhand dessen später beim zweiten Druchlauf, wenn die Navigation geschrieben wird, Klassen vergeben werden können, die nicht nur den aktiven Link, bzw. die Bezeichnung im Span ausweisen, sondern auch den Links, die zur aktiven Seite führen eine entsprechende Klasse geben können.

Jeweils die Ebene um eins verkleinert und bei der Ordnungs den letzten Eintrag abgeschnitten und schon hat man den Marker für die führende Seite zur aktuell offnen Seite der zurückliegenden Ebene.

Da gibt es nun wirklich genügend Array-Funktionen in jeder Programmiersprache, mit denen diese Aufgabe leicht zu bewältigen ist. Die versteckte Seiten sollte man an dieser Stelle ganz aussen vor lassen.

Die Vorgehensweise ist immer wieder recht simple. Was weiß ich? welche Flaggen kann ich setzen, um die Informationen, dann im Zugriff zu haben, wenn ich sie benötige und welche Bedingungen sollen erfüllt sein, damit die Ausgabe so oder so erfolgen kann. Das ist wie Algebra. Meist braucht man nur die Hälfte der Information, um den Rest zu erschließen.

Wie baut man eine Navigation?

Programmplanung Editland-Menü

tempa wrote this 07:30:

Editland hat im Bereich Menüverwaltung ein denkbar einfaches und geniales Prinzip. Rückt man den Menüpunkt über die Menüverwaltung einmal ein, so wird der Menüpunkt der vorhergehenden Seite untergeordnet. Rückt man die Seite zwei Mal ein, wird diese versteckt, also aus dem Menü ausgeblendet.

Um ein Listenmenü zu schreiben, muss man nun also die Einrückungen durchzählen. Und die Veränderung beobachten um festzustellen, ob man nun eine Liste öffnen, eine Liste schließen oder einen Listenpunkt verstecken muss. Mir hilft beim Nachdenken, welche Informationen nun unerlässlich sind, um die Liste für das Menü korrekt aufzubauen, die Variationen plastisch darzustellen:

Menuevariationen in Editland

Dabei stellte sich schnell heraus, dass nicht alle Zählergebnisse und Summenspiele eineindeutig sind. Ich muss die einen oder anderen Informationen also mit führen. Es sollte genügen, mit zu führen wie viele Listen aktuell offen sind und ob die letzte Seite zufällig ein versteckter Listenpunkt ist. Dann ist es nur ein oder zwei Handvoll Bedingungen, die erfüllt sein wollen und mit Switch in einer Schleife abgearbeitet werden können. Das muss ich mir aber in ausgeschlafenen Zustand überlegen. Da mich das Problem nachträglich wieder aus dem Nest geholt hat, werde ich nun ein Nickerchen machen.

Es hilft diese kleine Darstellung im Programmcode als Kommentar zu haben um den Faden nachher schnell wieder aufzugreifen.

Nach dem Nickerchen, … (mehr …)

Step 2: vom grafischen Entwurf zur Planung der HTML

tempa wrote this 15:41:

Nachdemich mich nun für einen Entwurf entschieden habe, den ich Umsetzen möchte. Kommt die Phase zwei. Schon bei der Arbeit am Entwurf, habe ich verschiedene Schnittmuster im Kopf, mit denen man das jeweilige Template umsetzen könnte. In dieser Phase exportiere ich jedoch auch schon mal die eine oder andere Variante um nach bei der Umsetzung in HTML flexibel verschiedene Lösungen probieren kann. In der folgenden Grafik sind bereits ein paar Elemente gekennzeichnet, die exportiert wurden.

Grafiken exportieren für die HTML-Umsetzung

Der Ast, die rote Fläche, der helle Rahmen, die Birnen im Hintergrund und der Granatapfel, sein Schatten und seine Spiegelung liegen jeweils auf einer eigenen Ebene und können ein uns ausgeblendet werden, gerade so, wie hier die Texte (Title, Navigation und Blindtext) ausgeblendet wurden (Siehe zum Vergleich erster Entwurf in Step 1).

Noch rasch die PHP für die Bild-Liste mit den Werten in den Image-Ordner kopiert, damit die Werte übersichtlich und im schnellen Zugriff sind.

Moment … was sind das für komische Dateinamen? (mehr …)

Warum ich Editland so liebe

tempa wrote this 23:03:

Mittlerweile kann ich schon so einiges in PHP selber umsetzen. In den meisten Fällen aber, überlasse ich die PHP-Prgrammierung nur allzugern den PHP-Programmierern

Obwohl Editland (bei mir in der Templaterie) ein PHP-basierendes MiniCMS ist, muss mich das ganze PHP-Gedöns nicht interessieren. Ich kann mich auf Design, HTML und CSS konzentrieren, was ein weites Feld und anspruchsvoll genug ist.

In Editland lege ich einen Unterordner im Template-Ordner an und mache dort eine oder mehr HTML-Seiten, die Platzhalter enthalten, die nur ein Schema kennen.

###---PLATZHALTER---###

Je nach Platzhalter habe ich unterschiedliche Begriffe. Editland selbst hat nur rund 20 Platzhalter, wobei diese wieder einem einfachen Schema folgen. So muss man sich im Grunde genommen nur 6 Platzhalterbezeichnungen merken. Das ist genial!

Danach kommen die Plugins, die ebenfalls zwischen 1 und 6 Platzhalter haben, aber ganz für sich stehen. Das heißt, diese kann man peut a peut kennenlernen.

Einarbeitungszeit nicht mal einen Tag. Einfach Genial.

Eben habe ich mich mit einem neuen System anfreunden wollen. Ich habe erst einmal auf dem Absatz kehrt gemacht. Da mache ich lieber Buchhaltung. Und wer mich kennt, weiß, was das heißt.

Web-Projekte mit Templates planen

tempa wrote this 03:10:

Jedes Projekt lässt sich in Routinen und Abstrakte untergliedern. Diese Untergliederung kann man als Templates bezeichnen. Templates helfen das Projekt im festgesetzten Rahmen zu halten und sich der Ziele und Attribute des Projektes genauer im klaren zu sein. Viele Fragestellungen werden so nicht übersehen und man kann ihnen die angemessene Aufmerksamkeit widmen.

Einen Artikel zu Webprojekt-Templates für Einsteiger wurde im Webhandbuch der templaterie veröffentlicht:

Wozu ist ein Website-Template gut?

Wie teuer darf es sein?

tempa wrote this 19:57:

„Ich gebe auf!“ erklärt ein Interessent und Webdesigner der alten Schule. Ich möge die Umsetzung vornehmen. Gern Blablah hin, blahblah her … „Ich nehme das Template das ich Ihnen gezeigt hatte zur Grundlage und mit den Anpassungen, dass das Template aussieht wie das Design, das Sie mir zeigten mit den iFrames, … grob geschätzt ca. 500 bis 600 Euro …“ Entsetzen am anderen Ende … soviel? So teuer. (mehr …)

Recent Comments:

  • Silke schümann { Du warst auf dieser Seite: Step1 zur Archiv-Thumbgalerie via Custom fields Marke Eigenbau http://templaterie.de/blog/931/step1-zur-archiv-thumbgalerie-via-custom-fields-marke-eigenbau/ Hier war ich noch am Basteln. Ich fürchte meine PHP-Kenntnisse sind... } – Aug 26, 9:29 AM
  • Andreas { Hey, ich habe den Code wie oben benutzt und auch $dgal = get_posts('category=1′); on der richtigen Zeile eingesetzt nur bei mir läufts immernoch nicht. Kann... } – Aug 26, 3:20 AM
  • Fred { "wer Smarty lernt, kann tatsächlich gleich auch PHP mitmachen, ich hatte es eine zeitlang auch eingesetzt, aber jetzt mach ich es wieder auf meine art... } – Jan 06, 7:14 PM
  • Silke Schümann { Das klingt nach einem Syntaxfehler in der ersten Zeile. Anführungszeichen korrekt? Und das Plugin funktioniert nur innerhalb von Editland. Die index.php ausserhalb von Editland aufzurufen... } – Jun 18, 3:40 PM
  • Jörg { Hallo, ich habe die index.php im ersten Abschitt Nr. 3 beschrieben, angelegt. Beim Aufruf der Seite wird folgende Fehlermeldung angezeigt: Parse error: parse error, unexpected... } – Jun 18, 3:14 PM
  • Michael { Gern geschehen 😉 } – Mai 29, 2:31 PM
  • Silke Schümann { Jepp. Das war's: ES tut! Lösung ist nun in einem eigenen Beitrag: Step1 zur Archiv-Thumbgalerie via Custom fields Marke Eigenbau Fertig und betriebstüchtig! 🙂 } – Mai 29, 1:25 PM
  • Michael { Wie wäre es, wenn Du die Zeile $dgal = get_posts('category=1'); auslagerst und den Rest in eine Funktion packts, der Du $dgal übergibst. Das wäre auch... } – Mai 29, 12:45 PM
  • Silke Schümann { Ich ziehe diees Variante ebenfalls vor, dovh wenn ich Code übernehmen, dann ändere ich hierfür nicht extra. Es dürfte gehzpft wei gesprungen sein, welche man... } – Mai 29, 2:00 AM
  • Ulf { ich würde bei der Syntax für Schleifen konsequent die C-ähnliche Variante mit geschweiften klammern nehmen, nicht die alternative mit Doppelpunkt und "endwhile" bzw. "endforeach". } – Mai 29, 12:00 AM
  • Silke Schümann { Ich habe ich http://franchie.de die Thumbs in der Sidebar erfolgreich ausgelesen. Ansonsten ist die Test-Umgebung unter 1a-test dot de / blog Ich will diese Adresse... } – Mai 28, 11:37 PM