Basic page soll im Subtheme angezeigt werden
am 12.03.2014 - 11:35 Uhr in
Hallo
Ich möchte mehrere Basic pages (Statische Seiten) in einem Subtheme anzeigen, da sich diese Seiten von der Startseite (base theme) unterscheiden. Einzig die Navigation ist dieselbe. Leider finde ich in Drupal 7.26 keine Einstellungsmöglichkeit, in der ich der statischen Seite sagen kann, es soll im Subtheme dargestellt werden. Der Inhalt wird immer auf der Startseite ausgegeben, sobald ich in der Navigation auf einen Link klicke. Ich kenne das von Typo3 oder Joomla, dass ich für jede Seite die ich anlege, ein entsprechendes Theme auswählen kann.
Würde mich freuen, wenn jemand eine Idee für mich hat.
Viele Grüße
edge
- Anmelden oder Registrieren um Kommentare zu schreiben

Hallo,da hilft es nichts die
am 12.03.2014 - 13:55 Uhr
Hallo,
da hilft es nichts die Terminologie von anderen CMS zu verwenden und von Drupal ein entsprechendes Verhalten zu erwarten ;)
Subthemes sind in Drupal ein technisches Konzept mit denen man vorhandene Themes anpassen ('überschreiben') kann, ohne diese im Code selbst zu ändern.
Wahrscheinlich ist es gar nicht nötig, gleich das ganze Theme zu wechseln (dafür gäbe es auch Methoden und Module, die Du dir leicht mit 'switch theme drupal' ergooglen könntest) sondern unterschiedliche Template-Dateien anzulegen.
Für die Grundlagen des Themings bei Drupal könntest Du Dir das mal durchlesen: https://drupal.org/documentation/theme
Gruß
Christian
Danke für die Info. Nach
am 13.03.2014 - 08:43 Uhr
Danke für die Info. Nach einigen weiteren Recherchen hab ich das Problem nun lösen können.
Was habe ich gemacht:
Anstelle des subthemes habe ich eine page--[inhaltstyp].tpl.php in meinem basetheme hinzugefügt. "[inhaltstyp]" steht dabei für die statischen Seiten, die im gesonderten Template erscheinen sollen. Dafür habe ich in Drupal einen neuen Inhaltstyp erstellt.
Die page--[inhaltstyp].tpl.php wird aber nur benutzt, wenn ich eine template.php Datei in meinem Theme benutze, in der ich folgenden Inhalt hinzufügen muss:
function mytheme_preprocess_page(&$vars) {if (isset($vars['node']->type)) { // We don't want to apply this on taxonomy or view pages
// Splice (2) is based on existing default suggestions. Change it if you need to.
array_splice($vars['theme_hook_suggestions'], -1, 0, 'page__'.$vars['node']->type);
// Get the url_alias and make each item part of an array
$url_alias = drupal_get_path_alias($_GET['q']);
$split_url = explode('/', $url_alias);
// Add the full path template pages
// Insert 2nd to last to allow page--node--[nid] to be last
$cumulative_path = '';
foreach ($split_url as $path) {
$cumulative_path .= '__' . $path;
$path_name = 'page' . $cumulative_path;
array_splice($vars['theme_hook_suggestions'], -1, 0, str_replace('-','_',$path_name));
}
// This does just the page name on its own & is considered more specific than the longest path
// (because sometimes those get too long)
// Also we don't want to do this if there were no paths on the URL
// Again, add 2nd to last to preserve page--node--[nid] if we do add it in
if (count($split_url) > 1) {
$page_name = end($split_url);
array_splice($vars['theme_hook_suggestions'], -1, 0, 'page__'.str_replace('-','_',$page_name));
}
}
}
"mytheme" muss demnach mit dem eigenen Themennamen ersetzt werden. Die Info über den o.g. code habe ich hier gefunden: Drupal 7.0 Preprocess Page Templates – theme_hook_suggestions
Viele Grüße
edge