29965c1164
mAi: #9 - GEO Schema-Slot {{schema_jsonld}} in templates/base.html + render.sh
...
Schema-Markup-Mechanismus für templated Sites (custom Sites bleiben unberührt).
- templates/base.html: {{schema_jsonld}} Slot im <head>.
- site.yaml: optionaler `schema:` Block. `type:` -> `@type`, `@context`
wird automatisch ergänzt. Fehlt der Block, bleibt der Slot leer.
- render.sh: liest schema via `yq -o=json`, transformiert mit jq, fügt
Template-Default für `type` ein (person-* -> Person, product-* -> Product,
editorial -> Article).
- render.sh: literal-string replace (lreplace) statt awk gsub für multiline-
Substitution. Behebt nebenbei einen latenten Bug, bei dem `©` im
template_body als `{{body}}copy;` corrupted wurde (gsub interpretierte
`&` als matched text).
- tests/schema-test.sh + 4 Fixtures: validiert explicit type, Template-
Defaults für 3 Templates, leerer Slot ohne schema-Block.
- README.md: Schema.org-Konvention dokumentiert (Block-Format, Defaults,
Custom-Sites-Hinweis, Schema.org-Validator-Link).
QA: ./build.sh -> 59 sites OK, custom Sites byte-identical zur Source,
3 templated Fixtures rendern valides JSON-LD (Person/Product/Article),
no-schema-Fixture produziert keinen <script>-Tag.
Closes #9 nicht - head reviewed + merged.
2026-04-30 02:50:08 +02:00
m
846fc04444
feat: i18n template infrastructure — render.sh reads _en vars, emits data-de/data-en
...
Phase 1 of i18n rollout:
- render.sh: i18n_attrs helper, reads *_en fields from site.yaml, emits
data-de/data-en attributes on title, description, role, tagline, cta,
tags, section titles, card titles/descriptions, bio, content
- base.html: i18n.js auto-included, title/description get i18n attrs
- All 6 templates: translatable elements get i18n attr placeholders,
footer toggle button with machine-translation disclaimer
- ichbinotto.de pilot: added machine-translation disclaimer per m's request
Templated sites can now be translated by adding _en fields to site.yaml.
2026-04-01 12:49:34 +02:00
6f5de542ab
feat: initial mono-repo with 30 vanity domain sites
...
Scaffold complete repo structure:
- 28 static sites extracted from running containers on mlake
- 2 dynamic sites (dasbes.de, dumusst.com) marked for separate handling
- Template system with 6 templates (person-dark/light, product-dark, editorial, fun, minimal)
- Shared CSS (variables, responsive, animations, noise overlay)
- nginx config generator with multi-domain alias support
- Build script with Docker-based nginx validation
- add-site.sh helper for scaffolding new domains
- Dockerfile for single nginx:alpine container
Sites: clemensplassmann.de, danosi.de, deinesei.de, derkaiseristnackt.de,
elefantenhor.de, fragina.de, frenchkis.de, ichbinaufbali.de, ichbinaufbarley.de,
insain.de, julietensity.de, kainco.de (+keinco.de), kainstress.de, keinefreun.de,
knzlmgmt.de, kopffrai.de, legalais.de, machesdocheinfach.de, mai-otto.de
(+otto.flexsiebels.de, ottomatisch.de, ichbinotto.de), martinsiebels.de,
matthiasbreier.de, osterai.de, paragraphenraiter.de, schulfrai.de, smartin3.de,
sorgenfrai.de, vonschraitter.de, wartebitte.de
Refs: otto#341
2026-03-29 13:20:27 +02:00