Sub-Menü wird bei einem bestimmten Inhaltstyp nicht angezeigt

am 06.04.2011 - 14:57 Uhr in
Bei einer vorhandenen Installation (Drupal 6) wird bei einem Inhaltstyp das Untermenü nicht angezeigt.
Inhaltstyp Cafeteria ohne Submenü (Submenü erscheint, wenn man oben auf Gastronomie klickt)
http://www.studentenwerk-stuttgart.de/cafeteria/menseria-esslingen-ii
Inhaltstyp Wohnheime mit Submenü
http://www.studentenwerk-stuttgart.de/wohnheim/allmandring-i
Das Submenü ist ein Block, in der Konfiguration sind keine Gründe ersichtlich, warum dieser Block beim Inhaltstyp Cafeteria nicht angezeigt werden sollte.
Es sind keine Seiten oder User eingetragen, für den der Block nicht sichtbar sein sollte.
Ebenso sind in den Templates keine diesbezüglichen Unterschiede sichtbar.
Wer hat eine Idee, wo ich noch nach Unterschieden suchen kann?
- Anmelden oder Registrieren um Kommentare zu schreiben
Ist Panels installiert und
am 06.04.2011 - 18:50 Uhr
Ist Panels installiert und überschreibt die Ansicht für den Inhaltstyp Wohneim? Bzw. Cafeteria?
Das dachte ich zuerst, ist
am 06.04.2011 - 19:01 Uhr
Das dachte ich zuerst, ist aber nicht installiert.
D.h. es gibt zwar einen Ordner panels hier:
sites\all\modules\community\cck\includes\panels
sites\all\modules\community\cck\modules\fieldgroup\panels
sites\all\modules\community\cck\modules\nodereference\panels
sites\all\modules\community\cck\modules\userreference\panels
aber es gibt kein Modul Panels unter Modulen.
<div class="navis"> Hast du
am 06.04.2011 - 21:10 Uhr
<div class="navis">
Hast du danach schon mal alle Dateien im Theme Ordner durchsucht?
Der div fehlt bei Cafeteria...
Sind eigene Module aktiv? Oder welche die Templates überschreiben?
Wie sieht das Ganze in einem Standard-Theme aus?
Köntest auch noch die DB nach dem String durchsuchen...
Danke, das ist genau die
am 07.04.2011 - 06:49 Uhr
Danke, das ist genau die Sorte Fragen, die ich brauche...
1. In der Datenbank kommt der String navis nicht vor.
2. In den Dateien kommt er in der page.tpl.php vor und zwar in diesem Zusammenhang:
---------------------------
<?php if ($panel_navi_2): ?>
<div class="navis">
<?php endif; ?>
u.s.w. wenn gesetzt, dann gib den String $panel_navi_2 aus und schließe den DIV-Container
--------------------------
Ich bin mit dem Debugger an die Stelle in der Datei theme.inc gegangen, wo das Template page.tpl.php verarbeitet wird. (function theme_render_template($template_file, $variables) )
Bei dem Array $variables steht der Code für das Submenü in der Variante mit Submenü in $variables['panel_navi_2'] .
Bei der Variante ohne Submenü ist der Wert leer.
Ich bin auch an die Stellen gewandert, wo das Array $variables aufgebaut wird , das wird aber schnell so komplex, daß ich nicht rückverfolgen kann, wo der Unterschied in der Verarbeitung auftritt.
3. Eigene Module gibt es:
Die managen die Darstellung der Wohnheimsuche bzw. der Bilder-Galerie mit JavaScript.
Da ist nichts zu erkennen, daß die Einfluss nehmen auf das Submenü.
4. auf anderes Theme umstellen
Ich habe mal versuchsweise auf Garland umgestellt.
Da wird aber erst mal gar nichts angezeigt, kein einziges Menü.
Die Unterschiede sind schon gewaltig und es wird an verschiedenen Stellen auf Templates aus dem Benutzerdefinierten Theme verlinkt.
Das jetzt alles umzubauen, wäre sehr aufwändig.
Ich habe das Theme auch schon recht gründlich auf Stellen untersucht, wo Fallunterschiede sein könnten für die beiden Inhaltstypen.
Bringt auch nicht wirklich weiter...
Und diese Variable
am 07.04.2011 - 07:28 Uhr
Und diese Variable
$panel_navi_2
ist die noch irgendwo im Theme-Ordner zu finden?Z.B. in einer template.php...
Wenn das Menu immer auftauchen soll könntest du die if Abfrage einfach weg nehmen?
Was natürlich nicht beantwortet woher die Konstruktion kommt.
Da aber in Garland das Menu gar nicht angezeigt wird wohl vom Theme und nicht aus einem Modul.
Die Variable $panel_navi_2
am 07.04.2011 - 08:37 Uhr
Die Variable $panel_navi_2 taucht nirgendwoanders in den Dateien auf, was mich anfangs sehr verwirrt hat.
Sie wird in der Datei themes.inc hier gebaut:
function theme_render_template($template_file, $variables) {
extract($variables, EXTR_SKIP);
...
Es gibt eine Variable $variables['panel_navi_2'] und die wird mit denm Befehl extract umgewandelt in $panel_navi_2.
Wenn ich die IF-Abfrage in der page.tpl.php weglasse, dann wird der DIV-Contanier gebaut, es steht aber nichts drinnen, weil die Variable $panel_navi_2 in dem Fall wo das Untermenü nicht gezeigt wird, einfach leer ist.
Die Lösung steckt also in der Frage, warum diese Variable leer ist.
Ich sehe mir gerade die template.php näher an, da sind schon viele Funktionen drinnen, die in der Garland nicht stehen, evt. ist da ja irgendeine Logik versteckt...
Hast du eigentlich devel und
am 07.04.2011 - 09:44 Uhr
Hast du eigentlich devel und den theme developer installiert?
Meinst du das mit debugger?
Kannst in der template.php
am 07.04.2011 - 09:52 Uhr
Kannst in der template.php suchen nach sowas wie
['panel_navi_2']
Nächster Versuch:
In der template.php innerhalb von
<?php
function dein_theme_preprocess_page(&$vars, $hook) {
...
}
?>
die Variable selber befüllen.
devel ist installiert, theme
am 07.04.2011 - 09:55 Uhr
devel ist installiert, theme developer müßte ich schauen.
Aber als Debugger verwende ich den PHPEd, wo ich Breakpoints setzen kann an bestimmten Stellen und den Inhalt der Variablen ausgeben lassen kann.
Damit habe ich mich bisher noch in die Innereien eines jeden Projekts rein geschafft.
Aber dieses Projekt ist so komplex, daß ich sogar damit nicht mehr weiter komme.
Der String 'panel_navi_2'
am 07.04.2011 - 09:59 Uhr
Der String 'panel_navi_2' taucht nirgendwo auf außer in der page.tpl.php
preprocess_page taucht nur in Zusammenhang mit dieser Funktion auf:
function phptemplate_preprocess_page(&$vars) {
$vars['tabs2'] = menu_secondary_local_tasks();
// Hook into color.module
if (module_exists('color')) {
_color_page_alter($vars);
}
}
Keine Ahnung, was es mit dem color.modul auf sich hat.
Das werde ich mir jedenfalls mal näher ansehen.
Mit dem Theme Developer
am 07.04.2011 - 10:19 Uhr
Mit dem Theme Developer kannst du sehen von welcher Funktion bzw. Template-Datei ein Element erzeugt wird.
Und Vorschläge zum überschreiben.
In den Preprocess-Functions kannst du selbst Variablen definieren:
http://drupal.org/node/223430