Diskussion 🤕
HTML-Code in den HTML-<head> einfügen

Mit [h] kann man HTML-Code in den sichtbaren Bereich einer Seite einbinden. Vergleichbares könnte für den nicht-sichtbaren HTML-<head>-Bereich angeboten werden, beispielsweise um Metadaten wie <meta property='og:foo' content='bar'> nach dem Open Graph Protocol einzubinden, die Aneamal nicht selbst unterstützt.

  1. Zu diesem Zweck wäre analog zu @style und @script eine Metadeklaration wie @html oder @htmlhead naheliegend.

    Denkbar wäre freilich auch @head, wobei da vielleicht eine Verwechslung mit @header denkbar wäre, was bereits etwas anderes bedeutet. Denkbar wäre auch @meta, wobei das einerseits zu allgemein klingen könnte, weil ja in Aneamal alle Zeilen mit @ Meta-Deklarationen sind, und andererseits zu spezifisch in Bezug auf HTML, weil mit @meta nicht nur <meta>-Elemente, sondern auch <link>- und andere Elemente eingefügt werden könnten.

    Sonstige Vorschläge?

  2. HTML-Code in den HTML-<head> einfügen zu können ist nun für die nächste Aneamal-Version (Anfang 2019) geplant.

    Nur der @name fehlt noch, damit es losgehen kann.

  3. Zu klären ist noch Folgendes:

    Angenommen, die Datei *eins.nml* enthält die Metadeklaration:

    @html
    @|<meta name='foo' content='bar'>

    und die Datei *zwei.nml* enthält:

    [a]->eins.nml

    Soll dann auch bei Aufruf von zwei.nml der Code in den HTML-<head> übernommen werden, der in eins.nml definiert wurde?

    Derzeit wäre das bei @script und @style beispielsweise der Fall (wobei Letzteres so eigentlich nicht angestrebt ist, aber mangels <style scoped> nötig), bei Angaben wie @robots und @layout aber nicht. Ich neige dazu, es auch hier nicht zu übernehmen. Eventuell müssten auch beide Varianten möglich sein? Eine Recherche wäre ratsam, was zum Beispiel beim Open Graph Protocol sinnvoll wäre.

  4. Ich denke im Moment macht es nur Sinn die Metadaten aus externen, eingebundenen Seiten in die Seite zu übernehmen die den Link zur externen Datei enthält wenn es die @header Datei ist. Ausserhalb davon könnte es heikel werden.

  5. Wie wäre es mit @extendohead, @brain, oder @addohead?

  6. @jackolantern?

  7. @4: Ja, ich werde erst einmal HTML-Metadaten aus eingebundenen Dateien nicht übernehmen. Wenn sich später der Bedarf zeigt, kann man diese Funktion noch immer hinzufügen.

    Die Idee, das speziell bei @header.nml zu machen und sonst nicht, ist interessant. Denkbar wäre alternativ eine automatisch einzubindende Datei @meta.nml oder @config.nml, sodass man von auf der Seite Sichtbarem unabhängig ist. Jedenfalls hätte man dann einen Grund weniger, auf aneamal-config.php zurückzugreifen.

  8. Klingt gut:
    <> auf der Hauptseite als @foo
    <> in der @header mit @foo in der Seite
    <> als externe Datei, wie *.css, die dann automatisch eingebunden wird.*

    * dann kann man anderes wie @author automatisch überall integrieren ohne in die Aneamal config gehen zu müssen. Man braucht dann nur im Root eine @metahead anzulegen und dort @author und anderes anzugeben.

  9. Isch hab des ja im moment so, dass in Aneamal confick ich author, css, og, etc drin habe. Wenn es zentral im Root liegen kann als @foo.nml wäre es nicht nur konsequent zu @header.nml, @aside.nml, @footer.nml, und @style.css sondern macht es möglich dass nutzer auf einer einfachen ebene nml nutzen können _mit ohne_ nur Knöpfchen drücken sondern richtig selber schreiben. Wer fit ist und will kann immer noch am php schrauben.

    Damit wäre nml ein echtes mittelbums zwischen cms und 'schreib den scheiss alleine'.

  10. Ich habe fürs etwaige automatische Laden von Metadaten, zum Beispiel aus einer Datei @meta.nml, eine neue Diskussionsseite eröffnet: https://prlbr.de/projekt/aneamal/diskussion/metadaten-automatisch-laden

  11. Hier nun zurück zum ursprünglichen Thema: Das Einfügen von HTML-Code in den HTML-<head> funktioniert jetzt im Testbetrieb per Metadeklaration @html mit Dateilink oder Heredoc, :-) wobei es nicht beim Namen @html bleiben muss.

  12. @6: Die Namen @extendohead und @addohead verweisen auf das HTML-Element <head>. Indirekt trifft das auch auf @brain zu, denn der Name käme ja daher, dass das Gehirn normalerweise im Kopf ist, so wie der eingefügte Code im HTML-<head> landet. Der Verweis auf HTML-<head> ist eigentlich ein guter Gedanke – eine konkrete Benennung, wo genau die Reise in den HTML-Code hingeht.

    Allerdings gibt es in Aneamal den Begriff „Header“ (der etwas mit HTML-<header>, nichts jedoch mit dem ähnlich benannten, aber semantisch grundverschiedenen HTML-<head> zu tun hat) und kein Konzept „Head“. Meine Befürchtung ist daher, dass der Gedanke zu naheliegend ist, dass @addohead oder Ähnliches irgend etwas mit Aneamal-Headern zu tun haben könnte, was aber ein Irrtum wäre.

    Aus heutiger Sicht betrachtet war die Wahl des Element-Namens <head> in HTML vielleicht suboptimal, weil er keine Eigenschaft dessen beschreibt, was das Element enthält (<blockquote> zum Beispiel enthält Zitate, ein guter Name, und <header> enthält Dinge, die typischerweise im Seiten- oder Abschnittskopf dargestellt werden). Der Name des Elementes <head> kommt anscheinend daher, dass das Element *im Quelltext* oben stehen muss, bzw. wurde ggf. in Analogie zu HTTP/E-Mail-Headern gewählt, die im Quelltext am Anfang einer Nachricht stehen. Dass diese dort oben stehen, hat allerdings höchstens einen technischen Hintergrund.^✻ Für das aufbereitete Dokument, was der menschliche Rezipient betrachtet, ist es irrelevant, denn dort werden diese Daten in der Regel gar nicht angezeigt. Es handelt sich um *Metadaten*. Auch Aneamal kennt Metadaten, doch ich würde nicht auf die Idee kommen, sie unter einem Begriff Head/Kopf zusammenzufassen, denn in Aneamal gibt es keine willkürliche Festlegung, dass sie im Quelltext oben stehen müssen. Sie können genauso gut am Ende der Datei stehen oder sonst wo.

    So kommt es, dass ich noch hadere …

    ___
    #✻ Wenn in einem E-Mail-Programm beispielsweise der Posteingang angezeigt wird, dann braucht das E-Mail-Programm dafür nur Metadaten der E-Mails – Absender, Betreff, Zeit – und muss nicht schon den ganzen E-Mail-Inhalt verarbeiten. Wenn die Metadaten in der E-Mail am Anfang stehen, dann findet das E-Mail-Programm die Metadaten schneller, als wenn es erst die ganze E-Mail danach durchsuchen müsste.
    Ein anderes Beispiel: Wenn ein Browser eine Webseite über eine langsame Verbindung lädt, dann kann er schon anfangen, sie perfekt darzustellen, bevor die Seite fertig geladen ist, falls er die Style-Information zum Aussehen bereits am Anfang und nicht erst ganz am Ende findet.

  13. Hm, ich denke @htmlhead vermeidet die Verwechslung mit Aneamal-Headern und macht auch klar, wo es hingeht. Im Gegensatz zu @extendohead und @addohead macht @htmlhead zwar nicht klar, dass es nicht den kompletten HTML-<head> enthält, sondern nur ergänzt. Aber das ist bei @script und @style und @javascript und @stylesheet auch so. Wenn man keine ganze Sätze als Namen verwendet, wird es kaum je alles von Relevanz ausdrücken können. Muss aber auch nicht sein …

  14. Ich schließe die Diskussion, da die Funktion als @htmlhead implementiert wurde.