Iconbox
Description
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bereichsnavigation
Theme
Module
Templates
Installation
Jedes Projekt sollte eine Lizens erhalten, diese folg dem UUID Schema: Update Kunden-Projekt
Je nach Projekt könnte es sein, dass der Entwickler die
# CUSTOM PROJECT FILES
Update X-Theme-Projekt
Aktuallisierungen am X-Theme-Projekt selber sind mit Versionsnummer und kurzer Beschreibung der Änderung,
sowie Nennung des Entwicklers in der Globals
Globale Variablen stehen in der Colors
Die Standart Farbpalette ist in der
primary #FF9400 secondary #000000 tertiary #FFFFFF quaternary #53e3a6 white #FFFFFF black #000000 light_gray #F7F7F7 medium_gray #D9D9D9 dark_gray #7F7F7F antrazit #1C3043 inherit inherit message #17A2B8 okay #28A745 warning #FFC107 alert #DC3545 Box-Shadow
Es gibt drei Größen von Schatten:
Eine weitere Möglichkeit, wenn die Klassen-Namen unzureichend sind, ist die manuelle Erstellung der Schatten.
Dazu kann das
Font-Size
Es steht eine Reihe von Schriftschnitten zur Verfügung. Die Größen reichen von
.font-size-xxl = 24px / 32px
Lorem ipsum dolor sit…
.font-size-xl = 20px / 26px
Lorem ipsum dolor sit…
.font-size-l = 18px / 27px
Lorem ipsum dolor sit…
.font-size-m = 14px / 21px
Lorem ipsum dolor sit…
.font-size-s = 12px / 18px
Lorem ipsum dolor sit…
.font-size-xs = 10px / 15px
Lorem ipsum dolor sit…
.font-size-xxs = 8px / 11px
Lorem ipsum dolor sit…
.font-size-xxl = 36px / 47px
Lorem ipsum dolor sit…
.font-size-xl = 24px / 32px
Lorem ipsum dolor sit…
.font-size-l = 18px / 27px
Lorem ipsum dolor sit…
.font-size-m = 16px / 24px
Lorem ipsum dolor sit…
.font-size-s = 14px / 21px
Lorem ipsum dolor sit…
.font-size-xs = 12px / 18px
Lorem ipsum dolor sit…
.font-size-xxs = 10px / 15px
Lorem ipsum dolor sit…
.font-size-xxl = 32pt / 48pt
Lorem ipsum dolor sit…
.font-size-xl = 24pt / 32pt
Lorem ipsum dolor sit…
.font-size-l = 16pt / 24pt
Lorem ipsum dolor sit…
.font-size-m = 12pt / 16pt
Lorem ipsum dolor sit…
.font-size-s = 10pt / 16pt
Lorem ipsum dolor sit…
.font-size-xs = 8pt / 16pt
Lorem ipsum dolor sit…
.font-size-xxs = 6pt / 8pt
Lorem ipsum dolor sit… H1-H6 Überschriften
Zu jedem guten Schriftschnitt gehört eine passende Überschrift. Nachstehend die
Headline 1Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd ... Headline 2Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd ... Headline 3Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd ... Headline 4Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd ... Headline 5Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd ... Headline 6Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd ...
.h1 = /
Lorem ipsum dolor sit…
.h2 = /
Lorem ipsum dolor sit…
.h3 = /
Lorem ipsum dolor sit…
.h4 = /
Lorem ipsum dolor sit…
.h5 = /
Lorem ipsum dolor sit…
.h6 = /
Lorem ipsum dolor sit…
.h1 = /
Lorem ipsum dolor sit…
.h2 = /
Lorem ipsum dolor sit…
.h3 = /
Lorem ipsum dolor sit…
.h4 = /
Lorem ipsum dolor sit…
.h5 = /
Lorem ipsum dolor sit…
.h6 = /
Lorem ipsum dolor sit…
.h1 = /
Lorem ipsum dolor sit…
.h2 = /
Lorem ipsum dolor sit…
.h3 = /
Lorem ipsum dolor sit…
.h4 = /
Lorem ipsum dolor sit…
.h5 = /
Lorem ipsum dolor sit…
.h6 = /
Lorem ipsum dolor sit… Aspect-Ratio
Eine besonderheit in unserem Theme ist, dass wir Seitenverhältnisse über CSS Klassen angeben.
Diese finden vielfach Anwendung. Zum Beispiel im
Weiter besteht die Möglichkeit für Mobile gesondert ein Seitenverhältnis anzugeben.
Die Nachsehende Tabelle kann als Hilfe für die Grafik dienen. Sie zeigt das Skalieren von Bildern ausgehend von der Breite.
Loading-Spinner
Für asynchrone Ajax Abfragen oder als Platzhalter für iFrames und lade intensive Inhalte gibt es ein aniemiertes SVG.
Dieses kann über die Webseite Icon8.com erzeugt und im Datei-System ersetzt werden.
Siehe dazu auch in die
Lazy-Loading
Generell verwenden wir das Attribute Raster
Das Theme-Raster basiert auf
col-12
col-2
col-8
col-2
col-6
col-6
col-4
col-4
col-4
col-3
col-3
col-3
col-3
Breakpoints
Media-Queries im CSS, sowie im JS werden über die HubL Syntax verwendet. Die Einstellung der Breakpoints erfolgt über die
Das equivalent in JavaScript funktioniert wie folgend, siehe dazu auch
Container
Das Bootstrap Raster unterstützt mehere Media-Querie gebundene Container Laufweiten.
In der Regel wir aber nur eine Container Breite, angegben in
Nachstehend das Beispiel einer dynamischischen Laufweite auf Basis der Breakpoints. Es können aber auch statische Zahlenwerte definiert werden.
Language
Das Theme verfügbt über eine Sprachweiche und Sprachdateien, siehe
Sollten Texte, Begriffe oder Links in einer anderen Sprache verwendet werden als die Sprache in welcher die Seite ausgewiesen ist. So sind solche Text, Begriffe oder Links mit folgenden HTML Attributen zu versehen.
Es stehen diverse Klassen zu Steuerung der Druckansicht zur Verfügung. Diese befinden sich in der
Verwendet werden kann ein Print-Raster, dazu
Die verbindlichste Darstellung für spätere Seitenausdrucke im Browser erhält man mit folgenden Einstellungen.
Viewport auf
Sort & Filter
Frontend seitiges Suchen und Filter erfolgt bitte mit der Bibliothek von
Das Filtern im Backend kann über Query-Parameter erfolgen. Dazu wird ein Parameter an die URL gehängt und die Seite neu geladen.
Über HubL Kann der Paramter als Kriterium für eine HubL Such- und Filter Funktion dienen.
Entsprechende Helfer-Funktionen stehen in JavaScript, siehe
HubDB Datenbanken lassen sich ebenfalls über Query-Parameter Filtern.
Zudem lassen sich diese über ein
Module
Die Standard Module im Theme folgen immer dem gleichen Schema. Ersichtlich im
Address
Als Bestandteil der semantischen Elemente für Suchmaschinen wurde das
Mountains Copyright
Ein Micro-Modul, das über
© Copyright 2025
Ixtensa GmbH
Favorites
Kern des Lang-Switch
Unser Theme kommt mit einem eigenen Sprachwechsler.
Das Login
Das Totop
Das Scroll-To-Top Modul, kurz Search
Die Seitensuche ist mit dem Share
Das Socialmedia
Das
Für das E-Mail Modul mit
Horizontal
Trademark
Mit dem Headline
Aufgrund der steigenden Anforderungen an Überschriften wurde das
Eine überzeugende Überschrift
Eine überzeugende Überschrift
Button
Es gibt vier Standard Button. Diese können über das
Nicht jede der folgenden Darstellung ist ein verbindlicher Anwendungsfall. Ob auf farbigen oder dunkelen Hintergrund ist stets Context und Design abhängig. Button Group
Eine Erweiterung des Standard Button, stellt das Bitte beachte, dass ein Button eine semantisch definierte Funktion in HTML hat. Es sind keine Link-Elemente! Ein Button steuert in der Regel eine Aktion auf der Seite. Die Aktion verwendet in der Regel JavaScript. Divider
Die klassische Tooltip
Das
Picture
In unserem Theme gibt es das
Mit ganz viel schönen Dingen die man darauf sehen kann.
Richtext
Neben dem HubSpot Rich-Text Editor, welcher inline Stylsheets schreibt, gibt es unsere Variante des
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore
et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
sanctus est Lorem ipsum dolor sit amet.
Quotations (Zitate)
Für Zitate gibt es das
Notification
Mit dem Message Alert Warning Okay Die Meldungen können über JavaScript erzeugt werden. Natürlich kann das Markup der Meldungen auch als reines HTML in anderen Modulen oder im Template eingesetzt werden, um ein optisches Element in Erscheindung der Notification einzubinden.
Pagination
Das Readtime
Das 16 min
Spacer
Das small
medium
large
Article
Eine Seiten-Vorschau in Form einer Karte, als einzelnes Element auch in Iterationsschleife anwendbar.
Das
Im Please Select a Page. Article-Slider
Verfügbare Variante des Company Logos
Für die Auflistung von Referenzen oder Partner-Firmen Logos gibt es das
Card
Das Code
Quellcode Darstellungen können über das
Um Code für das Modul zu schreiben, sind HTML Entitätsreferenzen erfoderlich.
Siehe dazu Beispiel für CSS:
Beispiel für PHP:
Beispiel für HTML:
Beispiel für JSON:
Countdown
Das ...Willkommen im neuen Jahr. Download
Ein semantisches Modul um herunterladbare Inhalte zur Verfügung zu stellen.
Im
Jetzt Download starten!
Super wichtig sollte jeder lokal aufbewahren.
Topline bzw Tagline
Eine weitere beliebige Datei Bezeichnung
Hier eine kleine Topline, wie bei den Überschriften um zB. die Zugehörigkeit zu einer Kategorie anzuzeigen.
Es gehen auch Datei Bezeichnungen die etwas länger ausfallen, oder wo es länger ausgeführt wird. Galerie
Das Iconbox
Das Iconbox Iconbox Lineitem
Als Lineitem bezeichnet wird ein Warenkorb Element. In Anlehnung als solches entwickelt hat es in unserem Theme die Funktion eines alternativen Elements für Listenasichten und Übersichtsseiten.
Mit Möglichkeit auf eine Detailseite zu verlinken. Strukturell ist das Please Select a Page. Person Card
Als Element für eine Team Übersichtsseite, als Autor unter einem Blog Artikel oder als Kontak für eine Stellenauschreibung.
Das
Andrea Anderson
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| mytext-lbl | mynumber | mybool | mydate | mydatetime | myselect | mymultiselect | myurl | mylocation | myimage | mycurrency | myvideo | Subtable0 | Subtable1 | Subtable2 | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Text3_ | Text3 | rich | 1.618 | Yes | Mai 26, 1968 | Mai 26, 1968 3 PM | Option2 | MOption1, MOption3 | www.ixtensa.de |
latitude: 49.718163 longitude: 8.715455 |
|
$123.45 |
|
48686151171, 48687860093 | 48780804016, 48780804017 | 48686151169, 48686151171 |
| Text4_ | Text4 | rich | 55.66 | No | Mai 26, 1968 | Mai 26, 1968 3 PM | Option2 | MOption1, MOption3 | www.ixtensa.de |
latitude: 49.718163 longitude: 8.715455 |
|
$666.77 |
|
48686151170 | 48780804017 | 48686151170 |
Table Legend |
||||||||||||||||
Timetable
Die timetable.module baut auf dem table.module auf.
Das bedeutet Stylsheets und responsive Verhalten werden über das Tablellen Modul bestimmt. Und im Timetable Modul überschrieben oder weiter verwendet.
Die Besonderheit dieses Modul besteht darin, Segmente in der Tabelle periodisch zu Kennzeichnen. Dabei wird von einem zwölf Montas Kalender ausgegeangen.
Unterstützt werden deutsche und Englische Beschriftung. Anwednung findet das Modul zum Beispiel bei geeigneten Zeitpunkten für den Urlaub.
Als Datenquelle kann eine manuele Eingabe dienen oder eine entsprechend formatierte HubDB-Tabelle.
| Urlaubszeit | Jan. | Feb. | Mar. | Apr. | May | Jun. | Jul. | Aug. | Sep. | Oct. | Nov. | Dec. |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Winterurlaub | ||||||||||||
| Frühlingsurlaub | ||||||||||||
| Sommerurlaub | ||||||||||||
| Herbsurlaub |
Chart
Visualisierung eines responsiven Balkendiagramms. Das chart.module ist Simpel gehalten.
Es dient für einfache Daten-Visualisierung. Dabei kommt es ohne JavaScript aus bei gleichzeitiger Barrierefreiheit.
Entwickelt um den Balast von großen Graph-Visualisierungs-Bibliotheken zu vermeiden, kann es in kleinen Projekten Anwendung finden.
Sollte ein Kunde vermehrt Bedarf an Datenvisualisierungen haben, wären entsprechend Module unter hinzunahme einer JS-Bibliothek neu zu entwickeln.
- 1 Haushaltswaren
- 2 Gartengeräte
- 3 Baumaschinen
- 4 Elektronik
- 5 Sonstiges
Circle
Eine Visualisierungsoption für Zahlen und Daten ist das circle.module.
Es ist vergleichsweise simpel gehalten, ähnlich wie das Balkendiagramm, aber mit Fokus auf den DnD-Editor. Das Modul bieten wir auch im HubSpot Marketplace an.
Die Visualisierung und Animation erfolgt über ein SVG. Die Strichstärken und Farben können für jedes Element individuell durch den Redakteur vorgenommen werden.
Die Animation der Kreise wird durch erscheinen des Elementes im Viewport ausgelöst. Es sind nur Prozent Werte von 0% bis 100% möglich.
Progress
Das progress.module verwendet das HTML5 <progress/> Element.
Es kann für die Visualisierung von verschiedenen Daten verwendet werden.
Allgemein
Mit Extensions ist der Theme Ordner gemeint und die darin befindlichen Module.
Diese sind unabhängig für sich funktionierende optionale Erweiterungen des Themes. Die Extensions werden im <head/> der Webseite eingebunden.
Darunter fallen Preload-Schriftarten, aber auch Icon-Fonts.
Oder Module wie der Blog-Tag-Designer, die Gestaltung des HubSpot Constent-Banners, Sprachsteuerung, austauschbare App- und Favicons oder erweitere OpenGraph Tags.
Im Grunde alles das was nicht dem Theme Standard entspricht und optional als Mehrwert installiert werden kann.
Wobei die Module die nicht vom Kunden benötigt werden, im Projekt entfernt werden können.
Das geht weil sie eben keine Abhängigkeiten aufweisen! Ebenso können für den Kunden neue Extensions entwickelt werden.
Erfüllen sie die Theme Kriterien, dürfen sie unter Zustimmung des Team in die Auswahl der für das Theme verfügbaren Extensions aufgebommen werden.
Zum Beispiel wenn eine neue unter Open-Source Lizens stehende Schriftfamilie erstellt wurde.
Beispiele hierfür sind das roboto.module und sourcesans.module.
Font-Awesome
Die Standart-Icon Font welche im Theme verwendet wird ist die Font-Awesome 5 Free.
Hinweise zur Verwendung sind der fontawesome.com Dokumentation zu entnehmen.
Die Wahl fiel auf die Font-Awesome, weil diese von HubSpot als Redakteur-Feld für die Einbettung von SVG-Icons bereitgestellt wird.
Wir verwenden sie für die Standard-Icons wie Pfeile, aber auch für Module wie die Job-Benefits. Generel spricht nichts dagegen eine
andere Icon-Font zu verwenden, jedoch sollte man, wenn man nicht gewillt ist, alle Icons zu überprüfen und Redakteur-Felder auszutauschen,
bei dieser Icon-Font bleiben.
<i class="fab fa-font-awesome"></i>
Consent Banner
Das consent.module ist eine CSS Schablone für die Gestaltung des HubSpot Cookie-Banners und Cookie-Consent-Managers.
Eine realistische Vorschau kann auf einer publizierten Seite erfolgen mit ergänzen des Query-Parameter ?_hsPrivacyTest.
This website stores cookies on your computer. These cookies are used to collect information about how you interact with our website and allow us to remember you. We use this information in order to improve and customize your browsing experience and for analytics and metrics about our visitors both on this website and other media. To find out more about the cookies we use, see our Privacy Policy
If you decline, your information won’t be tracked when you visit this website. A single cookie will be used in your browser to remember your preference not to be tracked.
Consent Manager
Ebenfalls auf der consent.module Erweiterung baut die Gestaltung des Consent Managers auf.
Dieser kann auf einer Live-Seite über den im Footer mandatory.module verankerten Link aufgerufen werden.
About Cookies
This site uses cookies. We use cookies mainly to improve and analyze your experience on our websites and for marketing purposes. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change your default settings. Blocking some types of cookies may negatively impact your experience on the site and limit the services we are able to provide.
Necessary
These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in, or filling in forms. Learn more about necessary cookies.
Analytics
These cookies help us to understand how visitors engage with the website. We may use a set of cookies to collect information and report site usage statistics. In addition to reporting site usage statistics, data collected may also be used, together with some of the advertising cookies described, to help show more relevant ads across the web and to measure interactions with the ads we show. Learn more about analytics cookies.
Advertisement
We use cookies to make our ads more engaging and valuable to site visitors. Some common applications of cookies are to select advertising based on what’s relevant to a user; to improve reporting on ad campaign performance; and to avoid showing ads the user has already seen. Learn more about advertisement cookies. .
Functionality
We use a set of cookies that are optional for the website to function. They are usually only set in response to information provided to the website to personalize and optimize your experience as well as remember your chat history. Learn more about functionality cookies.
Favicon
Das favicon.module setzt sich aus drei Blöcken zusammen.
Den App-Icons, dem Favicon und den Lade-Bildschirmen (Splash-Screens) bei Verwendung der Webseite als Schreibtisch- bzw. Desktop-Verknüpfung.
Der verzicht auf App-Icons uns Splash-Screens ist möglich, es kann auch nur ein Favicon aus dem Datei-Manager gewählt werden.
Es ist dabei ein globales Modul, die Inhalte gelten für alle Seiten, welche auf diesem Theme aufbauen.
Zum Einsatz kommt das Modul, wenn unterschiedliche Child-Themes (Designs) beim Kunden verwendet werden. Zum Beispiel Tochter-Geseltschaften.
Dann ist es nicht möglich über die HubSpot Backend Option unterschieldiche Favicon zu definieren. In dem Fall wird keines definiert und diese Erweiterung verwendet.
Die App-Icons und Splash-Screens können über den Datei-Manager verknüpft werden. Oder im favicon/files Ordner hochgeladern werden.
Dort befinden sich bereits Datei-Vorlage für die Grafik, eine Kopie dieser liegt auch in der Entwicklung unter: app_icon_and_splash_screens.
startup_mobile_320x480.png
startup_mobile_640x940.png
startup_landscape_1024x748.png
startup_portrait_768x1004.png
startup_mobile_320x460.png
appicon_128x128.png
appicon_48x48.png
appicon_16x16.png
Vorschau aktuelle Konfiguration:
Startup Screens:
320x480px
320x460px
640x940px
1024x748px
768x1004px
App Icons:
16x16px
48x48px
128x128px
Open-Graph
Das opengraph.module ergänzt voll automatisch <meta/> Angaben, welche in HubSpot fehlen.
Darunter detailierte Angaben über das Feature-Image. Blog-Artikel und Blog-Autoren Seiten.
Für weitere Informationen bitte die ogp.me Dokumentation nutzen.
Das stärkste Feature diese Moduls besteht darin, ein Fallback für das Feature-Image definieren zu können.
Und somit beim SEO-Check 100% für die Social-Media Kompatibilität zu erreichen.
Blog-Article
<meta property="article:published_time" content="{{ content.publish_date }}" />
<meta property="article:modified_time" content="{{ content.updated|datetimeformat("%Y-%m-%d %H:%M:%S") }}" />
<meta property="article:section" content="{{ content.parent_blog.html_title }}" />
<meta property="article:tag" content="{{ content.tag_names|join(', ') }}" />
Feature-Image
<meta property="og:image:type" content="image/{{ file.type }}" />
<meta property="og:image:width" content="{{ content.page_meta.featured_image_width }}" />
<meta property="og:image:height" content="{{ content.page_meta.featured_image_height }}" />
<meta property="og:image:alt" content="{{ content.page_meta.featured_image_alt_text }}" />
Blog-Author
<meta property="profile:username" content="{{ content.blog_post_author.display_name }}" />
Font-Face
Schriften im Theme zählen zu den Erweiterung (Extension). Weil die Einbindung dieser unabhänig vom Theme geschieht und geschehen muss! Anderenfalls müsste bei jedem Kunden an mehrern Stellen Dateien im Theme angepasst werden. Was undurchsichtige Verflechtungen und komplikationen beim Update-Vorgang bereiten kann. So ist nur ein Modul erforderlich, auch wenn das Erstellen zunächst mehr Arbeit erfodert, so ist es auf lange Sicht die saubere Lösung.
Eine Schrift Einbindung erfolgt kundenspezfisch oder als ganze Schrift-Familie. Dazu nutzen wir das font_face() Macro aus der fields.html.
Die einzelnen Schriftschnitte werden vom Entwickler bereitgestellt. Das aktiveren eines Schriftschnittes erfolgt über eine Boolean Variable.
Es wird für jede im Modul hinterlegte Schriftart ein CSS @font-face Eintrag mit zugehörigem <meta rel="preload" as="font" /> Tag erzeugt.
In der Regel ist das WOFF oder WOFF2 Format ausreichend. Aber Vorsicht, manche Schriften sind nur für Bildschirm optimiert und haben keine Druck-Variante.
Oder stellen für den Druck ein alternatives Format wie TTF bereit. Das so erstellte Font-Modul wird über die extension.html geladen.
Und in der fields.css mit seinem Namen und möglichen Fallback System-Schriftarten angegeben.
Aktuell sind zwei vollwertige Schriftfamilien im Theme hinterlegt. Diese Module können als Vorlage für die Kunden Schriftart geklont und angepasst werden.
Siehe dazu das robto.module oder sourcesans.module.
Beispiel:
{% if module.typeface.bold %}
{%- set roboto_regular = {
name: module.fontname,
path: [('/'~theme_name~'/extension/roboto/files/Roboto-Regular.woff')],
weight: '400',
style: 'normal',
display: 'swap',
format: ['woff']
} -%}
<link rel='preload' href='{{ get_asset_url( roboto_regular.path[0] ) }}?v=1.0.0' as='font' type='font/{{ roboto_regular.format[0] }}' crossorigin />
<style>{{ font_face( roboto_regular ) }}</style>
{%- endif -%}
