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.
pito
Profil
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
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.

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:

0