Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Como faço pra uma classe à um menu ativo de uma página que usa querystring?
Eu geralmente uso includes, nesse caso seria fácil: <?php if($pagina_atual == "home"){?>class="ativo"<?}?>
Mas parece não funcionar com querystring, alguém sabe me dizer o motivo de não funcionar e como faço pra funcionar? Obrigado!
>
Usa case. Eu fiz isso com o método do William esses dias:
:seta: http://wbruno.com.br/blog/2011/11/25/trocando-title-da-pagina-em-navegacao-por-query-string-php/
Uma dúvida: Qual a diferença entre usar Case e If? E getGet('') seria o equivalente a $_GET('')?
O querystring dele ficou um pouco diferente, o meu ficou assim:
<?php
$pagina = $_GET['pg'];
$pagina = strip_tags($pagina);
$pagina = trim($pagina);
if(empty($pagina)) {
include("inicial.php");
}
else{
include("$pagina.php");
}
?>
Tá meio difícil de entender o que ele fez hehehe
Oi @Kauã,
Cara, eu usei if também, só que 'resumido':
$file = is_file( 'view/'.$pg.'.php' ) ? 'view/'.$pg.'.php' : 'view/home.php';
expandindo, seria o mesmo que:
if( is_file( 'view/'.$pg.'.php' ) )
$file = 'view/'.$pg.'.php';
else
$file = 'view/home.php';
entendeu?
bem parecido com o seu.
Eu criei uma função getGet(), para evitar aqueles Warnings, de 'variavel não definida' e tal..
se você usar o $_GET diretamente, e não tiver nenhum parâmetro na URL, o php dispara esse Warning, se o teu servidor estiver 'bem configurado'.
No mais, o meu switch/case ali, é só para fazer a troca da tag <title>, coisas de SEO mesmo.
@topic,
Para o menu atual, você pode fazer assim, usando a Query String:
<a href="?pg=home" <?php if( $_GET['pg']=='home' ) echo ' class="ativo"';?>>Home</a>
<a href="?pg=contato" <?php if( $_GET['pg']=='contato' ) echo ' class="ativo"';?>>Contato</a>
<a href="?pg=gostei" <?php if( $_GET['pg']=='gostei' ) echo ' class="ativo"';?>>Gostei</a>
Entendeu ?
>
Para o menu atual, você pode fazer assim, usando a Query String:
<a href="?pg=home" <?php if( $_GET['pg']=='home' ) echo ' class="ativo"';?>>Home</a>
<a href="?pg=contato" <?php if( $_GET['pg']=='contato' ) echo ' class="ativo"';?>>Contato</a>
<a href="?pg=gostei" <?php if( $_GET['pg']=='gostei' ) echo ' class="ativo"';?>>Gostei</a>
Entendeu ?
Valeu! Funcionou.
Eu entendi sim, mas você pode me explicar por que com querystring eu não consigo puxar as variáveis que eu declarei nas páginas?
por exemplo, na página contato.php eu declaro:
<?php $pagina_atual = "contato"; ?>
se eu coloco na página index.php:
<?php if($pagina_atual == "contato") echo 'class="ativo"';?>
Não funciona, por que?
E e por que assim também não funciona?
<?php if($pagina == "contato") echo 'class="ativo"';?>
(nesse caso $pagina seria a variável que pega o valor de $_GET
Valeu pela ajuda!
depende do instante em que você declara.
a página filha encherga as variaveis da página pai.
e a página pai, só vai enchergar as variaveis da pagina filha depois da filha ser incluida[/b]
pagina pai
<?php include 'filha.php'; ?>
só daqui para baixo, é que a pai vai conseguir usar as variaveis da pagina filha
Usa case. Eu fiz isso com o método do William esses dias:
:seta: http://wbruno.com.br/blog/2011/11/25/trocando-title-da-pagina-em-navegacao-por-query-string-php/