What is Dawn Drupal theme?

Drupal Theming: Skab Unikke Brugeroplevelser

21/02/2024

Rating: 4.22 (1647 votes)

At skabe en visuelt tiltalende og funktionel hjemmeside i Drupal handler i høj grad om dens tema. Et tema er fundamentet for din sides udseende og brugeroplevelse. Det definerer, hvordan indholdet præsenteres for dine besøgende, fra layout og farveskemaer til typografi og interaktive elementer. I denne dybdegående artikel vil vi udforske de mange facetter af Drupal theming, fra de grundlæggende principper til avancerede teknikker.

How to create a responsive and mobile-friendly Drupal website?
Both are important to ensure that your website looks great and functions properly on all devices. The first step in creating a responsive and mobile-friendly Drupal website is to choose a Tailwind CSS Starter Kit. Drupal offers many responsive themes that are optimised for different devices.
Indholdsfortegnelse

Hvad er et Drupal Tema?

Et Drupal tema er en samling af filer, der bestemmer sidens præsentationslag. Disse filer inkluderer typisk HTML-struktur, CSS til styling, JavaScript for interaktivitet og Twig-skabeloner til at definere, hvordan data vises. Temaet adskiller design og præsentation fra kernen af Drupal, hvilket giver dig mulighed for at ændre sidens udseende uden at påvirke den underliggende funktionalitet.

Du kan tænke på et tema som et digitalt 'outfit' til din Drupal-installation. Det er det, brugerne ser og interagerer med. Drupal er utroligt fleksibelt, når det kommer til theming, hvilket giver udviklere og designere friheden til at skabe alt fra enkle, minimalistiske designs til komplekse, dynamiske brugergrænseflader.

Grundlæggende Filstruktur og .info.yml

Ethvert Drupal tema starter med en .info.yml fil. Denne fil er hjertet i dit tema, da den indeholder vigtig metadata om temaet, såsom dets navn, beskrivelse, version, og hvilke regioner det understøtter. Uden en korrekt konfigureret .info.yml fil vil Drupal ikke genkende din filsamling som et gyldigt tema.

En typisk tema-mappestruktur kunne se således ud:

my_theme/ ├── css/ │ └── style.css ├── js/ │ └── script.js ├── templates/ │ ├── page.html.twig │ └── node--article.html.twig ├── logo.svg ├── my_theme.info.yml └── my_theme.libraries.yml 

Filen my_theme.info.yml ville indeholde noget i stil med:

name: 'My Awesome Theme' description: 'Et brugerdefineret tema til min Drupal-side.' type: theme core_version_requirement: ^9 || ^10 # Angiver de regions, temaet understøtter regions: header: 'Header' primary_menu: 'Primary menu' content: 'Content' sidebar_first: 'Sidebar first' sidebar_second: 'Sidebar second' footer: 'Footer' # Afhængigheder til andre moduler eller temaer # dependencies: # - drupal/core_version_requirement # Angiver hvilke biblioteker der skal indlæses # libraries: # - my_theme/global-styling 

Filen my_theme.libraries.yml bruges til at definere og gruppere temaets aktiver (assets) som CSS og JavaScript:

global-styling: version: 1.0 css: base: css/style.css: {} js: js/script.js: {} dependencies: - core/jquery - core/drupal 

Tilføjelse af Regioner

Regioner er specifikke områder på din side, hvor indhold kan placeres. Standard Drupal-installationer kommer med foruddefinerede regioner som 'Header', 'Content', 'Sidebar' og 'Footer'. Du kan definere dine egne regioner i din .info.yml fil for at skabe mere fleksibilitet i dit layout.

Når du har defineret regioner i din .info.yml fil, skal du også inkludere dem i din page.html.twig skabelonfil for at de bliver synlige. Dette gøres ved at bruge Twig-syntaksen:

<!-- Page template --> <header role="banner"> {{ page.header }} </header> <!-- Main navigation --> <nav role="navigation"> {{ page.primary_menu }} </nav> <!-- Main content area --> <main role="main"> {{ page.content }} </main> <!-- Sidebars --> <aside role="complementary"> {{ page.sidebar_first }} {{ page.sidebar_second }} </aside> <!-- Footer --> <footer role="contentinfo"> {{ page.footer }} </footer> 

Ved at placere indhold i disse regioner via Drupal's administrationsinterface (typisk under 'Structure' -> 'Block layout'), kan du nemt styre, hvor forskellige blokke af indhold vises på din side.

Tilføjelse af Aktiver (CSS & JS)

Som vist i eksemplet med my_theme.libraries.yml, er det den foretrukne metode at inkludere CSS- og JavaScript-filer i Drupal via bibliotekssystemet. Dette sikrer, at dine aktiver kun indlæses, når de rent faktisk er nødvendige, hvilket forbedrer sidens ydeevne.

Du kan definere forskellige biblioteker til forskellige formål. For eksempel kan du have et bibliotek til globale styles, et andet til specifikke komponenter, eller endda dynamisk indlæsning af JavaScript baseret på siden eller indholdstypen.

Inkludering af CSS

I din my_theme.libraries.yml fil kan du specificere stien til dine CSS-filer. Du kan også angive, om filen skal indlæses som 'base' (typisk i <head>), 'layout', 'component', eller 'state'.

Inkludering af JavaScript

Tilsvarende kan du angive stien til dine JavaScript-filer. Du kan også angive, om JavaScript skal indlæses i <head> eller før lukningen af </body> tagget. Det er generelt god praksis at indlæse JavaScript sidst på siden for at forbedre den indledende sideindlæsningstid.

Eksempel på inkludering af et specifikt JavaScript-bibliotek til en bestemt side:

my-special-js: version: 1.0 js: js/special-script.js: { weight: 0, defer: true } dependencies: - core/jquery 

Dette bibliotek kan derefter kaldes i din .theme fil eller i dine Twig-skabeloner ved hjælp af {{ attach_library('my_theme/my-special-js') }}.

Sub-Theming: Udvidelse af Eksisterende Temaer

En af de mest kraftfulde funktioner i Drupal theming er muligheden for at skabe sub-temaer. Et sub-tema arver alle egenskaber fra sit 'forældre'-tema, men giver dig mulighed for at overskrive og tilføje dine egne styles og skabeloner. Dette er ideelt, når du vil bygge videre på et eksisterende tema (som et distributions tema eller et tema fra tredjepart) uden at ændre direkte i kernen af det tema.

For at skabe et sub-tema, skal du blot definere et nyt tema med en .info.yml fil, der angiver `base theme` egenskaben:

name: 'My Sub Theme' description: 'Et sub-tema baseret på et andet tema.' type: theme core_version_requirement: ^9 || ^10 base theme: classy # Eller et andet tema, f.eks. stable9 regions: header: 'Header' content: 'Content' footer: 'Footer' libraries: - my_sub_theme/global-styling 

I dette eksempel arver 'My Sub Theme' fra 'classy' temaet. Alle CSS, JS og skabeloner fra 'classy' vil være tilgængelige for 'My Sub Theme', medmindre de eksplicit overskrives.

Brug af Stable og Stable9 som Base Temaer

Drupal's 'Stable' og 'Stable9' temaer er designet til at tilbyde en stabil markup-struktur, der er mindre tilbøjelig til at ændre sig ved Drupal-opdateringer. Ved at bruge disse som base temaer i dine sub-temaer, kan du sikre en større fremtidssikring af din sides design.

Her er en oversigt over, hvilke egenskaber der typisk arves og ikke arves:

ArvesArves Ikke (Kan Overskrives)
CSS-filer og JS-filer defineret i base temaets libraries.ymlTemaets overordnede struktur, layout og specifikke Twig-skabeloner
Region-definitionerSpecifikke region-layouts og indholdet inden i dem
Klasser og attributter brugt i base temaets markupNye CSS-klasser, ID'er eller attributter tilføjet i sub-temaet

Avancerede Theming Teknikker

Brug af Twig og Preprocessing

Drupal 8 og nyere versioner bruger Twig som standard templating engine. Twig er kendt for sin renere syntaks og sikkerhedsfunktioner sammenlignet med PHP-baserede templates.

Du kan påvirke outputtet af HTML via preprocess-funktioner i din .theme fil. Disse funktioner giver dig mulighed for at manipulere variabler, før de sendes til Twig-skabelonen.

Eksempel på en preprocess-funktion i my_theme.theme:

/** * Implements hook_preprocess_HOOK(). */ function my_theme_preprocess_node(&$variables) { // Tilføj en brugerdefineret klasse til alle node-visninger. $variables['classes_array'][] = 'my-custom-node-class'; // Ændre outputtet af en specifik variabel. if (isset($variables['content']['field_my_field'])) { $variables['content']['field_my_field']['#prefix'] = '<div class="custom-field-wrapper">'; $variables['content']['field_my_field']['#suffix'] = '</div>'; } } 

Brug af attributter i Twig:

Twig-skabeloner bruger attribut-objekter til at håndtere HTML-attributter som klasser og ID'er på en dynamisk måde. Dette gør det nemmere at styre, hvilke attributter der tilføjes til et element.

<!-- Eksempel på brug af attributter i en Twig-skabelon --> <div{{ attributes.addClass('my-custom-wrapper', 'clearfix') }} data-nid={{ node.id() }} > {{ title_prefix }} <h2><a href="{{ url }}">{{ label }}</a></h2> {{ title_suffix }} <div class="content"> {{ content }} </div> </div> 

Breakpoints

Breakpoints er definerede skærmbredder, hvor designet af din hjemmeside ændrer sig. Drupal's Breakpoints modul standardiserer brugen af breakpoints og gør det muligt for temaer og moduler at dele og bruge dem på tværs af hinanden.

Du kan definere breakpoints i din my_theme.yml fil (eller en separat breakpoints.yml fil) og derefter bruge dem i dine CSS-filer eller i billed-stilarter for at sikre responsivt design.

# Eksempel på breakpoints.yml my_theme.mobile: label: 'Mobile breakpoint' mediaQuery: min-width: 0 max-width: 767px group: mobile my_theme.tablet: label: 'Tablet breakpoint' mediaQuery: min-width: 768px max-width: 1023px group: tablet my_theme.desktop: label: 'Desktop breakpoint' mediaQuery: min-width: 1024px group: desktop 

Tema Indstillinger

Du kan tilføje brugerdefinerede indstillinger til dit tema via administrationsinterfacet. Dette gøres ved at oprette en formular i din .theme fil (ved hjælp af `hook_form_alter` eller ved at definere en `theme_settings` funktion) og derefter gemme indstillingerne. Disse indstillinger kan bruges til at styre ting som logo, farver, eller andre visuelle præferencer direkte fra Drupal's administrationssektion (`/admin/appearance`).

Inkludering af Standard Billedstilarter

Drupal har et kraftfuldt billedbehandlingssystem, der giver dig mulighed for at oprette billedstilarter med forskellige effekter. Du kan inkludere disse stilarter direkte i dit tema, så de er tilgængelige for brugere, der opretter indhold.

Forskelle i Theming mellem Drupal Versioner

Theming-landskabet har udviklet sig markant gennem Drupal's historie:

Drupal VersionPrimære Ændringer i Theming
Drupal 6/7PHP-baserede temaer (.tpl.php filer), Phptemplate templating engine. Mindre standardiseret asset-håndtering.
Drupal 8Overgang til Twig templating engine. Introduktion af .info.yml og .libraries.yml. Stærkere fokus på objekter og OOP. Ændringer i kerne-klasser.
Drupal 9/10Fortsat udvikling af Twig. Bedre understøttelse af moderne webteknologier. Stable9 som base tema. Forbedret API for theming.

Opgradering af Klasser fra Drupal 7 til Drupal 8+: Mange af de CSS-klasser og HTML-strukturer, der blev brugt i Drupal 7, er ændret i Drupal 8 og nyere versioner. Det er vigtigt at være opmærksom på disse ændringer, når man opgraderer temaer.

Twig Konvertering: Processen med at konvertere .tpl.php filer til .html.twig filer er afgørende for at udnytte Drupal 8+'s theming-system fuldt ud.

Automatisering af Theming

For at strømline udviklingsprocessen kan man bruge automatiske værktøjer som Gulp.js. Gulp kan automatisere opgaver som:

  • Kompilering af Sass/Less til CSS
  • Minificering af CSS og JavaScript
  • Billedoptimering
  • Live reloading af browseren under udvikling

Dette kan betydeligt øge effektiviteten, især i større projekter.

Ofte Stillede Spørgsmål (FAQ)

Hvad er forskellen på et tema og et sub-tema?

Et tema er et selvstændigt design. Et sub-tema arver fra et andet tema (base temaet) og kan derefter tilpasse eller udvide det uden at ændre det originale tema.

Hvordan tilføjer jeg et nyt logo til mit tema?

Du kan typisk placere en logo.svg eller logo.png fil i din tema-mappe. Alternativt kan du definere logoet i din .info.yml fil eller via temaets indstillingsside.

Hvornår skal jeg bruge et sub-tema?

Brug et sub-tema, når du vil bygge videre på et eksisterende tema, enten et du selv har lavet tidligere, et tema fra en distribution, eller et tredjeparts tema. Det fremmer genbrug og vedligeholdelse.

Kan jeg bruge PHP direkte i mine Twig-skabeloner?

Det er generelt ikke anbefalet at bruge kompleks PHP-logik direkte i Twig. Brug i stedet preprocess-funktioner i din .theme fil til at forberede variabler og logik, før de sendes til Twig.

Hvordan sikrer jeg, at mit tema er responsivt?

Brug CSS media queries, flexible layouts (som Flexbox eller Grid), og definer breakpoints i Drupal's Breakpoints modul for at tilpasse designet til forskellige skærmstørrelser.

Afslutningsvis er Drupal theming en essentiel del af at skabe en unik og engagerende online tilstedeværelse. Ved at mestre filstrukturer, Twig-templating, asset-håndtering og sub-theming, kan du transformere din Drupal-side til præcis det, du forestiller dig.

Hvis du vil læse andre artikler, der ligner Drupal Theming: Skab Unikke Brugeroplevelser, kan du besøge kategorien Teknologi.

Go up