Autor | Zpráva | ||
---|---|---|---|
pito Profil |
#1 · Zasláno: 15. 2. 2018, 10:33:38
Zdravím,
Mám menu kde když kliknu a odkaz tak se mi zabarvi. Jenže když mám v odkazu ještě pod odkazy a kliknu na nějaký pod odkaz tak se mi to nezabarví to už nevím jak udělat. Tady je jak to mám udělané: <?php $menu = array( 'index' => 'Nástěnka', 'statistic' => 'Statistika', 'article' => 'Články', 'history' => 'Historie', 'contact' => 'Kontakt' ); ?> <?php $pagename = basename($_SERVER['PHP_SELF']); $pagename = str_replace('.php', '', $pagename); ?> <nav class="navigation"> <ul class="list-unstyled"> <?php foreach( $menu as $menpage => $menlabel ) : ?> <li<?php if($menpage == $pagename){echo ' class="active"';} ?>><a href="<?php echo $menpage ; ?>.php"><span class="nav-label"><?php echo $menlabel ; ?></span></a></li> <?php endforeach ?> </ul></nav> a tady mám odkazy i s pod odkazy v HTML: <ul class="list-unstyled"> <li> <a href="index.php"><i class="fa fa-bookmark-o"></i><span class="nav-label">Nástěnka</span></a> </li> <li class="has-submenu"> <a href="statistic.php"><i class="fa fa-bar-chart-o"></i><span class="nav-label">Statistika</span></a> <ul class="list-unstyled"> <li><a href="graf.php">Grafy</a></li> <li><a href="top.php">Top 5</a></li> </ul> </li> <li><a href="article.php"><i class="fa fa-file-text-o"></i><span class="nav-label">Články</span></a> <li><a href="history.php"><i class="fa fa-history"></i><span class="nav-label">Historie</span></a></li> <li><a href="contact.php"><i class="fa fa-envelope-o"></i><span class="nav-label">Kontakt</span></a></li> </ul> |
||
Keeehi Profil |
#2 · Zasláno: 15. 2. 2018, 12:15:38
To PHP negeneruje to HTML co jsi sem dal. Protože toto generuje jen hlavní odkazy a ne pododkazy. Takže by bylo vhodné se nejdříve dát reálný PHP kód, nebo vysvětlit, jak je možné, že v HTML je něco, co PHP negeneruje.
|
||
pito Profil |
#3 · Zasláno: 15. 2. 2018, 12:44:01
ne to druhé je jen ukázka v HTML jak vypadají ty pododkazy. Ale právě nevím jak to začlenit do toho prvního kódu ty pododkazy
|
||
Keeehi Profil |
Takže ty nemáš problém s barvením odkazů, ale se samotným jejich vytvořením.
<?php $menu = [ [ 'link' => 'index.php', 'label' => 'Nástěnka', 'icon' => 'bookmark-o' ], [ 'link' => 'statistic.php', 'label' => 'Statistika', 'icon' => 'bar-chart-o', 'submenu' => [ [ 'link' => 'graf.php', 'label' => 'Grafy' ], [ 'link' => 'top.php', 'label' => 'Top 5' ] ] ], [ 'link' => 'article.php', 'label' => 'Články', 'icon' => 'file-text-o' ], [ 'link' => 'history.php', 'label' => 'Historie', 'icon' => 'fa-history' ], [ 'link' => 'contact.php', 'label' => 'Kontakt', 'icon' => 'fa-envelope-o' ] ]; $pagename = basename($_SERVER['PHP_SELF']); ?> <nav class="navigation"> <ul class="list-unstyled"> <?php foreach($menu as $menuItem) { ?> <li class="<?php if (!empty($menuItem['submenu'])) { echo 'has-submenu'; } if ($menuItem['link'] === $pagename || (!empty($menuItem['submenu']) && in_array($pagename, array_map(function ($v) { return $v['link']; }, $menuItem['submenu']), true))) { echo ' active'; } ?>"> <a href="<?php echo $menuItem['link']; ?>"><i class="fa fa-<?php echo $menuItem['icon']; ?>"></i><span class="nav-label"><?php echo $menuItem['label']; ?></span></a> <?php if (!empty($menuItem['submenu'])) { ?> <ul class="list-unstyled"> <?php foreach($menuItem['submenu'] as $submenuItem) { ?> <li<?php if ($submenuItem['link'] === $pagename) { echo ' class="active"'; } ?>><a href="<?php echo $submenuItem['link']; ?>"><?php echo $submenuItem['label']; ?></a></li> <?php } ?> </ul> <?php } ?> </li> <?php } ?> </ul> |
||
pito Profil |
#5 · Zasláno: 16. 2. 2018, 09:55:48
Děkuji moc. To je přesně ono.
|
||
Časová prodleva: 17 dní
|
|||
pito Profil |
#6 · Zasláno: 5. 3. 2018, 16:29:52
Keeehi:
Mám trošku problém, když ten zápis uložím do hostingu tak se mi vypíše chyba: Parse error: syntax error, unexpected '[' in Jinak na localhostu mi to funguje.
|
||
Tomášeek Profil |
pito:
Změň hosting na nějaký, který podporuje aktuální verzi PHP. To je doporučení i kvůli bezpečnosti, apod. Pokud chceš zůstat u stávajícího hostingu, pracuj se starším způsobem deklarace pole array() namísto novějšího [] .
|
||
Keeehi Profil |
#8 · Zasláno: 5. 3. 2018, 17:14:54
Nový způsob zápisu umí PHP od veze 5.4. To znamená, že na serveru je verze 5.3 nebo starší. Podpora pro 5.3 skončila 14. srpna 2014, tedy před třemi a půl lety. Od té doby se pro ní nevydávají aktualizace, tedy ani ty bezpečnostní.
Nejstarší verze, která momentálně dostává podporu je 5.6 a to je jen z důvodu, že této poslední pětkové verzi byla extrémně prodloužena doba vydávání bezpečnostních záplat. Jinak by nejstarší podporovanou verzí byla 7.0. Nicméně jak 5.6 tak 7.0 přestanou dostávat bezpečnostní záplaty na konci tohoto roku. Proto by to chtělo si najít hosting PHP 7.1 nebo 7.2 které jsou ještě ve fázi aktivní podpory a ne jen vydávání bezpečnostních záplat. Přehled podporovaných verzí najdeš na php.net/supported-versions.php. |
||
Časová prodleva: 6 let
|
0