Autor Zpráva
pito
Profil
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
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
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
Děkuji moc. To je přesně ono.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: