Jump to content
Sir Pereira

[RESOLVIDO] Menú dinâmico

Recommended Posts

Sir Pereira

Boas,

é o seguinte, tenho um menú lateral do seguinte género:

                     <ul id="menu_lateral">
                            <li class="active"><a href="<?php echo HTTP_DIR;?>/index.php"><img src="<?php echo HTTP_DIR; ?>/img/menu/mural.png" alt="Últimas Acções" /> Últimas Acções</a></li>
                            <li><a href="<?php echo HTTP_DIR; ?>/msgs/inbox.php"><img src="<?php echo HTTP_DIR; ?>/img/menu/msg.png" alt="Mensagens" /> Mensagens (<?php GetMensagensNovas($_SESSION['id']); ?>)</a></li>
                            <li><img src="<?php echo HTTP_DIR; ?>/img/menu/documentos.png" alt="Documentos" /> Documentos</li>
                            <li><a href="<?php echo HTTP_DIR; ?>/users/index.php"><img src="<?php echo HTTP_DIR; ?>/img/menu/users.png" alt="Utilizadores" /> Utilizadores</a></li>
                            <li><a href="<?php echo HTTP_DIR; ?>/users/cats/index.php"><img src="<?php echo HTTP_DIR; ?>/img/menu/categorias.png" alt="Categorias" /> Categorias</a></li>
                        </ul>

E imaginando, para cada ficheiro que tenho dentro da pasta /msgs/ tenho de estar a mudar o class="active" em todas essas páginas (muda-me a cor de fundo da barra de menú).

E se precisar de alterar um item no menú vou ter que andar a alterar em dezenas de ficheiros.

Alguém tem alguma solução para isto?

Obrigado ;)

Share this post


Link to post
Share on other sites
scorch

O item activo deve ser dinâmico. Obtens o URL da página e arranjas maneira de saber qual a página actual. ;)


PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Sir Pereira

Hum, por exemplo o PHP_SELF? Mas não estou a ver como fazer isso, para por isso por exemplo num include, tinha que fazer uma enorme quantidade de ifs.

Se PHP_SELF for = HTTP_DIR/eventos

mensagens

pagina 2

activo EVENTOS

pagina 4

SE PHP_SELF for = HTTP_DIR/mensagens

activo MENSAGENS

pagina 2

eventos

pagina 4

seria esta a lógica?

Share this post


Link to post
Share on other sites
Sir Pereira

Estão no próprio tópico ;)

                            <li class="active"><a href="<?php echo HTTP_DIR;?>/index.php"><img src="<?php echo HTTP_DIR; ?>/img/menu/mural.png" alt="Últimas Acções" /> Últimas Acções</a></li>
                            <li><a href="<?php echo HTTP_DIR; ?>/msgs/inbox.php"><img src="<?php echo HTTP_DIR; ?>/img/menu/msg.png" alt="Mensagens" /> Mensagens (<?php GetMensagensNovas($_SESSION['id']); ?>)</a></li>
                            <li><a href="<?php echo HTTP_DIR; ?>/users/index.php"><img src="<?php echo HTTP_DIR; ?>/img/menu/users.png" alt="Utilizadores" /> Utilizadores</a></li>
                            <li><a href="<?php echo HTTP_DIR; ?>/users/cats/index.php"><img src="<?php echo HTTP_DIR; ?>/img/menu/categorias.png" alt="Categorias" /> Categorias</a></li>

Share this post


Link to post
Share on other sites
pedrotuga

Isso é um cavalo batido até à morte, faço isso diariamente mais do que uma vez.

Tens que começar a pensar de forma diferente... isso de mapear urls em nomes de ficheiros rapidaemtne se torna uma limitação.  Ainda que consigas sacar o nome do ficheiro perlo request uri ou coisa assim, é um método pouco elegante na minha opinião.

Acede às páginas todas através de um controlador de entrada. Um ficheiro por onde passam os pedidos todos. Aí vês qual é a página que queres mostrar e mostra-la. Pode ser com um include, pode ser através de chamadas a métodos, através polimorfirmo, etc.

Nesse caso podes ter os menus item todos num array e gerar o menu dinamiamente. Escusas de andar a martelar html aqui e ali. Como os pedidos passam todos pelo mesmo ficheiro, pode marcar o elemento do array (o que contem o menu) correspondente à pagina activa.

Share this post


Link to post
Share on other sites
pedrotuga

O tal include que tinha falado do menu, correcto?

podes ser mais específico?

Share this post


Link to post
Share on other sites
Sir Pereira

Separar lógicamente o markup é sempre uma boa ideia na web, facilita bastante o desenvolvimento e o trabalho de manutenção.

Bem que podia escrever um artigo para a revista sobre isto, em vez de andar sempre a abordar os mesmos temas (não que eu leia a revista).

Mas como separo o markup se aqui preciso dele para fazer os li's?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.