dedlfix: Api json, Inhalte richtig auslesen

Beitrag lesen

Tach!

.. Das damit aufgerufene Template kann daran noch beliebige Manipulationen vornehmen.

Autsch, Programmlogik im Template ist Mist.

Pauschalaussagen sind auch Mist, besonders wenn man das System dazu offensichtlich nicht kennt.

HTML ist zum Beispiel ein ähnliches System, bei dem Inhalte und Logik-Anweisungen gemeinsam enthalten sind. Die Kennzeichnung, welcher Text was ist (Liste, Absatz, Tabellenzelle, Link), ist Logik im Sinne von Anweisungen, die der Browser verarbeitet, um daraus einen Bildschirminhalt zu erstellen.

Kann man grundsätzlich Mist finden, aber was wäre denn die bessere Alternative, Logik (dazu Metadaten) und Inhalt zu trennen, ohne dass die Handhabung unnötig kompliziert wird?

Bei den Mediawiki-Templates hat man die Herausforderung, dass Templates nicht immer nur reine Platzhalterersetzungen sind, sondern da auch mal ein paar ifs und elses verwendet werden können sollen. Zudem darf das System nicht unnötig komplex in der Handhabung werden. Das Element zum Bearbeiten der Wiki-Inhalte ist immer noch im wesentlichen eine Textarea und ein Absende-Button.

Aber irgendwo muss es ja eine Zuordnung von "Platzhalter Name" => "Platzhalter Wert" geben.

Es gibt in Mediawiki keine diesbezügliche Datenhaltung. Das ist nur Text mit mehr oder weniger komplexen Formatieranweisungen darin, den irgendein Bearbeiter schreibt. Ähnlich wie man Programmcode-Dateien als aneinandergereihten Text schreibt und nicht aus einem Datenbankinhalt heraus erzeugt.

Diese "Zuordnungen" sind Parameter-Literale, mit denen das Template aufgerufen wird. In dem Fall sind es benannte Parameter, es gibt aber auch positionale Parameter. Der Template-Parser parst sich das entsprechend und erzeugt anhand der Regeln im Template-Code eine Ausgabe. Danach sind die "Zuordnungen" Geschichte. Im Grunde ist das wie ein Funktionsaufruf in Programmiersprachen, bei dem man ein paar Parameter (benannt oder positioniert) übergibt. Da steht auch nicht zwingend eine strukturierte Datenhaltung als Quelle für die Inhalte dahinter. Der Funktionsaufruf kann mitten in anderem Code stecken und Literale oder Variableninhalte übergeben bekommen.

dedlfix.