WebsiteBaker Support (2.13.x) > Hilfe & Support (deutsch)
SHOW_MENU2 ... Bedingte Formatierung
markherrmann:
Hi Leute, ich bin am verzweifeln (ich Blicke show_menu2 nicht)
Ich habe rumprobiert um die folgende Navigationsstruktur für W3-CSS abzubilden:
--- Code: ---<!-- Navigationbar -->
<div class="w3-bar w3-black">
<div id="navbar" class="w3-bar-block w3-sand w3-hide w3-hide-large w3-hide-medium">
<a href="#" class="w3-bar-item w3-button w3-hover-blue">Link 1</a>
<a href="#" class="w3-bar-item w3-button w3-hover-blue">Link 2</a>
<a href="#" class="w3-bar-item w3-button w3-hover-blue">Link 3</a>
<div class="w3-dropdown-hover">
<button class="w3-button w3-sand w3-hover-sand">Dropdown</button>
<div class="w3-dropdown-content w3-bar-block w3-card-4">
<a href="#" class="w3-bar-item w3-button w3-sand w3-hover-blue">Link DD1</a>
<a href="#" class="w3-bar-item w3-button w3-sand w3-hover-blue">Link DD2</a>
<a href="#" class="w3-bar-item w3-button w3-sand w3-hover-blue">Link DD3</a>
</div>
</div>
<button onclick="document.getElementById('id01').style.display='block'" class="w3-button w3-right w3-black w3-hover-blue w3-hide-small w3-hide-medium">BTN-Rechts</button>
</div>
</div>
--- End code ---
Ein Test mit der Fußzeilennavigation ging noch leicht alle sind ohne Submenüs:
--- Code: ---<div class="w3-bar w3-margin-top w3-small"><?php show_menu2(2, SM2_ROOT, SM2_START, SM2_ALL, "\n".'<a href="[url]" class="w3-bar-item w3-margin-right w3-border w3-button w3-tiny w3-padding-small">[menu_title]</a>'.'', '', '', '', false, false);?>
</div>
--- End code ---
Aber das Menü oben enthält ein Dropdown-Content, der auch wieder geschlossen sein möchte. Die If Statements gehen soweit ich das gelesen haben nur im Opener-Teil.
Hat sich jemand von Euch schon damit intensiver beschäftigt? Ich bin mit meinem Latein am Ende. Hab schon überlegt eine Funktion fürs auslesen Navigation zu schreiben.
crnogorac081:
not a solution but this may help you with your code
--- Code: ---$sTopNav = '';
$sItemOpen = '<li class="nav-item[if (class==menu-expand){ dropdown}][if(class=menu-current||class=menu-parent){ parent}]">'.
'<div class="d-flex">'.
'<a class="nav-link[if(class=menu-current){ active}]" href="[url]">'.
'<span>[menu_title]</span></a>'.
'[if (class==menu-expand){'.
'<a class="nav-link-toggle dropdown-toggle hide-arrow ms-auto" href="#" role="button" aria-haspopup="true" aria-expanded="false">
<i class="bi bi-chevron-down"></i>
</a>}]'.
'</div>';
$topNav = show_menu2(
1,
SM2_ROOT + $iMultiLang, // If you have First menu level /en/, /de/ , use: SM2_ROOT + $iMultiLang,
SM2_ALL,
SM2_ALL|SM2_NUMCLASS|SM2_PRETTY|SM2_BUFFER,
$sItemOpen,
'</li>',
'<ul [if(level==0){class="navbar-nav"} else {class="dropdown-menu"}]>',
'</ul>'
);
$topNav = str_replace('class=""', '', $topNav);
--- End code ---
markherrmann:
will try it... thank you
sternchen8875:
Bin nicht ganz sicher, ob es das ist, was du benötigst, weil deine Vorlage und dein Testcode doch unterschiedlich sind.
Der Code der Vorlage besagt, das es (eigentlich) ein hidden-Menü ist, das z.b. für eine Navigation auf Mobilgeräten verwendet wird. So hab ich es erstmal gebaut
--- Quote ---<div class="w3-bar w3-black">
<div id="navbar" class="w3-bar-block w3-sand" style="display: none;">
<?php
// einzelne Menupunkte
$sItemOpen = '<li class="[class] w3-hide-small w3-bar-item w3-button w3-hover-blue level[level] [if(class==menu-expand&&level==0){w3-dropdown-hover}]">[if(class==menu-expand){<a href="[url]">[menu_title]</a>}else{<a href="[url]" class="w3-padding-8 level[level]">[menu_title]</a>}]';
// home-button
$sTopItemOpen = '<li class="w3-border-right"><a href="'.WB_URL.'" class="w3-hover-none w3-padding-8"><i class="fa fa-home" aria-hidden="true"></i></a>';
// button rechts
$sTopItemOpen .= '<li class="w3-right"><a class="w3-bar-item w3-button w3-padding-0 w3-right" href="javascript:void(0)" onclick="closeMenu()" title="Toggle Navigation Menu">Close <i class="fa fa-bars"></i></a>';
echo show_menu2(
$aMenu = 1,
$aStart = SM2_ROOT,
$aMaxLevel = SM2_ALL,
$aOptions = SM2_ALL|SM2_PRETTY|SM2_BUFFER,
$aItemOpen = $sItemOpen,
$aItemClose = '</li>',
$aMenuOpen = '<ul class="w3-dropdown-content w3-bar-block w3-card-4 level[level]" style="max-width:180px;">',
$aMenuClose = '</ul>',
$aTopItemOpen = $sTopItemOpen,
$aTopMenuOpen = '<ul class="w3-bar-block w3-sand">'
);
?>
</div>
</div>
<br>
<button onclick="showMenu()" title="Toggle Navigation Menu"" class="w3-button w3-right w3-black w3-hover-blue w3-hide-small w3-hide-medium">BTN-Rechts</button>
--- End quote ---
dieses Menü ist anfangs geschlossen und wird erst bei Klick auf den Button BTN Rechts geöffnet. Im aufgeklappten Menü ist dann wieder ein Close-Button
$sTopItemOpen hat zwei Zeilen, in der ersten Zeile ein Home-Button. War nicht Teil deines Menü's. Hab es aber drin gelassen, vielleicht braucht es ja mal wer
Möchtest du diesen Home-Button nicht haben, kommentiere die erste Definition von $sTopItemOpen aus und entferne in der zweiten Definition den Punkt vor dem = ($sTopItemOpen .= ....
und so schaut es dann aus
noch das JS zum Öffnen und Schließen des Menüs
--- Code: ---<script>
function showMenu() {
document.getElementById("navbar").style.display = "block";
}
function closeMenu() {
document.getElementById("navbar").style.display = "none";
}
</script>
--- End code ---
sternchen8875:
und so hab ich es als statisches Menü im Einsatz
Navigation
[0] Message Index
[#] Next page
Go to full version