WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 24.08.2016 09:01:57

weble
Mitglied

Bootstrap Menü Dropdown - div

Hallo Liebe Gemeinde ich hoffe auf eure Unterstützung:

Ich habe eine nette Bootstrap Navbar , leider steckt das Dropdown in einem extra div Container ,

[== Undefiniert ==]
<ul class="nav navbar-nav">
					<li class="dropdown active">
                   		<a href="#" class="dropdown-toggle" data-toggle="dropdown">Home <i class="fa fa-angle-down"></i></a>
                   		
                    </li>

                   	<li class="dropdown">
                   		<a href="#" class="dropdown-toggle" data-toggle="dropdown">Unternehmen <i class="fa fa-angle-down"></i></a>
                   		<div class="dropdown-menu">
							<ul >
	                            <li><a href="#">Firmenhistorie</a></li>
	                            <li><a href="#">Zertifikate & Zulassungen</a></li>
	                            <li><a href="#">Auszeichnungen</a></li>
	                            <li><a href="#">Presse</a></li>
	                            <li><a href="#">Stellenausschreibungen</a></li>
	                            <li><a href="#">Soziales Engagement</a></li>
	                            
	                        </ul>
                    	</div>
                    </li>

wie bekomme ich das in mein showmenu mit unter. ich hoffe sehrdas mir jemand helfen kann.


[== Undefiniert ==]
<?php 
	$open = '<li class="[if(class=menu-current||class=menu-parent){dropdown active}] [if(class==dropdown){dropdown}]">
	[if(class==menu-expand){<a href="[url]" class="dropdown-toggle active" data-toggle="dropdown">[menu_title] </a>}else {<a href="[url]">[menu_title]</a>}  ]';
	show_menu2(
		$aMenu          = 0,
		$aStart         = SM2_ROOT, 
		$aMaxLevel      = SM2_CURR+1,
		$aOptions       = SM2_ALL,
		$aItemOpen      = $open,
		$aItemClose     = '</li>',
		$aMenuOpen      = '<ul  class="[if(level==0){nav navbar-nav } else {dropdown-menu" role="menu}]">',
		$aMenuClose     = '</ul>',
		$aTopItemOpen   = true,
		$aTopMenuOpen   = true
	);?>

Vielen Dank neutral

Offline

Liked by:

cwsoft

#2 24.08.2016 09:32:25

florian
Administrator

Re: Bootstrap Menü Dropdown - div

Hallo und willkommen,

hm, das ist nicht trivial. Mit den bedingten Formatierungen ist es m.E. nicht so ohne weiteres hinzubekommen.

Vielleicht helfen Dir die Formatter weiter - siehe
http://www.websitebakers.de/sm2/media/README.de.txt
ganz unten.

Unelegante Quick&Dirty-Lösung: Die Navigation hart codieren, also als HTML ins Template einfügen und nur die Link-URLs durch [wblink42] usw. ersetzen, also <li><a href="[wblink42]">Firmenhistorie</a></li> usw. (wenn 42 = Page-ID der Seite "Firmenhistorie"). So häufig ändert sich an der Struktur solcher Seiten ja nichts.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#3 24.08.2016 09:52:28

weble
Mitglied

Re: Bootstrap Menü Dropdown - div

Vielen Dank für die Schnelle Antwort.
Werde es wohl erstmal so Umsetzten müssen. vielleicht kommt ja eine effiziente Lösung noch zu Stande smile  thumb_up

Offline

#4 24.08.2016 14:42:01

stefanek
Developer

Re: Bootstrap Menü Dropdown - div

Ja, show_menu2 aus der Box ist etwas beschränkt in dieser Hinsicht. Denn es können nur in den OPEN Elementen Formatierungen vorgenommen werden.

Es geht aber mit einem kleinen Umweg.

Dein $aItemOpen wird so erweitert, dass bei class==menu-expand der DIV hinter den A-Tag angefügt wird.
Anschließend suchen wir nach allen diesen Vorkommen, schneiden sie aus bis zum nächsten schließenden UL-Tag und fügen es anschließend wieder hinein, nun mit einem schließenden DIV-Tag.

[== PHP  ==]
<?php
// prevent this file from being accessed client side
defined('WB_PATH') or die(header('Location: ../../../index.php'));
defined('START_LEVEL') or define('START_LEVEL', 0); // SM2 START LEVEL

$open = '<li class="[if(class=menu-current||class=menu-parent){dropdown active}] [if(class==dropdown){dropdown}]">'.
		'[if(class==menu-expand){<a href="[url]" class="dropdown-toggle active" data-toggle="dropdown">[menu_title] </a>
			}else {
		 <a href="[url]">[menu_title]</a>
		 } ]'.
		'[if(class==menu-expand){<div class="dropdown-menu">}]';
		
$TopNav = show_menu2(
	$aMenu          = 0,
	$aStart         = SM2_ROOT + (START_LEVEL), 
	$aMaxLevel      = SM2_CURR+2,
	$aOptions       = SM2_ALL | SM2_BUFFER | SM2_PRETTY,
	$aItemOpen      = $open,
	$aItemClose     = '</li>',
	$aMenuOpen      = '<ul class="[if(level=='.(START_LEVEL).'){nav navbar-nav } else {dropdown-menu" role="menu}]">',
	$aMenuClose     = '</ul>',
	$aTopItemOpen   = true,
	$aTopMenuOpen   = true
);

$search = '/<div class=\"dropdown\-menu\">(.*?)<\/ul>/s';
$replacement = '<div class="dropdown-menu">${1}</ul></div>';
$TopNav = preg_replace($search, $replacement, $sTopNav);

Den obigen Code solltest Du am besten in einer Extra-Datei in Deinem Template-Ordner schreiben.
Benenne sie TopNav.php oder so ähnlich.

In der index.php includierst Du diese Datei mit:

include dirname(__FILE__).'/TopNav.php';

Wenn Du die "leeren" class=" " Attribute auch noch aus dem Menü haben willst (überflüßig), kannst Du ans Ende der obigen Datei noch schreiben:

$TopNav = str_replace(' class=" "', "", $TopNav); // leere class attribute entfernen

Dort wo Du das Menü ausgeben möchtest, schreibst Du dann einfach nur noch

<?php echo $TopNav ?>

Probier es mal aus.
Müßte funktionieren.

Gruß,
Christian

P.S. warum verwende ich in dem obigen Script eine START_LEVEL Konstante?
Weil ich dann mit der Änderung nur dieser Konstante (von 0 auf 1) Multilinguale Menüs erstellen kann, die meistens im LEVEL = 1 starten.

Beitrag geändert von stefanek (10.01.2017 13:45:58)


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

Liked by:

thanks

#5 24.08.2016 15:14:23

rjgamer
Developer

Re: Bootstrap Menü Dropdown - div

Cool stefafenk  thumb_up

Offline

#6 10.01.2017 13:43:14

stefanek
Developer

Re: Bootstrap Menü Dropdown - div

Habe den obigen Code nochmal etwas überarbeitet wegen Einfachheit.

Ein grundsätzlicher Tipp von mir: wenn man aufwendige Show_Menu Konstrukte hat, ist es praktisch, sie auch komplett in eine separate Datei zu verschieben (wie im obigen Beispiel).

Oft greift man in Templates auf die gleichen oder ähnlichen Menü HTML-Strukturen zurück, da muss man das Rad auch nicht neu erfinden sondern kann das Vorhandene leicht abwandeln und wiederverwerten.

Und es sorgt auch für mehr Übersicht im Template selbst. wink

Gruß,
Chris

Beitrag geändert von stefanek (10.01.2017 13:47:45)


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

Fußzeile des Forums

up