Templates in Themes
- jlandt
- Master Bludit
- Posts: 73
- Joined: Mon Feb 22, 2021 10:56 am
- Location: Berlin
- Has thanked: 2 times
- Been thanked: 10 times
- Contact:
Hallo erst mal.
Ich versuche mich gerade an mein erstes Theme und möchte gern die Möglichkeit nutzen, einer Page ein bestimmtes Template zuzuweisen.
Ich weiss, es wurde bereits mehrfach in der Vergangenheit angefragt. Ich möchte allerdings ungern eine Weiche in der index.php in Abhängigkeit des Slugs nutzen sondern die Möglichkeit bei den erweiterten Einstellungen einer Seite ein Template anzugeben.
In der Vergangenheit hieß es dazu, dass das Feature noch nicht implementiert ist. In der aktuellen Version ist zumindest das Feld verfügbar. Ist das Feature derzeit trotz Vorhandensein des Feldes immer noch nicht verfügbar?
Weiterhin heisst es als Hint unter dem Feld: "Wenn das Theme das unterstützt" (sinngemäß). Das heisst was genau? Eine Doku dazu konnte ich leider nicht finden.
Ich versuche mich gerade an mein erstes Theme und möchte gern die Möglichkeit nutzen, einer Page ein bestimmtes Template zuzuweisen.
Ich weiss, es wurde bereits mehrfach in der Vergangenheit angefragt. Ich möchte allerdings ungern eine Weiche in der index.php in Abhängigkeit des Slugs nutzen sondern die Möglichkeit bei den erweiterten Einstellungen einer Seite ein Template anzugeben.
In der Vergangenheit hieß es dazu, dass das Feature noch nicht implementiert ist. In der aktuellen Version ist zumindest das Feld verfügbar. Ist das Feature derzeit trotz Vorhandensein des Feldes immer noch nicht verfügbar?
Weiterhin heisst es als Hint unter dem Feld: "Wenn das Theme das unterstützt" (sinngemäß). Das heisst was genau? Eine Doku dazu konnte ich leider nicht finden.
Gruss, Jürgen
- Edi
- Site Admin
- Posts: 3121
- Joined: Sun Aug 09, 2015 5:01 pm
- Location: Zurich
- Has thanked: 54 times
- Been thanked: 78 times
- Contact:
Du könntest auch ein benutzerdefiniertes Feld verwenden.
Nein, das Feld "Template" kann derzeit noch nicht verwendet werden.Ist das Feature derzeit trotz Vorhandensein des Feldes immer noch nicht verfügbar?
Damit verschiedene Templates verwendet werden könnten, müsste ein Theme über verschiedene Templates verfügen.Weiterhin heisst es als Hint unter dem Feld: "Wenn das Theme das unterstützt" (sinngemäß). Das heisst was genau? Eine Doku dazu konnte ich leider nicht finden.
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
- jlandt
- Master Bludit
- Posts: 73
- Joined: Mon Feb 22, 2021 10:56 am
- Location: Berlin
- Has thanked: 2 times
- Been thanked: 10 times
- Contact:
OK, vielen Dank erst eimal. Dann baue ich das wie gehabt per Logik (slug) in die index.php ein.
Schade. Und etwas verwirrend. Dann warte ich gespannt auf die Implementierung des Features und ändere dann das Theme nochmal ab...
Vielleicht noch als Hinweis:
Der Hint unter dem Feld ist ebenfalls etwas verwirrend. Vielleicht geht es mir auch nur so.... Der Hinweis suggeriert eher, dass im Theme bestimmter Code (Hook, etc.) vorhanden sein muss, damit es funktioniert.
Weiterhin wurde von anderer Usern ebenfalls die Frage gestellt, ob man das Template mit oder ohne File-Extension angeben muss.
Vielleicht kann man, wenn das Feature umgesetzt wurde, den Hinweistext nochmal dahingehend anpassen.
Schade. Und etwas verwirrend. Dann warte ich gespannt auf die Implementierung des Features und ändere dann das Theme nochmal ab...
Vielleicht noch als Hinweis:
Der Hint unter dem Feld ist ebenfalls etwas verwirrend. Vielleicht geht es mir auch nur so.... Der Hinweis suggeriert eher, dass im Theme bestimmter Code (Hook, etc.) vorhanden sein muss, damit es funktioniert.
Weiterhin wurde von anderer Usern ebenfalls die Frage gestellt, ob man das Template mit oder ohne File-Extension angeben muss.
Vielleicht kann man, wenn das Feature umgesetzt wurde, den Hinweistext nochmal dahingehend anpassen.
Gruss, Jürgen
- novafacile
- Master Bludit
- Posts: 113
- Joined: Sat Oct 06, 2018 4:47 pm
- Has thanked: 41 times
- Been thanked: 11 times
- Contact:
Es gibt eine Möglichkeit, die Template-Einstellung bei den Pages aber auch bei den Kategorien zu nutzen. Der Wert wird ja in der Seite/Kategorie gespeichert, man muss es nur selbst im Theme einbauen. Verwende ich produktiv für ein Theme von mir.
Die Variablen dazu heißen:
Die einzige Einschränkung ist, dass man das Template exakt richtig geschrieben per Hand eintragen muss. Es gibt keine Auswahlmöglichkeit. Zur Fehlervermeidung nutze ich deswegen dafür u.a. die Kategorien. Einmal in der Config eingestellt, wird immer das passende Template verwendet. Ob man das über die Kategorien verwenden kann, ist aber eine sehr individuelle Frage, je nach Inhaltsstruktur & Anforderungen.
Die Abfrage zum $WHERE_AM_I hab ich als switch umgebaut, da ich diese Variable gerne für individuelle Template- & Plugin-Lösungen nutze und dadurch beliebig viele "Cases" verwenden kann ohne mich in der If-Then-Else-Schleife zu verheddern.
Die Variablen dazu heißen:
- $page->template()
- $page->categoryTemplate()
Code: Select all
switch ($WHERE_AM_I) {
case 'page':
if ($page->template()) {
include(THEME_DIR_PHP.$page->template().'.php');
} elseif($page->categoryTemplate()){
include(THEME_DIR_PHP.$page->categoryTemplate().'.php');
} else {
include(THEME_DIR_PHP.'page.php');
}
break;
default:
include(THEME_DIR_PHP.'home.php');
break;
}
Die Abfrage zum $WHERE_AM_I hab ich als switch umgebaut, da ich diese Variable gerne für individuelle Template- & Plugin-Lösungen nutze und dadurch beliebig viele "Cases" verwenden kann ohne mich in der If-Then-Else-Schleife zu verheddern.
- jlandt
- Master Bludit
- Posts: 73
- Joined: Mon Feb 22, 2021 10:56 am
- Location: Berlin
- Has thanked: 2 times
- Been thanked: 10 times
- Contact:
Funktioniert super Ich habs noch etwas modifiziert.
---
... an der entsprechenden Stelle im Theme:
---
Code: Select all
### DYNAMIC TEMPLATE LOADING ##########################################
$templLoading = '';
$templDefault = 'home_video.php';
$errorFile = 'error_loading.txt';
$errorMessage = 'ERROR: Template file not found.';
#######################################################################
switch ($WHERE_AM_I) {
case 'page':
if ($page->template()) {
$templLoading = $page->template().'.php';
} elseif($page->categoryTemplate()) {
$templLoading = $page->categoryTemplate().'.php';
} else {
$templLoading = 'page.php';
}
break;
default:
$templLoading = $templDefault;
break;
}
if(!file_exists(THEME_DIR_PHP.$templLoading)) {
$errorMessage .= ' ('.$templLoading.')';
file_put_contents(THEME_DIR_PHP.$errorFile, $errorMessage);
$templLoading = $errorFile;
}
#######################################################################
?><!DOCTYPE html>
.
.
.
Code: Select all
<?php include(THEME_DIR_PHP . $templLoading); ?>
Gruss, Jürgen