« 1 2 »
Autor Zpráva
Tomy
Profil
Ahoj, potřebuju poradit. Chci dát na stránky menu pomocí "include", jenže mám na každé stránce nastavené, že když je otevřená tak ta její záložka v menu "svítí" a nevím jestli to jde nějak udělat také přes ten include. Poradíte mi prosím, Díky moc :)
Taps
Profil
Tomy:
návod pro inspiraci najdeš na polopate.jakpsatweb.cz/index.php?page=include4
juriad
Profil
Případně Jednoduchý web v PHP » Menu se zvýrazněním aktuální položky (přečti si celý článek od začáku).
Tomy
Profil
Nechápu tam jak ověřuje to "první", "druhá", "třetí"...u těch podmínek.
juriad
Profil
Tomy:
Ten Tapsem odkázaný návod je zastaralý. Je z doby, kdy parametr, například str v URLindex.php?str=prvni byl automaticky dostupný v proměnné $str. Toto se ukázalo jeko špatný nápad a v novém PHP už to není možné. Nově je ten parametr dostupný v superglobálním poli $_GET. Tedy v tvém kódu by to vypadalo:
echo $_GET['str']; # vypíše "prvni"
Tomy
Profil
Uděláš mi tu prosím tě neějaká krátký popsaný příklad? :) Já vím jak fungujou podmínky atd, ale nějak to nemůžu pochopit :-D Díky :)
juriad
Profil
Někde musíš mít seznam všech stránek, to je na jecas.cz to pole $menu. Pak jde o to projít to pole v cyklu a vypisovat <a ...>...</a> a kontrolovat, zda se název aktuální stránky nerovná odkazu na stránku, který by se měl zrovna vypsat. Na jecas.cz je to zabalené do funkce. Tu by ti stačilo zavolat a předat jí název stránky, ve které includuješ menu. Tedy něco jako:
<?php
include "menu.php";
menu('První stránka');
?>
Tomy
Profil
Takže tady to musím změnit jak aby mi to fungovalo? Říkal si že tam ten způsob je zastaralý:


<nav>
            <ul>
                <?php
                echo "<li";
                if ($str=="prvni") {
                    echo " class='otevreno'";
                }
                echo "><a href='index.php?str=prvni'><b>Aktuality</b></a>";
                ?>
            </ul>
        </nav>
Taps
Profil
Na to ti odpovedel juriad [#5]
Juriad: je mozne ten navod zaktualizovat?
juriad
Profil
Tomy:
Na polopatě se hlavně odkazuje na všechny stránky skrz index.php, který includuje jednotlivé stránky. Ty naopak máš stránky zvlášť a jen chceš, aby měly společné menu.

Taps:
To by se tam toho muselo přepsat opravdu hodně, třeba řešení toho, že $_GET['str'] může neexistovat.
Tomy
Profil
juriad:
No chci, jenže potřebuju do toho zakomponovat i tu "aktuálně" otevřenou záložku.


juriad:
To jak tam mám zakomponovat to společné menu atd chápu, ale ty aktuální položky mi nejdou.
juriad
Profil
Použij funkci menu z jecas.cz. Ta řeší tvůj případ. Ty ji budeš mít v souboru menu.php.
Tomy
Profil
Já tam nic takového nemůžu najít. Je tam akorát Označení odkazu na kotvu, pokud je na ní odrolováno a to je něco jiného.
juriad
Profil
Tomy:
Odkaz jsem ti dal už v [#3] juriad.
Tomy
Profil
juriad:
Prosím tě, nevíš proč mi to hází tu záložku pod ty ostatni?

sdhbecva.cz/doma
juriad
Profil
To bude asi tím, že máš ve zdrojáku <b><li>..., což není povolená konstrukce. <ul> smí obsahovat jen <li>, nikoli <b>.
Tomy
Profil
juriad:
Aha. No ale když tam vynechám konkrétně to "Ocenění", tak mi to nikde neudělá. Konkrétně v HTML mi to nedělalo vůbec. Ale u toho PHP to teda vadí jo?
juriad
Profil
Porovnej tyto dvě položky:
<li><b class="kurzor"><a href="vyborsdh.php?str=vyborsdh">Výbor SDH</a></b></li>
<b class="kurzor"><li><a href="oceneni.php?str=oceneni">Ocenění</a></li></b>
Není to PHP/HTML. Prostě máš položku obalenou do <b>, namísto obalení jejího obsahu.
Tomy
Profil
juriad:
Jo už sem to spravil a funguje to :) díky


Poradil bys mi ještě jak mám udělat, aby když rozklinu podzáložku svítila i ta hlavní záložka? Jestli to nějak jde :)
juriad
Profil
Tomy:
Neznám tvůj kód, nevím, jak to menu generuješ. Jde všechno, ale často to znamená překopání většího kusu kódu a třeba i zesložitění nad úroveň, které rozumíš.
Tomy
Profil
juriad:
Teď ho mám takhle:
<main class="menu">
<nav>
<ul>
<?php
echo "<li";
if ($_GET['str'] == "aktuality") echo " class='otevreno'";
echo "><a href='doma.php?str=aktuality'>Aktuality</a></li>\n";
?> 
<li><a class="kurzor">Sbor</a>
<ul>
<?php
echo "<li";
if ($_GET['str'] == "historie") echo " class='otevreno'";
echo "><a href='historie.php?str=historie'>Založení sboru</a></li>\n";
echo "<li";
if ($_GET['str'] == "historie1") echo " class='otevrenozelena'";
echo "><a href='historie1.php?str=historie1'>Historie</a></li>\n";
echo "<li";
if ($_GET['str'] == "cinnostsboru") echo " class='otevrenozelena'";
echo "><a href='cinnostsboru.php?str=cinnostsboru'>Činnost sboru po osvobození</a></li>\n";
echo "<li";
if ($_GET['str'] == "cinnost") echo " class='otevrenozelena'";
echo "><a href='cinnost.php?str=cinnost'>Z činnosti za léta 1980 - 1990</a></li>\n";
echo "<li";
if ($_GET['str'] == "organizace") echo " class='otevrenozelena'";
echo "><a href='organizace.php?str=organizace'>Organizační činnost</a></li>\n";
echo "<li";
if ($_GET['str'] == "19902000") echo " class='otevrenozelena'";
echo "><a href='19902000.php?str=19902000'>1990 - 2000</a></li>\n";
echo "<li";
if ($_GET['str'] == "20012009") echo " class='otevrenozelena'";
echo "><a href='20012009.php?str=20012009'>2001 - 2009</a></li>\n";
?>
</ul>
<li><a class="kurzor">Technické vybavení sboru</a>
<ul>
<?php
echo "<li";
if ($_GET['str'] == "vozidla") echo " class='otevrenozelena'";
echo "><a href='vozidla.php?str=vozidla'>Vozidla</a></li>\n";
echo "<li";
if ($_GET['str'] == "strikacky") echo " class='otevrenozelena'";
echo "><a href='strikacky.php?str=strikacky'>Stříkačky</a></li>\n";
echo "<li";
if ($_GET['str'] == "mcerpadla") echo " class='otevrenozelena'";
echo "><a href='mcerpadla.php?str=mcerpadla'>motorové čerpadla</a></li>\n";
echo "<li";
if ($_GET['str'] == "mpila") echo " class='otevrenozelena'";
echo "><a href='mpila.php?str=mpila'>motorová pila</a></li>\n";
echo "<li";
if ($_GET['str'] == "proudnice") echo " class='otevrenozelena'";
echo "><a href='proudnice.php?str=proudnice'>Proudnice</a></li>\n";
echo "<li";
if ($_GET['str'] == "vstan") echo " class='otevrenozelena'";
echo "><a href='vstan.php?str=vstan'>Vojenský stan</a></li>\n";
echo "<li";
if ($_GET['str'] == "zvybaveni") echo " class='otevrenozelena'";
echo "><a href='zvybaveni.php?str=zvybaveni'>Zásahové vybavení</a></li>\n";
?>
</ul>
<li><a class="kurzor">Zásahy</a>
<ul>
<?php                    
echo "<li";
if ($_GET['str'] == "zasahy2009") echo " class='otevrenozelena'";
echo "><a href='zasahy2009.php?str=zasahy2009'>2009</a></li>\n";
echo "<li";
if ($_GET['str'] == "zasahy2010") echo " class='otevrenozelena'";
echo "><a href='zasahy2010.php?str=zasahy2010'>2010</a></li>\n";
echo "<li";
if ($_GET['str'] == "zasahy2011") echo " class='otevrenozelena'";
echo "><a href='zasahy2011.php?str=zasahy2011'>2011</a></li>\n";
?>
</ul>
<li><a class="kurzor">Soutěže</a>
<ul>
<?php
echo "<li";
if ($_GET['str'] == "muzi") echo " class='otevrenozelena'";
echo "><a href='muzi.php?str=muzi'>Muži</a></li>\n";
echo "<li";
if ($_GET['str'] == "zaci") echo " class='otevrenozelena'";
echo "><a href='zaci.php?str=zaci'>Žáci</a></li>\n";
?>
</ul>
<?php
echo "<li";
if ($_GET['str'] == "vyborsdh") echo " class='otevreno'";
echo "><a href='vyborsdh.php?str=vyborsdh'>Výbor SDH</a></li>\n";

echo "<li";
if ($_GET['str'] == "oceneni") echo " class='otevreno'";
echo "><a href='oceneni.php?str=oceneni'>Ocenění</a></li>\n";
?>
</ul>
</nav>    
<nav class="zindex">
<ul>
<?php
echo "<li";
if ($_GET['str'] == "dokumenty") echo " class='otevreno'";
echo "><a href='dokumenty1.php?str=dokumenty'>Dokumenty</a></li>\n";
echo "<li";
if ($_GET['str'] == "pronajem") echo " class='otevreno'";
echo "><a href='pronajem.php?str=pronajem'>Pronájem</a></li>\n";
echo "<li";
if ($_GET['str'] == "odkazy") echo " class='otevreno'";
echo "><a href='odkazy.php?str=odkazy'>Odkazy</a></li>\n";
echo "<li";
if ($_GET['str'] == "kontakt") echo " class='otevreno'";
echo "><a href='kontakt.php?str=kontakt'>Kontakt</a></li>\n";
echo "<li";
if ($_GET['str'] == "fotogalerie") echo " class='otevreno'";
echo "><a href='fotogalerie.php?str=fotogalerie'>Fotogalerie</a></li>\n";
echo "<li";
if ($_GET['str'] == "videogalerie") echo " class='otevreno'";
echo "><a href='videogalerie.php?str=videogalerie'>Videogalerie</a></li>\n";
?> 
<li><a href="https://www.facebook.com/sdh.prostrednibecva?fref=ts" target="_blank" class="Facebook">Facebook</a>

</ul>
</nav>
</main>
mimochodec
Profil
Nechce se mně to psát komplet, tak jen naznačím.
<?php

$pg = $_GET['str'];

echo "<li";
if ($pg == "aktuality") echo " class='otevreno'";
echo "><a href='doma.php?str=aktuality'>Aktuality</a></li>\n";

echo "<li";
if (in_array($pg, array("historie", "historie1", "cinnostsboru"))) echo " class='otevrenaskupina'";
echo "><a class='kurzor'>Sbor</a>";

echo "<ul>";
echo "<li";
if ($pg == "historie") echo " class='otevreno'";
echo "><a href='historie.php?str=historie'>Založení sboru</a></li>\n";

echo "<li";
if ($pg == "historie1") echo " class='otevrenozelena'";
echo "><a href='historie1.php?str=historie1'>Historie</a></li>\n";

echo "<li";
if ($pg == "cinnostsboru") echo " class='otevrenozelena'";
echo "><a href='cinnostsboru.php?str=cinnostsboru'>Činnost sboru po osvobození</a></li>\n";

?>
Tomy
Profil
mimochodec:
Teď mám ale problém s tím, že mi svítí když je otevřená podzáložka tak ta svítí jak chci, a zbytek podzáložek svítí stejně jako ta hlavní zálokža.
mimochodec
Profil
nerozumím. Tak jak jsem to napsal, svítí "Sbor" v případě, že je vybraná některá položka pod ním. Jeslti to chceš jinak, je problém tu logiku v tom vypozorovat a upravit si to?
Tomy
Profil
mimochodec:
Jo to že svítí sbor a záložka pod ním je srávně. Ale svítí mi i ty ostatní podzáložky v tom "Sboru". Tobě svítí jenom ta jedna? (Ty ostatní pozáložky svítí v té barvě jako sbor)


mimochodec:
Ne počkej, zkusím ještě neco udělat. Asi vím kde mám chybu.


mimochodec:
Mám asi blbě nastylované .css, ale nemůžu přijít na to, jak to zapsat aby to platilo jenom pro tu vrchní záložku. Vždycky mi to rozsvítí i ty ostatní podzáložky :/
mimochodec
Profil
Tomy:
Mám asi blbě nastylované .css, ale nemůžu přijít na to, jak to zapsat aby to platilo jenom pro tu vrchní záložku. Vždycky mi to rozsvítí i ty ostatní podzáložky :/

Tak si zkontroluj to css. Tohle php je tak triviální, že to nemůže nefungovat. Vybraná položka musí svítit a musí svítit i její "nadpoložka". Nic víc. Rozdíl mezi 'otevreno' a 'otevrenozelena' je jaký?
Tomy
Profil
mimochodec:
otevreno svítí červeně a otevrenozelena svítí zeleně

O tom sem se zapoměl zmínít, moje chyba.
Tomy
Profil
mimochodec:
Já fakt nevím co s tím mám. Kód je stejný.

<?php
$pg = $_GET['str'];

echo "<li";
if ($pg == "aktuality") echo " class='otevreno'";
echo "><a href='index.php?str=aktuality'>Aktuality</a></li>\n";

echo "<li";
if (in_array($pg, array("historie", "historie1", "cinnostsboru", "cinnost", "organizace", "19902000", "20012009"))) echo " class='otevrenaskupina'";
echo "><a class='kurzor'>Sbor</a>";

echo "<ul>";
echo "<li";
if ($pg == "historie") echo " class='otevrenozelena'";
echo "><a href='historie.php?str=historie'>Založení sboru</a></li>\n";

echo "<li";
if ($pg == "historie1") echo " class='otevrenozelena'";
echo "><a href='historie1.php?str=historie1'>Historie</a></li>\n";

echo "<li";
if ($pg == "cinnostsboru") echo " class='otevrenozelena'";
echo "><a href='cinnostsboru.php?str=cinnostsboru'>Činnost sboru po osvobození</a></li>\n";

echo "<li";
if ($pg == "cinnost") echo " class='otevrenozelena'";
echo "><a href='cinnost.php?str=cinnost'>Z činnosti za léta 1980 - 1990</a></li>\n";

echo "<li";
if ($pg == "organizace") echo " class='otevrenozelena'";
echo "><a href='organizace.php?str=organizace'>Organizační činnost</a></li>\n";

echo "<li";
if ($pg == "19902000") echo " class='otevrenozelena'";
echo "><a href='19902000.php?str=19902000'>1990 - 2000</a></li>\n";

echo "<li";
if ($pg == "20012009") echo " class='otevrenozelena'";
echo "><a href='20012009.php?str=20012009'>2001 - 2009</a></li>\n";
echo "</ul>";
?>

a css je takhle:
 nav li.otevrenaskupina a{                           /* tady nevím přesně co mám napsat*/
    text-shadow: 1px 2px 10px #ff0000;
    color: #ff0000;
}

nav li.otevreno a{
    text-shadow: 1px 2px 10px #ff0000;
    color: #ff0000;
}

nav li.otevrenozelena a{
    text-shadow: 1px 2px 10px #008000;
    color: #008000;
}
mimochodec
Profil
ztratil jsem sev om. nevím, co je na tom špatně. Dej odkaz na živou ukázku a zkus to popsat. Jak už jsem psal, jde jen o pár podmínekmusí to fungovat. Jestli se to chová jinak než chceš, možná za to může bordel v těch třech třídách. Což je docela umění.
Tomy
Profil
mimochodec:
V živé ukázce funguje PHP?


Mi to tam teda nejde. Podívej se na www.sdhbecva.cz. Tam je přímo ta záložka SBOR a můžeš se podívat jak to funguje.


Tam je problém s tím echo:"otevrenaskupina";. Buď to já blbě nastavuju v css, nebo tu třídu přiřazuje všem těm podzáložkám, kromě té aktivní, která svítí dobře. Jestli to blbě nastavuju v css, tak se k tomu asi nedopátrám, protože na to nemůžu příjít :-D
« 1 2 »

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0