Drupal 8: unterschiedliche Themes je nach Pfad
am 28.06.2016 - 16:18 Uhr in
Hallo miteinander,
ich möchte meine letzte übriggebliebene D6-Seite nun gleich auf D8 hieven. Die ist aber ziemlich komplex (deshalb hab ich auch noch nichts dran gemacht).
Eigentlich besteht sie aus mehreren optisch getrennten Websites, die aus Faulheit meinerseits unter der gleichen Domain laufen (wollte nicht für jeden Sch... ein eigenes System aufsetzen). Bisher bekommen sie je nach Pfad der Seite mittels Modul Page Theme unterschiedliche Themes zugeordnet.
Das heißt:
www.citykirche-schweinfurt.de/evis
sieht komplett anders aus als
www.citykirche-schweinfurt.de/wagenkirche
Page Theme gibt's für D8 (noch) nicht. Aber so wie ich D8 kenne, gibt es eine mörderkomplizierte und bis ins kleinste Detail konfigurierbare eingebaute Methode, verschiedene Seiten unterschiedlich zu themen. Ich hab sie nur noch nicht entdeckt. Wonach müsste ich denn suchen? Oder welche Tipps habt ihr sonst für mich?
Danke schon mal!
- Anmelden oder Registrieren um Kommentare zu schreiben
Da habe ich mich vor einiger
am 29.06.2016 - 06:07 Uhr
Da habe ich mich vor einiger Zeit auch mal umgeschaut und es ist momentan noch schwierig.
Themekey ist ja auch noch nicht für Drupal 8 fertig.
Die Entwickler suchen Unterstützung.
https://www.drupal.org/project/themekey
Ich habe das unter Drupal 7 mit Omega-Theme, Delta und Context für unterschiedliche Domains gelöst, ginge aber auch für Pfade.
Context gibt es in einer 8er Alpha-Version. Evt. ginge es damit auch ohne Delta.
Vielleicht kannst Du da mal weiter suchen.
Aber ich schätze, Du bist schneller dabei mit zwei Installationen.
Oder doch noch auf Drupal 7 setzen.
Ich denke, das bleibt uns noch ne Weile erhalten und bei einfachen Installationen geht das Upgrade 6>7 mit Drush relativ fix.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
weiter suchen ...
am 29.06.2016 - 07:30 Uhr
Hm, das hört sich nicht so gut an. Aber danke.
Drupal 7 ist für mich keine Option mehr. "Einfache Installation" ist es auch nicht, sondern meine komplizierteste. Und über 1000 Nodes in mehrere Einzel-Installationen auseinanderdröseln mag ich auch nicht. Ich werde mir mal die von dir genannten Module anschauen. Hat sonst noch jemand einen vernünftigen Ansatz?
---
Drupal 7.x 8.x auf https://www.citykirche-schweinfurt.de und ca. 15 weiteren (Liste auf https://www.kuschelkirche.de/webdesign-und-betreuung )
ThemeNegotiatorInterface
am 30.06.2016 - 12:45 Uhr
In D8 gibt es das sg. ThemeNegotiatorInterface. Du kannst einen ThemeNegotiator als Service definieren und dieser entscheidet wann welches Theme ausgeliefert werden soll.
<?php
namespace Drupal\my_module\Theme;
use Drupal\Core\Theme\ThemeNegotiatorInterface;
use Drupal\Core\Routing\RouteMatchInterface;
/**
* Class MyThemeANegotiator
*/
class MyThemeANegotiator implements ThemeNegotiatorInterface {
const MY_THEME_A = 'my_theme_a'
/**
* {@inheritdoc}
*/
public function applies(RouteMatchInterface $route_match) {
$route = $route_match->getRouteObject();
$is = FALSE;
// Wenn die Route bestimmte Bedingungen erfüllt, dann...
if (...) {
$is = true;
}
return $is;
}
/**
* {@inheritdoc}
*/
public function determineActiveTheme(RouteMatchInterface $route_match) {
return self::MY_THEME_A;
}
}
# my_module.services.yml
services:
my_module.theme.negotiator:
class: Drupal\my_module\Theme\BookingNegotiator
tags:
- { name: theme_negotiator, priority: 1000 }
Danke.
am 30.06.2016 - 14:13 Uhr
Danke.
Genau das meinte ich mit "mörderkomplizierte und bis ins kleinste Detail konfigurierbare eingebaute Methode". ;-)
Dann werd ich mich da mal reinknien.
---
Drupal 7.x 8.x auf https://www.citykirche-schweinfurt.de und ca. 15 weiteren (Liste auf https://www.kuschelkirche.de/webdesign-und-betreuung )