Thema’s

Introductie

Met een thema kunt u het uiterlijk van een website volledig aanpassen met behulp van Azuriom.

Om een thema te installeren, plaatst u het in de resources/themes/ map in de hoofdmap van uw website.

Wanneer Azuriom lokaal is geïnstalleerd voor thema-ontwikkeling, wordt het ten zeerste aanbevolen om de foutopsporing to activeren om de ontwikkeling te vereenvoudigen. Dit kan gedaan worden door simpelweg deze 2 regels te bewerken in het .env bestand:

APP_ENV=local
APP_DEBUG=true

Een thema maken

Om snel een thema te maken, kunt u de volgende opdracht gebruiken die: Automatisch de themamap genereerd met de theme.json bestand:

php artisan theme:create <thema naam>
Om thema’s te maken met een meer geavanceerde setup met een webpack om te compileren SASS-bestanden en optimaliseerde JavaScript bestanden, kunt u dit gebruiken onofficiële boilerplate (ook moet je Node.js installeren met NPM)

Structuur

themes/ <-- Map met alle geïnstalleerde thema's
| example/ <-- ID van je thema
| | theme.json <-- Het hoofdbestand van uw thema met verschillende informatie
| |  assets/  <-- De map met de middelen van je thema (css, js, afbeeldingen, svg, etc)
| | views/ <-- De map met de weergaven van uw thema.
| | config/
| | | config.blade.php
| | | rules.php
| | config.json

Het theme.json bestand

Alle thema’s hebben een theme.json bestand in hun hoofdmap, dat is het enige essentiële element voor een thema, het ziet er zo uit:

{
    "id": "example",
    "name": "Example",
    "version": "1.0.0",
    "description": "Een geweldig thema.",
    "url": "https://azuriom.com",
    "authors": [
        "Azuriom"
    ],
    "azuriom_api": "1.0.0"
}

Thema ID

Elk thema moet een ID hebben, die uniek moet zijn en alleen cijfers, kleine letters en streepjes mag bevatten. Het wordt aanbevolen om de naam te gebruiken als basis voor: het maken van de ID, bijvoorbeeld als de naam Hallo Wereld is, dan kan de ID hallo-wereld zijn. Ook moet de map van het thema dezelfde naam hebben als zijn ID.

Views

De views vormen het hart van een thema, het zijn de HTML-inhoudsbestanden van een thema voor de verschillende onderdelen van de website.

Azuriom is gemaakt met behulp van Laravel, views kunnen worden gemaakt met behulp van de sjabloon Blade. Als je Blade niet onder de knie hebt, wordt het ten zeerste aanbevolen om De documentatie te lezen, vooral omdat het vrij kort is.

Het wordt ten zeerste aanbevolen om GEEN PHP-syntaxis te gebruiken. Wanneer je met Blade werkt, want Blade brengt geen voordelen maar alleen nadelen.

Aan de CSS-kant wordt aanbevolen om het standaardframework van de CMS te gebruiken, namelijk Bootstrap 5, dit maakt het gemakkelijker om een thema te realiseren en is compatibel met de nieuwe plug-ins, zodat u niet constant updates hoeft uit te voeren. Maar als u wilt, kunt u een ander CSS-framework gebruiken.

In Javascript is de enige vereiste afhankelijkheid: Axios.

Als een view niet aanwezig is in het thema, maar wel in het CMS of in een plug-in, zal het automatisch gebruikt worden.

Lay-out

De lay-out is de structuur van alle pagina’s van een thema. Het bevat de meta’s, middelen van een thema, header, footer etc…

Om de inhoud van de huidige pagina weer te geven kunt u gebruik maken van @yield('content'), en om de titel van de huidige pagina weer te geven kunt u @yield('title') gebruiken.

U kunt ook verschillende elementen integreren met @include('<name of the view>'), bijvoorbeeld @include('element.navbar') voor inclusief de navigatiebalk.

Om de lay-out van de pagina te definiëren, moet de view de weergave uitbreiden met de lay-out, kunt u ofwel de standaardlay-out gebruiken met @extends('layouts.app'), of maak je eigen lay-out en breid deze uit.

Plug-in views

Om de views van een plug-in te wijzigen, maakt u eenvoudig een plugins map in de map views van het thema, en maak een map voor elke plug-in (met behulp van de plug-in ID en niet de naam van de plug-in), en voeg vervolgens de plug-in views toe..

Bijvoorbeeld, voor de stem plug-in, geeft dit views/plugins/vote/index.blade.php.

Methoden

Middelen

Om de link naar een item in een thema te hebben, kun je de volgende functie gebruiken theme_asset:

<link rel="stylesheet" href="{{ theme_asset('css/style.css') }}">

Huidige gebruiker

De huidige gebruiker kan worden opgehaald met de functie auth()->user(). Voor meer details over authenticatie, kunt u de Laravel documentatie raadplegen.

Functies

U kunt via de functies een bepaald aantal parameters van de website ophalen zoals:

Functie Beschrijving
site_name() Haalt de sitenaam op
site_logo() Hiermee kunt u de link naar de website-logo ophalen
favicon() Hiermee kunt u de favicon-link ophalen
format_date() Geeft een datum weer die is opgemaakt met de huidige taal. Deze functie neemt een instantie van Carbon\Carbon aan als parameter
money_name() Retourneert de naam van de valuta van de website
format_money() Retourneert een bedrag dat is opgemaakt met de valuta van de website

Geef de spelers weer die op de server zijn

Om de online spelers weer te geven, controleert u gewoon of de variabele $server niet null is, en de server online is, als dat zo is, gebruik dan $server->getOnlinePlayers() om het aantal online spelers op te halen.

@if($server && $server->isOnline())
    {{ trans_choice('messages.server.online', $server->getOnlinePlayers()) }}
@else
    {{ trans('messages.server.offline') }}
@endif

Vertalingen

Een thema kan, indien nodig, vertalingen laden.

Om dit te doen, maakt u gewoon een messages.php bestand in de lang/<language> map (bijvoorbeeld: lang/en). van een thema, dan kunt u een vertaling weergeven via de trans: {{ trans('theme::messages.hello') }} of via de @lang instructie: @lang('theme::messages.hello'). U kunt ook trans_choice gebruiken voor een vertaling met getallen, en trans_bool om een boolean te vertalen (zal terugkeren in het Engels Yes). /No.

Voor meer details over vertalingen, kunt u de Laravel documentatie raadplegen.

Configuratie

U kunt een configuratie in een thema toevoegen, om dit te doen, hoeft u alleen maar de basis van een thema te maken:

  • Een config/config.blade.php weergave met het formulier voor de configuratie.
  • Een config/rules.php bestand met de verschillende validatieregels voor de configuratie van een thema.
  • Een config.json bestand waarin de thema configuratie wordt opgeslagen en dat de standaardwaarden bevat.
Voorbeeld

config.blade.php

<form action="{{ route('admin.themes.update', $theme) }}" method="POST">
    @csrf

    <div class="form-group">
        <label for="discordInput">{{ trans('theme::carbon.config.discord') }}</label>
        <input type="text" class="form-control @error('discord-id') is-invalid @enderror" id="discordInput" name="discord-id" required value="{{ old('discord-id', config('theme.discord-id')) }}">

        @error('discord-id')
        <span class="invalid-feedback" role="alert"><strong>{{ $message }}</strong></span>
        @enderror
    </div>

    <button type="submit" class="btn btn-primary">
        <i class="bi bi-save"></i> {{ trans('messages.actions.save') }}
    </button>
</form>

config.json

{
    "discord-id": "625774284823986183."
}