Autor Zpráva
Jan Žák
Profil
Dobrý den všem, rád bych se poradil se zkušenějšími ohledně rozevíracího menu. Menu mám tvořené pomocí in_array(basename($_SERVER['PHP_SELF']). Ve kterém definuji jednotlivé názvy souborů. To proto, že když je menu otevřené a jsem na určité stránce, menu zůstává rozevřené díky class="active" a classs="current". Vše funguje dobře, jen při výběru jiného odkazu z menu se stane, že menu zůstane na sekundu otevřené celé (nedávám sem celý sidebar, kvůli velkému obsahu textu).

Moje otázka je, dá se to nějak zjednodušit, nebo je nějaká lepší a efektivnější cesta jak toto vyřešit? Děkuji moc všem za případné rady.

<div id="sidebar">

  <!-- Main navigation -->
  <ul class="navigation widget">
  
    <li <?php if (in_array(basename($_SERVER['PHP_SELF']), array('products.php', 'products-add.php', 'products-edit.php', 'stock.php', 'stock-add.php', 'stock-edit.php', 'contracts.php', 'contracts-add.php', 'contracts-edit.php', 'contracts-watch.php', 'contracts-search.php', 'offers.php', 'offers-add.php', 'offers-edit.php', 'offers-show.php', 'orders-issued.php', 'orders-issued-add.php', 'orders-issued-edit.php', 'orders-issued-show.php', 'shipping-orders.php', 'shipping-orders-add.php', 'shipping-orders-edit.php', 'shipping-orders-show.php', 'reservations.php', 'reservations-add.php', 'reservations-edit.php', 'reservations-show.php', 'receipts.php', 'receipts-add.php', 'receipts-edit.php', 'receipts-show.php', 'picklists.php', 'picklists-add.php', 'picklists-edit.php', 'picklists-show.php'))) echo 'class="active"';?>>
    <a href="#" title="" class="expand" <?php if (in_array(basename($_SERVER['PHP_SELF']), array('products.php', 'products-add.php', 'products-edit.php', 'stock.php', 'stock-add.php', 'stock-edit.php', 'contracts.php', 'contracts-add.php', 'contracts-edit.php', 'contracts-watch.php', 'contracts-search.php', 'offers.php', 'offers-add.php', 'offers-edit.php', 'offers-show.php', 'orders-issued.php', 'orders-issued-add.php', 'orders-issued-edit.php', 'orders-issued-show.php', 'shipping-orders.php', 'shipping-orders-add.php', 'shipping-orders-edit.php', 'shipping-orders-show.php', 'reservations.php', 'reservations-add.php', 'reservations-edit.php', 'reservations-show.php','receipts.php', 'receipts-add.php', 'receipts-edit.php', 'receipts-show.php', 'picklists.php', 'picklists-add.php', 'picklists-edit.php', 'picklists-show.php'))) echo 'id="current"';?>><i class="fa fa-list" aria-hidden="true"></i>Oběh zboží</a>
      <ul>
        <li><a href="<?php echo MODULES; ?>goods/products.php" title="" <?php if((in_array(basename($_SERVER['SCRIPT_NAME']), array ('products.php', 'products-add.php', 'products-edit.php')))) echo 'class="current"'; ?>>Zboží a služby</a></li>
        <li><a href="<?php echo MODULES; ?>goods/stock.php" title="" <?php if((in_array(basename($_SERVER['SCRIPT_NAME']), array ('stock.php', 'stock-add.php', 'stock-edit.php')))) echo 'class="current"'; ?>>Stav skladu</a></li>
        <li><a href="<?php echo MODULES; ?>contracts/contracts.php" title="" <?php if((in_array(basename($_SERVER['SCRIPT_NAME']), array ('contracts.php', 'contracts-add.php', 'contracts-edit.php', 'contracts-watch.php', 'contracts-search.php')))) echo 'class="current"'; ?>>Zakázky</a></li>
        <li><a href="<?php echo MODULES; ?>offers/offers.php" title="" <?php if((in_array(basename($_SERVER['SCRIPT_NAME']), array ('offers.php', 'offers-add.php', 'offers-edit.php', 'offers-show.php')))) echo 'class="current"'; ?>>Nabídky</a></li>
        <li><a href="<?php echo MODULES; ?>orders/orders-issued.php" title="" <?php if((in_array(basename($_SERVER['SCRIPT_NAME']), array ('orders-issued.php', 'orders-issued-add.php', 'orders-issued-edit.php', 'orders-issued-show.php')))) echo 'class="current"'; ?>>Vydané objednávky</a></li>
        <li><a href="<?php echo MODULES; ?>shipping-orders/shipping-orders.php" title="" <?php if((in_array(basename($_SERVER['SCRIPT_NAME']), array ('shipping-orders.php', 'shipping-orders-add.php', 'shipping-orders-edit.php', 'shipping-orders-show.php')))) echo 'class="current"'; ?>>Expediční příkazy</a></li>        
        <li><a href="<?php echo MODULES; ?>reservations/reservations.php" title="" <?php if((in_array(basename($_SERVER['SCRIPT_NAME']), array ('reservations.php', 'reservations-add.php', 'reservations-edit.php', 'reservations-show.php')))) echo 'class="current"'; ?>>Rezervace</a></li>
        <li><a href="<?php echo MODULES; ?>receipts/receipts.php" title="" <?php if((in_array(basename($_SERVER['SCRIPT_NAME']), array ('receipts.php', 'receipts-add.php', 'receipts-edit.php', 'receipts-show.php')))) echo 'class="current"'; ?>>Příjemky</a></li>
        <li><a href="<?php echo MODULES; ?>picklists/picklists.php" title="" <?php if((in_array(basename($_SERVER['SCRIPT_NAME']), array ('picklists.php', 'picklists-add.php', 'picklists-edit.php', 'picklists-show.php')))) echo 'class="current"'; ?>>Výdejky</a></li>
      </ul>
    </li>
    
    </ul>
  <!-- /main navigation -->

</div>
Keeehi
Profil
Jan Žák:
Vše funguje dobře, jen při výběru jiného odkazu z menu se stane, že menu zůstane na sekundu otevřené celé
To bude nejspíše tím, že se ti načte HTML, ale CSS (případně javascript) co to obsluhuje ještě ne.
Spíš než PHP kód bychom potřebovali vidět tvoji stránku v akci.
Jan Žák
Profil
Keeehi:
On je problém v tom, že to mám pouze na disku u sebe. Když se načítá celá stránka, tak nejdřív css soubory, pak js soubory a pak jde zbytek. Tady dávám odkaz na celý soubor sidebar.php

Jde mi spíš o to, jestli by to nešlo vyřešit jinak, zjednodušit to, protože vím, že to menu je objemné. Díky
Keeehi
Profil
Jan Žák:
On je problém v tom, že to mám pouze na disku u sebe.
A přesně pro tento případ tu je Živá ukázka
Jan Žák
Profil
Keeehi:
Díky, o tomhle jsem nevěděl, pokusil jsem se vše vložit, ale bohužel nedokážu nasimulovat, otevírání a zavírání menu. Menu je tedy se všemi položkami rozevřeno.
Živá ukázka

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: