J 0 O M L A 6
Website von einem Anfänger für neue Anfänger
  • START
  • Grundlagen
  • Installation
  • Konfiguration
  • Backend
  • Inhalte
  • Menüs
  • Module
  • Templates
  • Template NEUES
  • Benutzer
  • MEDIEN
  • Erweiterungen
  • OPTIMIERUNG
  • SEO & Sicherheit
  • Benutzerdefinierte Felder

Suche

TEMPLATES

  • Basics - Overrides Cassiopeia - Templates

  • Template - CSS-Variable

  • Template - Grundlagen

  • Template - Restaurant -1-

  • Template - Restaurant -2-

  • Template - warum eigenes?

  1. Aktuelle Seite:  
  2. MENÜZEILE
  3. Templates

1. Was ist ein Override?

Ein Override ist eine Kopie einer Core‑Ausgabe, die im Template liegt und das Original ersetzt, ohne Core‑Dateien zu verändern.

Vorteile:

  • Updatefest
  • Volle Design‑Kontrolle
  • Saubere Trennung von Core & Design 

2. Arten von Overrides (Überblick)

TypZweckTypischer Einsatz
Layout‑Override HTML‑Struktur ändern Modul neu aufbauen
Template‑Override Komponenten & Module Beitrags‑, Modul‑Ausgabe
CSS‑Override Optik Farben, Abstände

 


3. Wo liegen Core‑Layouts? (Referenz)

Beispiel: Menü‑Modul
Core‑Pfad: /modules/mod_menu/tmpl/default.php

Beispiel: Artikel‑Kategorie‑Modul
/modules/mod_articles_category/tmpl/default.php

⚠️ Diese Dateien niemals direkt bearbeiten!


4.1 Override im Backend erstellen

Backend‑Pfad: 
System → Templates → Site‑Templates → Cassiopeia → Overrides

Schritte:

  1. „Neuen Override erstellen“
  2. Modul auswählen (z. B. Menü)
  3. Joomla erstellt automatisch die Dateien

4.2 Ergebnis im Dateisystem
/templates/cassiopeia/html/mod_menu/default.php

➡ Dieses Layout überschreibt ab sofort die Core‑Ausgabe des Moduls.


5. Advanced Overrides (Layouts duplizieren)

Ziel

Mehrere Layout‑Varianten für ein Modul (z. B. Menü normal / Menü Sidebar)

Backend‑Pfad
Inhalt → Module → Modul bearbeiten → Erweitert → Layout

Vorgehen

  1. Override anlegen
  2. Datei kopieren & umbenennen, z. B.: default_sidebar.php
  3. Im Modul das neue Layout auswählen

Im Modul das neue Layout auswählen

 


6. Praxisbeispiel 1: Menü‑Layout vereinfachen

Ziel

  • Keine Unterpunkte
  • Klare HTML‑Struktur

Beispiel‑Code (Auszug)- Wo liegt er?

👉 IMMER im aktiven Template

📁 Pfad:

 /templates/cassiopeia/index.php
 

⚠️ Nicht in cassiopeia_extended/index.php,
denn diese Datei lädt nur weiter:
require JPATH_THEMES . '/cassiopeia/index.php';  

📌 Merksatz: Layout-Code steht im Basistemplate, nicht im Extended-Wrapper. 

➡ Ergebnis:
sauberes, leicht stylbares Menü 


CSS Musterlösung

Speicherort:
/templates/cassiopeia/css/user.css

Beispiel: Menü vereinfachen

/* Hauptmenü – reduziert & klar */
.main-menu-wrapper .mod-menu ul {
     padding: 0;
     margin: 0;
}

.main-menu-wrapper .mod-menu ul li a {
     font-size: 16px;
     font-weight: bold;
     color: black; /* Schwarz #000000 */
    text-decoration: none;
    padding: 10px 14px;
}

.main-menu-wrapper .mod-menu ul li a:hover {
     color: darkblue; /* Dunkelblau #00008B */
}

 

CSS Variable anlegen - (Custom Properties) 

Anwendung

Für die meisten user.css-Anwendungen sind CSS-Variablen sehr nützlich, besonders für persönliche Anpassungen die regelmäßig geändert werden.

Verwende CSS-Variablen in user.css wenn:

  • Du mehrere zusammenhängende Werte hast
  • Du Anpassungen für andere ermöglichen willst
  • Du Theme-Support brauchst
  • Das Stylesheet komplex ist (> 100 Zeilen)

Vermeide sie wenn:

  • Das Stylesheet sehr einfach ist
  • Du maximielle Browser-Kompatibilität brauchst
  • Performance kritisch ist

VORTEILE

✅ Flexibilität und Anpassbarkeit

  • Benutzer können Werte leicht ändern ohne CSS-Kenntnisse
  • Einfache Dark/Light-Mode Umschaltung:

@media (prefers-color-scheme: dark) {
:root {
--background: #1a1a1a;
--text-color: #ffffff;
}
}

✅ Wartbarkeit

  • Zentrale Änderungen möglich
  • Konsistente Werte über das gesamte Stylesheet
  • Reduzierte Redundanz

✅ Dynamische Anpassung

  • Werte können zur Laufzeit geändert werden
  • JavaScript-Interaktion möglich:

javascript

document.documentElement.style.setProperty('--primary-color', '#ff0000');

✅ Browser-Support

  • Moderne Browser unterstützen CSS-Variablen gut
  • Fallback-Mechanismus:

color: var(--text-color, #000000); /* Fallback zu Schwarz */

✅ Kaskadierende Natur

  • Variablen erben und überschreiben wie andere CSS-Eigenschaften
  • Verschiedene Werte für verschiedene Kontexte

NACHTEILE

Browser-Kompatibilität

  • Ältere Browser (IE11) unterstützen keine CSS-Variablen
  • Benötigt Fallbacks für maximale Kompatibilität

Performance

  • Übermäßiger Gebrauch kann die Performance beeinträchtigen
  • Dynamische Änderungen lösen Layout-Recalculations aus

Debugging

  • Schwieriger zu debuggen als direkte Werte
  • Browser-DevTools zeigen manchmal nur var(--name) statt des berechneten Werts

Komplexität

  • Zusätzliche Abstraktionsebene
  • Kann für einfache user.css übermäßig sein

Typisierung

  • Keine Typüberprüfung (z.B. Farbwerte vs. Pixelwerte)
  • Fehler erscheinen erst zur Laufzeit

1. Variablen definieren (zentral)

Ganz oben in deiner user.css:

:root {

/* Farben */
--farbe-haupt: #0d3560; /* dunkelblau */
--farbe-akzent: #FFF3C4; /* aprikose */
--farbe-text: #000000; /* schwarz */
--farbe-hintergrund: #ffffff;/* weiss */
--farbe-rahmen: #dddddd; /* hellgrau */

/* Links */
--link-farbe: blau;
--link-hover: dunkelblau;

/* Schrift */
--schrift-standard: Arial, Helvetica, sans-serif;
--schrift-groesse-normal: 16px;
--schrift-groesse-h1: 24px;
--schrift-groesse-h2: 20px;
--schrift-fett: 700;

/* Abstände */
--abstand-klein: 5px;
--abstand-normal: 10px;
--abstand-gross: 20px;

/* Rahmen */
--rahmen-standard: 1px solid var(--farbe-rahmen);

}


2. Anwenden (Beispiel Breadcrumb)

Hintergrund Aprikose, Schrift Schwarz

 .mod-breadcrumbs {
     background: var(--farbe-akzent);
     color: var(--farbe-text);
     padding: var(--abstand-normal);
     border: var(--rahmen-standard);
}
 

3. Beispiel Überschriften (h1)

 Du kannst also komplette Designsysteme definieren.
h1{
     font-size: var(--schrift-groesse-h1);
     font-weight: var(--schrift-fett);
     color: rot;
     font-family: var(--schrift-standard);
}

4.1 Praxis-Variable Farben 

Farben

--farbe-header
--farbe-footer
--farbe-menue
--farbe-menue-hover
--farbe-button
--farbe-button-hover
--farbe-fehler
--farbe-erfolg
--farbe-warnung
--farbe-info

4.2 Praxis-Variable Schriften

--schrift-menue
--schrift-navigation
--schrift-artikel
--schrift-groesse-menue
--schrift-groesse-footer
--schrift-zeilenhoehe
--schrift-kapitalisierung


4.3 Praxis-Variable Layout/Boxen

--breite-inhalt
--breite-sidebar
--max-breite-seite
--radius-box
--schatten-box
--hoehe-header
--hoehe-footer


4.4 Praxis-Variable Rahmen und Effekte

--rahmen-dick
--rahmen-dunn
--schatten-standard
--schatten-hover
--transition-standard


4.5 Praxis-Variable Buttons

--button-hintergrund
--button-textfarbe
--button-hover-hintergrund
--button-radius


5. Profi-Anwendung (Vorteil)

Du willst später komplettes Design ändern:

Nur hier ändern:

 --farbe-haupt
--farbe-akzent
 

und die ganze Website wird angepasst

Das ist der Unterschied zwischen „CSS schreiben“ und „Designsystem bauen“.

 

Template - Grundlagen

1️⃣ Template-Verzeichnis anlegen

📁 Pfad

 /templates/mein_template/
 

Mindeststruktur

/templates/mein_template/
│
├─ index.php
├─ templateDetails.xml
├─ error.php
├─ template_preview.png
├─ css/
│ └─ template.css
└─ html/ (für Overrides) 
 

📌 Ohne index.php + templateDetails.xml kein Template


2️⃣ Entwurf erstellen (Planung)

Vor dem Coden klären:

  • Header (Logo, Titel)
  • Navigation
  • Content-Bereich
  • Sidebar (optional)
  • Footer

📐 Grobes Layout:

Header
Navigation
Systemmeldungen
Content
Footer
 

3️⃣ HTML-Grundgerüst erstellen

📁 Datei: /templates/mein_template/index.php


 4️⃣ Kopf für Joomla 6 vorbereiten

 Pflicht im <head>

<jdoc:include type="metas" />
<jdoc:include type="styles" />
<jdoc:include type="scripts" />

📌 Ohne diese:

  • kein CSS
  • kein JS
  • SEO-Probleme

5️⃣ Komponenten einbinden

Hauptinhalt (Pflicht!)

 <jdoc:include type="component" />
 

📌 Komponenten liefern den Seiteninhalt
(z. B. Beiträge, Kontakte, Suche)


6️⃣ Modulpositionen kennzeichnen

 <jdoc:include type="modules" name="menu" />
<jdoc:include type="modules" name="sidebar" />
<jdoc:include type="modules" name="footer" />
 

📌 name = Modulposition


7️⃣ Systemmeldungen einbinden

<jdoc:include type="message" /> 
 

📌 Zeigt:

  • Login-Meldungen
  • Fehler
  • Bestätigungen


8️⃣ Name der Website einbauen

➡️ kommt aus: pgsql Code kopieren
System → Globale Konfiguration → Website-Name


9️⃣ Link zur Startseite

📌 $this->baseurl = Domain + Unterverzeichnis


🔟 Statische Bilder einbinden

 📁 Pfad:

/templates/mein_template/images/logo.png

HTML

 


1️⃣1️⃣ Eigene Fehlerseite (error.php)

📁 Datei:

/templates/mein_template/error.php

📌 Wird automatisch bei Fehlern genutzt

 


1️⃣2️⃣ templateDetails.xml erstellen

Pfad:

/templates/mein_template/templateDetails.xml

 


1️⃣3️⃣ Template-Paket erstellen

  • Ordner mein_template zippen
  • Upload über:
 System → Installieren → Erweiterungen
 

1️⃣4️⃣ Template Overrides

📁 Pfad:

 /templates/mein_template/html/com_content/article/
 

➡️ Überschreibt:

 /components/com_content/tmpl/article/
 

📌 Update-sicher

 

1️⃣5️⃣ Modul-Chrome (Modul-Layouts)

📁 Pfad:

 /templates/mein_template/html/layouts/chromes/
 

Beispiel:


1️⃣6️⃣ Stylesheet einbinden

📁 Datei:

 /templates/mein_template/css/template.css
 

Automatisch geladen durch:
<jdoc:include type="styles" />

Beispiel:

header {
     background-color: #2F4F4F; /* Dark Slate Gray */
     color: #FFFFFF; /* White */
} 
 

1️⃣7️⃣ Vorschaubild (Template Preview)

📁 Datei:

/templates/mein_template/template_preview.png
 

📌 Wird im Backend angezeigt

 


 1️⃣8️⃣ Einzelne Elemente formatieren

 

main {
     max-width: 1200px;
     margin: auto;
}

footer {
     background-color: #333333; /* Dark Gray */
     color: #FFFFFF; /* White */
}


1️⃣9️⃣ Templates mit Parametern steuern

In : "templateDetails.xml:"

 <config>
     <fields name="params">
          <fieldset name="basic">
               <field name="bgcolor" type="color" label="Hintergrundfarbe" />
          </fieldset>
     </fields>
</config>
 

In :Datei "index.php"

<style>
body {
    background-color: <?php echo $this->params->get('bgcolor'); ?>;
     }
</style>

Template für ein Restaurant erstellen

Wir erstellen ein Joomla-6 Template für ein Restaurant mit Reservierung + Online-Bestellung + Speisekarte und nur 3 zentral änderbaren Farben (deutsche Variablennamen) 

Richtiger Speicherort (dein Projekt) Alle Styles gehören hierhin:
C:\xampp\htdocs\restaurant6\templates\restaurant_ihk\css\style.css

 Das ist deine Haupt-Stylesheet Datei → wird in index.php geladen

 

 


1. Voraussetzungen (Windows 11 Pro)

Lokaler Webserver (XAMPP empfohlen)

Download: https://www.apachefriends.org/de/download.html

Installationspfad (unbedingt so lassen): C:\xampp\

Danach starten:
C:\xampp\xampp-control.exe

Starten:

  • Apache
  • MySQL

Test im Browser: http://localhost/


2. Joomla 6 installieren

Download:

https://downloads.joomla.org/

ZIP entpacken nach: C:\xampp\htdocs\restaurants\

Dann im Browser:
http://localhost/restaurant6


Datenbank anlegen

http://localhost/phpmyadmin

Neue DB: 
restaurant6_db

Installation durchlaufen lassen.


3. Template anlegen (wichtigster Teil)

Joomla Template liegt hier:
C:\xampp\htdocs\restaurant6\templates\

Neuer Ordner: 
restaurant_ihk

Struktur erstellen:

 restaurant_ihk
│ index.php
│ templateDetails.xml
│
├── css
│ style.css
│
├── js
│ script.js
│
├── html
│
└── images
 

 


4. templateDetails.xml (Pflichtdatei)

Datei: 
 C:\xampp\htdocs\restaurant6\templates\restaurant_ihk\templateDetails.xml

 Inhalt:


5. index.php (Template Grundstruktur)

Speicherort index.php
C:\xampp\htdocs\restaurant6\templates\restaurant_ihk\index.php

Link zum Aufruf der CSS-Datei


 


6. CSS mit 3 Farben (deutsche Variablen!)

C:\xampp\htdocs\restaurant6\templates\restaurant_ihk\css\style.css

Farben später nur hier ändern — gesamtes Design passt sich an.

Datei: user.css 

:root{

--hauptfarbe: dunkelrot;
--nebenfarbe: creme;
--akzentfarbe: olivgruen;

}

/* globale Einstellungen */

body{
margin:0;
font-family:Arial, Helvetica, sans-serif;
background:var(--nebenfarbe);
}

/* Kopfbereich */

.kopf{
background:var(--hauptfarbe);
color:white;
padding:20px;
}

.navigation a{
color:white;
text-decoration:none;
margin:10px;
}

/* Hero Bereich */

.hero{
background:var(--akzentfarbe);
color:white;
padding:80px;
text-align:center;
}

/* Hauptbereich */

.hauptbereich{
display:flex;
}

.inhalt{
width:70%;
padding:30px;
}

.seite{
width:30%;
background:#f2f2f2;
padding:20px;
}

/* Footer */

.fuss{
background:var(--hauptfarbe);
color:white;
padding:20px;
text-align:center;
}


7. Template installieren

Zip erstellen aus:
C:\xampp\htdocs\restaurant6\templates\restaurant_ihk

Backend öffnen:
http://localhost/restaurant6/administrator

Gehe zu:
System → Installieren → Erweiterungen

Zip hochladen → dann:
 System → Templates → Site → restaurant_ihk → Standard

 
 

8. Menüstruktur für Restaurant

Backend:
Menüs → Hauptmenü

Anlegen:

MenüpunktTyp
Startseite Einzelner Beitrag
Speisekarte Kategorie Blog
Reservierung externer Link / Komponente
Online Bestellung Komponente
Kontakt Kontakte
 
 

9. Reservierungssystem installieren

Professionell & kostenlos:

DPCalendar (Tischreservierung geeignet)

Download:

https://joomla.digital-peak.com/download/dpcalendar

Installieren über:
System → Installieren → Erweiterungen

Dann:
Komponenten → DPCalendar → Kalender → Neuer Termin

Beispiel:

Titel: Tischreservierung
Dauer: 2 Stunden
Max Teilnehmer: 6
 

Frontend nutzbar als Reservierung.

 


10. Online Bestellung (Restaurant Bestellung)

Empfehlenswert: JoomShopping + Restaurant Addon

Download:
https://www.webdesigner-profi.de/joomla-webdesign/joomshopping

Installieren, dann Produkte anlegen:
Komponenten → JoomShopping → Produkte

  • Kategorie: Pizza
  • Kategorie: Getränke
  • Kategorie: Dessert

Jetzt hat das Restaurant:

✔ Online Bestellung
✔ Warenkorb
✔ Kundenkonto

 

 

11. Speisekarte darstellen (optisch schön)

Kategorie erstellen:
Inhalte → Kategorien → Speisekarte

Artikel:

Pizza Margherita
Preis: 9,50€
Zutaten: Tomate, Mozzarella, Basilikum

Menütyp:
Kategorie Blog


Weitere Gerichte eingeben, jetzt automatische Restaurantkarte.

 

12. Modul Positionen belegen

Backend: Inhalt → Module

PositionInhalt
logo Bild Modul (Logo)
menue Menü Modul
hero Willkommenstext
sidebar Öffnungszeiten
footer Adresse + Telefon

 


13. Ergebnis

Du hast jetzt:

✔ Eigenes Template
✔ 3 zentrale Farbvariablen
✔ Speisekarte
✔ Tischreservierung
✔ Online Bestellsystem
✔ Modulpositionen wie echtes Projekt

 

 

Template - Restaurant -2-

Responsive Einstellungen

Wir erweitern dein bestehendes Template so, dass es sich wie eine echte Restaurant-Website verhält:

✔ Handy nutzbar
✔ Burger Menü
✔ feste Navigation beim Scrollen
✔ ohne Framework (kein Bootstrap — IHK mag das)

 Das lernen Sie jetzt

  • Mobile First Anpassung
  • CSS Media Queries
  • DOM Manipulation
  • Event Handling
  • Sticky Header ohne Framework
  • Joomla Modulsteuerung

Richtiger Speicherort (dein Projekt) Alle Styles gehören hierhin:
C:\xampp\htdocs\restaurant6\templates\restaurant_ihk\css\style.css

 Das ist deine Haupt-Stylesheet Datei → wird in index.php geladen

 


1. Viewport aktivieren (sonst ist alles sinnlos)

Datei:
C:\xampp\htdocs\restaurant6\templates\restaurant_ihk\index.php

Im <head> unter charset einfügen:
<meta name="viewport" content="width=device-width, initial-scale=1.0">


2. Burger Menü HTML einbauen

Im Header ersetzen:

Suche:

<header class="kopf">

     <div class="logo">
          <jdoc:include type="modules" name="logo" />
     </div>

     <nav class="navigation">
          <jdoc:include type="modules" name="menue" />
     </nav>
</header>

 

Ersetzen durch:

<header class="kopf" id="kopf">

     <div class="kopfzeile">
          <div class="logo">
               <jdoc:include type="modules" name="logo" />
          </div>

          <div class="burger" id="burger">
               <span></span>
               <span></span>
               <span></span>
          </div>
     </div>

     <nav class="navigation" id="navigation">
          <jdoc:include type="modules" name="menue" />
     </nav>

</header>

 
 

3. JavaScript einbinden

In index.php vor </body> einfügen:

 
 
 

4. JavaScript schreiben (Menü + Sticky)

Datei:
C:\xampp\htdocs\restaurant6\templates\restaurant_ihk\js\script.js

// Burger Menü

const burger = document.getElementById("burger");
const nav = document.getElementById("navigation");

burger.addEventListener("click", function(){
     nav.classList.toggle("aktiv");
     burger.classList.toggle("offen");
});

// Sticky Navigation

window.addEventListener("scroll", function(){
     const kopf = document.getElementById("kopf");

     if(window.scrollY > 80){
         kopf.classList.add("fixiert");
     }else{
          kopf.classList.remove("fixiert");
     }
});

 

5a. CSS - Header Layout

Datei:
C:\xampp\htdocs\restaurant6\templates\restaurant_ihk\css\style.css

Ganz unten anhängen:

Header Layout

.kopfzeile{
     display:flex;
     justify-content:space-between;
     align-items:center;
}

.navigation ul{
     list-style:none;
     margin:0;
     padding:0;
     display:flex;
}

.navigation li{
     margin:10px;
}


5b. CSS - Burger Button

.burger{
     width:30px;
     cursor:pointer;
     display:none;
}

.burger span{
     display:block;
     height:4px;
     background:white;
     margin:6px 0;
     transition:0.3s;
}

 


5c. CSS - Sticky Navigation

 .fixiert{
     position:fixed;
     top:0;
     left:0;
     width:100%;
     z-index:999;
}
 
 

 6. Mobile Layout (der wichtige Teil)

@media (max-width:900px){

.hauptbereich{
     flex-direction:column;
}

.inhalt{
     width:100%;
}

.seite{
     width:100%;
}

/* Burger anzeigen */
.burger{
     display:block;
}

/* Menü verstecken */
.navigation{
     display:none;
     background:var(--hauptfarbe);
     padding:20px;
}

.navigation ul{
     flex-direction:column;
}

/* Menü sichtbar wenn aktiv */
.navigation.aktiv{
     display:block;
}

.hero{
     padding:40px;
     font-size:18px;
}

}

 

7. Desktop Verhalten korrigieren

(sonst bleibt Menü offen nach Resize)

@media (min-width:901px){
.navigation{
     display:block !important;
}
}
 
 

8. Test (wichtig)

Browser öffnen:
http://localhost/restaurant6

Dann:
F12 → Gerätesymbol → iPhone auswählen

Prüfen:

  1. Menü verschwindet
  2. Burger erscheint
  3. Klick öffnet Menü
  4. Scrollen → Kopf bleibt oben
  5. Layout untereinander

Wenn das funktioniert → alles ok

 

KÜCHENBESTELLUNGEN

In der Küche erscheinen neue Online-Bestellungen automatisch ohne die Seite neu zu laden.  

Funktionsprinzip (wichtig verstehen)

  1. Bestellung wird in Datenbank gespeichert (JoomShopping macht das schon)
  2. Küche öffnet eine Seite
  3. JavaScript fragt regelmäßig Joomla: → „Gibt es neue Bestellungen?“
  4. Joomla antwortet mit JSON
  5. Anzeige aktualisiert sich live

Das lernen Sie jetzt 

  • Joomla AJAX API
  • Eigenes Plugin
  • JSON Verarbeitung
  • Live Datenanzeige
  • Soft-Realtime System
 

9. Küchen-Anzeige Seite erstellen

Backend: 
Menüs → Hauptmenü → Neuer Menüpunkt

Typ: 
Einzelner Beitrag

Titel:
Küche Live

Alias:
kueche-live

Beitrag erstellen:
Inhalte → Beiträge → Neu Titel: Küchenmonitor

Inhalt (nur Platzhalter):
<div id="bestellungen">Warte auf Bestellungen...</div>

 

10. Joomla AJAX Schnittstelle erstellen

Wir nutzen die offizielle Joomla Schnittstelle: 
/index.php?option=com_ajax

Dazu brauchen wir ein Plugin.

 

11. Plugin Ordner erstellen

Pfad:
C:\xampp\htdocs\restaurant6\plugins\ajax\kueche\

Dateien:
kueche.php kueche.xml

 

11a kueche.xml

 C:\xampp\htdocs\restaurant6\plugins\ajax\kueche\kueche.xml
 

 


11b kueche.php (holt Bestellungen aus DB)

 Pfad:
C:\xampp\htdocs\restaurant6\plugins\ajax\kueche\kueche.php
 
 
 

12. Plugin installieren

Ordner zippen:
plugins\ajax\kueche

Backend:
System → Installieren → Erweiterungen

Dann aktivieren:
System → Plugins → AJAX - kueche → Aktiviert

 

13. JavaScript für Live-Anzeige

Datei:
C:\xampp\htdocs\restaurant6\templates\restaurant_ihk\js\script.js

unten anhängen: 

// Küchenmonitor

function ladeBestellungen(){

fetch("/restaurant6/index.php?option=com_ajax&plugin=kueche&format=json")

.then(response => response.json())

.then(data => {

let html = "<h2>Aktuelle Bestellungen</h2>";

data.data.forEach(function(order){

html += `
<div class="bestellung">
Bestellung #${order.nummer}<br>
Zeit: ${order.zeit}<br>
Status: ${order.status}
</div>
`;

});

document.getElementById("bestellungen").innerHTML = html;

});

}

// alle 5 Sekunden aktualisieren
setInterval(ladeBestellungen, 5000);

// sofort laden
if(document.getElementById("bestellungen")){
ladeBestellungen();
}

 
 

14. Anzeige formatieren

style.css anhängen:

.bestellung{
     background:white;
     border-left:8px solid var(--akzentfarbe);
     padding:15px;
     margin:10px 0;
     font-size:20px;
}
 
 

 

15. Test

Browser:
http://localhost/restaurant6/kueche-live

Dann zweite Seite öffnen:
http://localhost/restaurant6/online-bestellung

Neue Bestellung ausführen.

👉 Nach spätestens 5 Sekunden erscheint sie automatisch in der Küche.

 


16. Bestellungen nach Status einfärben

JoomShopping speichert den Status als Zahl in der Datenbank:

Tabelle:
#__jshopping_orders

Feld:
order_status

Typische Werte:

NummerBedeutung
1 neu
2 bezahlt
3 in Bearbeitung
4 versendet
5 erledigt


Wir verwenden:

Anzeige KücheDB Status
neu 1
in arbeit 3
fertig 5


17. Plugin erweitern (Status übersetzen)

Datei bearbeiten:
C:\xampp\htdocs\restaurant6\plugins\ajax\kueche\kueche.php

komplette foreach ersetzen:

 

foreach($orders as $order){

     $statusText = "unbekannt";
     $statusKlasse = "status-unbekannt";

     if($order['order_status'] == 1){
          $statusText = "neu";
          $statusKlasse = "status-neu";
     }

     if($order['order_status'] == 3){
          $statusText = "in arbeit";
          $statusKlasse = "status-arbeit";
    }

     if($order['order_status'] == 5){
          $statusText = "fertig";
          $statusKlasse = "status-fertig";
     }

     $ausgabe[] = [
          "nummer" => $order['order_id'],
          "zeit" => $order['order_date'],
          "status" => $statusText,
          "klasse" => $statusKlasse
     ]     ;
}

 

18. JavaScript anpassen (Klasse verwenden)

Datei:
C:\xampp\htdocs\restaurant6\templates\restaurant_ihk\js\script.js

Im Küchenbereich HTML Ausgabe ersetzen:

data.data.forEach(function(order){

html += `
<div class="bestellung ${order.klasse}">
Bestellung #${order.nummer}<br>
Zeit: ${order.zeit}<br>
Status: ${order.status}
</div>
`;

});

 

19. Farben definieren
Datei:
C:\xampp\htdocs\restaurant6\templates\restaurant_ihk\css\style.css

Ganz unten anhängen:

/* Statusfarben Küche */

.status-neu{
     background:rot;
     color:white;
}

.status-arbeit{
     background:gelb;
     color:black;
}

.status-fertig{
     background:gruen;
     color:white;
}


20. Testablauf (realistisch)

Backend:
Komponenten → JoomShopping → Bestellungen

Status ändern:

1 → neu → Seite zeigt rot
3 → in arbeit → wird gelb
5 → fertig → wird grün

Ohne Aktualisieren der Seite.

 

Warum ein eigenes Template?

1. Markenidentität & Corporate Design

  • Konsistente Farben: Exakte Firmenfarben (Pantone, CI/CD)
  • Corporate Fonts: Firmeneigene Schriftarten integrieren
  • Logo-Platzierung: Optimale Positionierung des Firmenlogos
  • Wiedererkennungswert: Einzigartiges Design, das von Wettbewerbern abhebt

2. Leistungsoptimierung

  • Kein Overhead: Nur benötigte CSS/JS laden
  • Minimale Dateigröße: Keine unnötigen Frameworks
  • Schnellere Ladezeiten: Bessere SEO und User Experience
  • Optimierte Bilder: Firmenspezifische Bildgrößen und Formate

3. Benutzerfreundlichkeit & UX

  • Branchenspezifische Navigation: Beispielweise für Hotels, Ärzte, Restaurants
  • Custom Layouts: Angepasst an den Content der Firma
  • Conversion-Optimierung: Call-to-Action-Buttons strategisch platzieren
  • Mobile First: Perfekt auf die Zielgruppe optimiert

4. Funktionalität & Features

  • Individuelle Module-Positionen: Genau auf Inhalte zugeschnitten
  • Firmenspezifische Komponenten: Reservierungssystem, Produktkatalog, etc.
  • Custom Error-Pages: Branded 404-Seiten
  • Wartungsmodus: Eigenes Design für Wartungsarbeiten

5. Sicherheit

  • Keine Fremd-Codes: Keine versteckten Backdoors wie bei manchen kostenlosen Templates
  • Regelmäßige Updates: Eigenkontrolle über Update-Zyklen
  • Cleaner Code: Keine unnötigen Funktionen, die angreifbar sind

6. SEO-Vorteile

  • Semantisches HTML: Optimale Struktur für Suchmaschinen
  • Kein Template-Bloat: Keine ungenutzten CSS/JS-Bibliotheken
  • Schnelle Ladezeiten: Wichtiger Ranking-Faktor
  • Structured Data: Firmenspezifische Schema.org-Implementierung

7. Wartung & Zukunftssicherheit

  • Einfache Updates: Keine Abhängigkeit von Drittanbietern
  • Joomla-Kompatibilität: Garantiert für neue Joomla-Versionen
  • Skalierbarkeit: Einfach erweiterbar bei Wachstum
  • Dokumentation: Eigene, firmenspezifische Dokumentation

8. Kostenkontrolle

  • Keine Lizenzkosten: Einmalige Entwicklung statt jährlicher Template-Lizenzen
  • Keine Abolauf-Abgängigkeit: Nicht von Template-Anbietern abhängig
  • Wiederverwendbar: Für Subdomains oder weitere Projekte nutzbar

9. Technische Flexibilität

  • Individuelle Breakpoints: An eigene Design-Entscheidungen angepasst
  • Custom Grid-System: Eigenes Layout-System statt Bootstrap
  • Zugänglichkeit (A11y): Spezifisch für die Zielgruppe optimiert
  • Browser-Support: Nur benötigte Browser unterstützen

10. Firmeninterne Prozesse

  • CMS-Schulung: Template an interne Redakteure angepasst
  • Workflow-Optimierung: Module für Pressemitteilungen, Events, etc.
  • Multilingual: Perfekt auf mehrsprachige Inhalte zugeschnitten
  • Redaktionssystem: Vereinfachte Content-Erstellung


Beispiel-Szenarien:

Für ein Hotel:

  • Buchungskalender prominent platzieren
  • Galerie für Zimmer und Ausstattung
  • Lageplan mit interaktiver Karte
  • Bewertungen und Zertifikate

Für eine Arztpraxis:

  • Online-Terminbuchung
  • Notfallkontakt immer sichtbar
  • Fachgebiet-spezifische Informationen
  • Datenschutz- und Impressum besonders prominent

Für einen Online-Shop:

  • Optimierte Produktdarstellung
  • Schneller Checkout-Prozess
  • Warenkorb immer sichtbar
  • Kundenbewertungen integriert

Wann ist ein eigenes Template nicht nötig?

  1. Kleine private Websites ohne Markenanforderungen
  2. Test- oder Demo-Projekte
  3. Zeitlich begrenzte Kampagnen-Seiten
  4. Wenn ein Premium-Template bereits alle Anforderungen erfüllt


Kosten-Nutzen-Analyse:

Kosten:

  • Entwicklungzeit (40-80 Stunden für professionelles Template)
  • Wartungsaufwand
  • Initiale Investition

Nutzen:

  • Professioneller Auftritt
  • Bessere Conversion-Raten
  • Langfristige Kosteneinsparung
  • Wettbewerbsvorteil
  • Vollständige Kontrolle

Fazit:

Ein eigenes Template lohnt sich besonders für Unternehmen, die:

  • Eine starke Markenidentität haben
  • Langfristig mit Joomla arbeiten wollen
  • Spezifische funktionale Anforderungen haben
  • Auf Performance und SEO Wert legen
  • Unabhängig von Drittanbietern bleiben möchten

Für eine Firma ist ein eigenes Template oft eine wertvolle Investition, die sich durch professionelleren Auftritt, bessere User Experience und langfristige Kosteneinsparungen bezahlt macht.

 

  • © 2026 - Joomla6.rneuhoff.de - Alle Rechte vorbehalten
  • Impressum
  • Datenschutz
  • Kontakt