Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü
-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es dir, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachte, dass du nur Beiträge sehen kannst, die in Teilen des Forums geschrieben wurden, auf die du aktuell Zugriff hast.

Beiträge anzeigen-Menü

Themen - wallsinbavaria

#1
Hallo,

Es hat mich schon einige Zeit lang "genervt", dass die Untermenus nicht in korrektem HTML waren. Bisher war das egal, weil es von den Browsern dennoch richtig dargestellt wurde.
Mit dem Internet Explorer 8 aber wurden die Menus immer "länger" - der Abstand zwischen den einzelnen Unterpunkten wurde durch überflüssige <ul><li ..> zu groß.

Um das zu beheben habe ich in meiner index.php die zuständigen Funktionen angepasst. Der Einfachheit halber hier die beiden überabeiteten Funktionen:
// ------------------------------------------------------------------------------
// Aufbau des Hauptmenüs, Rückgabe als String
// ------------------------------------------------------------------------------
function getMainMenu() {
global $CONTENT_DIR_ABS;
global $CONTENT_FILES_DIR;
global $CAT_REQUEST;
global $PAGE_REQUEST;
global $specialchars;
global $mainconfig;

$mainmenu = "<ul class="mainmenu">";
// Kategorien-Verzeichnis einlesen
$categoriesarray = getDirContentAsArray($CONTENT_DIR_ABS, false, false);
// numerische Accesskeys für angezeigte Menüpunkte
$currentaccesskey = 0;
// Jedes Element des Arrays ans Menü anhängen
foreach ($categoriesarray as $currentcategory) {
// Wenn die Kategorie keine Contentseiten hat, zeige sie nicht an
if (getDirContentAsArray("$CONTENT_DIR_ABS/$currentcategory", true, false) == "")
$mainmenu .= "";
// Aktuelle Kategorie als aktiven Menüpunkt anzeigen...
elseif ($currentcategory == $CAT_REQUEST) {
$currentaccesskey++;
$mainmenu .= "<li class="mainmenu"><a href="index.php?cat=$currentcategory" class="menuactive" accesskey="$currentaccesskey">".catToName($currentcategory, false)."</a></li>";
if ($mainconfig->get("usesubmenu") > 0)
$mainmenu .= "<li class="mainmenu_submenu">".getDetailMenu($currentcategory)."</li>";
}
// ...alle anderen als normalen Menüpunkt.
else {
$currentaccesskey++;
$mainmenu .= "<li class="mainmenu"><a href="index.php?cat=$currentcategory" class="menu" accesskey="$currentaccesskey">".catToName($currentcategory, false)."</a></li>";
if ($mainconfig->get("usesubmenu") == 2)
$mainmenu .= "<li class="mainmenu_submenu">".getDetailMenu($currentcategory)."</li>";
}
}
// Rückgabe des Menüs
return $mainmenu . "</ul>";
}


// ------------------------------------------------------------------------------
// Aufbau des Detailmenüs, Rückgabe als String
// ------------------------------------------------------------------------------
function getDetailMenu($cat){
global $ACTION_REQUEST;
global $QUERY_REQUEST;
global $CONTENT_DIR_ABS;
global $CONTENT_FILES_DIR;
global $CAT_REQUEST;
global $PAGE_REQUEST;
global $EXT_DRAFT;
global $language;
global $specialchars;
global $mainconfig;

if ($mainconfig->get("usesubmenu") > 0)
$cssprefix = "submenu";
else
$cssprefix = "detailmenu";

$detailmenu = "<ul class="detailmenu">";
// Hack für Ineternet-Explorer //
if ($cssprefix == "submenu")
$detailmenu = "";
// part 1 Hack //
// Sitemap
if (($ACTION_REQUEST == "sitemap") && ($mainconfig->get("usesubmenu") == 0))
$detailmenu .= "<li class="detailmenu"><a href="index.php?action=sitemap" class="".$cssprefix."active">".$language->getLanguageValue0("message_sitemap_0")."</a></li>";
// Suchergebnis
elseif (($ACTION_REQUEST == "search") && ($mainconfig->get("usesubmenu") == 0))
$detailmenu .= "<li class="detailmenu"><a href="index.php?action=search&amp;query=".$QUERY_REQUEST."" class="".$cssprefix."active">".$language->getLanguageValue1("message_searchresult_1", html_entity_decode($QUERY_REQUEST))."</a></li>";
// Entwurfsansicht
elseif (($ACTION_REQUEST == "draft") && ($mainconfig->get("usesubmenu") == 0))
$detailmenu .= "<li class="detailmenu"><a href="index.php?cat=$cat&amp;page=$PAGE_REQUEST&amp;action=draft" class="".$cssprefix."active">".pageToName($PAGE_REQUEST.$EXT_DRAFT, false)." (".$language->getLanguageValue0("message_draft_0").")</a></li>";
// "ganz normales" Detailmenü einer Kategorie
else {
// Content-Verzeichnis der aktuellen Kategorie einlesen
$contentarray = getDirContentAsArray("$CONTENT_DIR_ABS/$cat", true, false);

// Kategorie, die nur versteckte Seiten enthält: kein Detailmenü zeigen
if ($contentarray == "") {
return "";
}

// alphanumerische Accesskeys (über numerischen ASCII-Code) für angezeigte Menüpunkte
$currentaccesskey = 0;

/* ################# */
/* HACK ANFANG */
/* ################# */
// nur eine Inhaltsseite in aktueller Kategorie? Detailmenü ohne Inhalt zurückgeben!
if (count($contentarray) == 1)
return "";
/* ################# */
/* HACK ENDE */
/* ################# */


// Jedes Element des Arrays ans Menü anhängen
foreach ($contentarray as $currentcontent) {
$currentaccesskey++;
// Hack für Internet Explorer - Fortsetzung //
if ($cssprefix == "submenu") {
if (substr($currentcontent, 0, strlen($currentcontent) - 4) == $PAGE_REQUEST) {
$detailmenu .= "<a href="index.php?cat=$cat&amp;page=".
substr($currentcontent, 0, strlen($currentcontent) - 4).
"" class="".$cssprefix."active" accesskey="".chr($currentaccesskey+96)."">".
pageToName($currentcontent, false).
"</a>";
}
// ...alle anderen als normalen Menüpunkt.
else {
$detailmenu .= "<a href="index.php?cat=$cat&amp;page=".
substr($currentcontent, 0, strlen($currentcontent) - 4).
"" class="".$cssprefix."" accesskey="".chr($currentaccesskey+96)."">".
pageToName($currentcontent, false).
"</a>";
}
}
// zusätzlich natürlich noch Aufbau eines Detailmenüs //
else {
// end part II - Hack f. Internet Explorer 8 //
// Aktuelle Inhaltsseite als aktiven Menüpunkt anzeigen...
if (substr($currentcontent, 0, strlen($currentcontent) - 4) == $PAGE_REQUEST) {
$detailmenu .= "<li class="detailmenu"><a href="index.php?cat=$cat&amp;page=".
substr($currentcontent, 0, strlen($currentcontent) - 4).
"" class="".$cssprefix."active" accesskey="".chr($currentaccesskey+96)."">".
pageToName($currentcontent, false).
"</a></li>";
}
// ...alle anderen als normalen Menüpunkt.
else {
$detailmenu .= "<li class="detailmenu"><a href="index.php?cat=$cat&amp;page=".
substr($currentcontent, 0, strlen($currentcontent) - 4).
"" class="".$cssprefix."" accesskey="".chr($currentaccesskey+96)."">".
pageToName($currentcontent, false).
"</a></li>";
}

}
}
// Rückgabe des Menüs
if ($cssprefix == "submenu") {
return $detailmenu;
}
return $detailmenu . "</ul>";
}
}

Damit werden sowohl bei einem "alleinstehendem" waagerechtem Detailmenu wie bei untergeordneten senkrechten Submenus die Abstände richtig definiert und es kommt nicht zu überflüssigen Umbrüchen.
Sehen kann man das unter http://eb-kastulus-rb.bplaced.net