Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ronny Santana

[Resolvido] Alternancia de class de menu

Recommended Posts

Ola amigos, boa tarde e um 2011 com muito SUCESSO para todos...

 

Abrindo meu 1º POST de 2011, venho aqui postar uma dúvida meio que simples, mais não consegui ver a solução.

 

É o seguinte, eu tenho um menu em jQuery e CSS, esse menu tem a seguinte estrutura

 

  <ul>
           <li><a href="index.html">HOME</a></li>
           <li><a href="planos.html">PLANOS</a></li>
           <li><a href="registro.html">REGISTRO DE DOMÍNIO</a></li>
           <li><a href="suporte.html">SUPORTE</a></li>
           <li class="current"><a href="central.html">CENTRAL DO CLIENTE</a></li>
           <li><a href="contato.html">CONTATO</a></li>
       </ul>

 

Reparem na seguinte parte;

<li class="current"><a href="central.html">CENTRAL DO CLIENTE</a></li>

 

Eu fiz ele só em html com o class="current" alterado manualmente em casa pagina, nesse caso o link "central.html" estaria em destaque.

 

Como posso fazer isso em PHP, para que altere dinamicamente sem precisar declarar manualmente?

 

Minha dúvida parece ser de CSS amigos, mais não é, é de puro PHP.

 

 

LEMBRANDO QUE PRETENDO ULTILIZAR A TÉCNICA DE REESCRITA DE URL, ACHO QUE ISSO MUDARIA UM POUCO, SE FOSSE PEGAR ALGO DA URL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm, aí depende de como sua reescrita funciona. Se ela só remover a extensão, mais fácil, pois é só pegar a variável $_SERVER['PHP_SELF']; no Javascript e comparar com o atributo href, se forem iguais, ele adiciona a classe current. Mas, há um problema: se, por exemplo, PLANOS tiver sub-páginas, será necessário analisar a URL minuciosamente.

 

 

Veja um exemplo numa página simples (sem reescrita e sem sub-páginas):

 

<script src=https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js></script>
<script>
$(document).ready(function() {
 $("#menu li").each(function() {
if ($(this).children().attr("href") == "<?php echo substr($_SERVER['PHP_SELF'], 1); ?>") {
           $(this).addClass("current");
       }
 });
});
</script>
<style>
.current a { color:red; }
</style>
<button id=botao>Marcar</button>
<ul id=menu>
<li><a href="index.php">HOME</a></li>
<li><a href="planos.php">PLANOS</a></li>
<li><a href="registro.php">REGISTRO DE DOMÍNIO</a></li>
</ul>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Eliseu... Vlw pela dica, mais minha intenção é fazer somente com PHP, e vou ultilizar reescrita de url dessa maneira.

 

site.com.br/noticias/esporte/5487/pedra-fundamental-da-vila-olimpica-e-lancada-e-projeto-recebe-aval-do-coi.html

site.com.br/fotos/eventos/54897/inauguracao-da-saraiva-mega-store-em-teixeira-de-freitas-ba.html

 

Acho que dá pra pegar o canal (noticias) e manipular com o PHP.

 

Você acha que dá certo?

 

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ronny,

 

Tente fazer assim:

 

<?php
    // PEGA A URL COMPLETA RETIRANDO O HTTP://
    $urlcomp = str_replace("http://", "", $_SERVER['HTTP_HOST']);

    // DIVIDE A URL PELAS BARRAS
    $urlcomp = explode("/", $urlcomp);

    // PEGA O LINK ACESSADO
    $urlcomp = $urlcomp[1];

    // TE EXPLICO O FUNCIONAMENTO DO SCRIPT... VOCÊ PEGOU UMA URL ASSIM:
    // http://www.seusite.com.br/noticias/joao-e-maria-na-praia/patati/patata
    // NA PRIMEIRA LINHA DO SCRIPT ELE RETIRA O HTTP://, DEIXANDO A URL ASSIM:
    // www.seusite.com.br/noticias/joao-e-maria-na-praia/patati/patata
    // DEPOIS, ELE SEPARA A URL POR PARTES, DEFININDO COMO CARACTERE DELIMITADOR, A "BARRA"
    // 1º PARTE: www.seusite.com.br        - ÍNDICE: 0
    // 2º PARTE: noticias                  - ÍNDICE: 1
    // 3º PARTE: joao-e-maria-na-praia     - ÍNDICE: 2
    // 4º PARTE: patati                    - ÍNDICE: 3
    // 5º PARTE: patata                    - ÍNDICE: 4
    // PORÉM, QUANDO VOCÊ DIVIDE A URL POR PARTES, ELE COMEÇA A CONTAR NO ZERO. OU SEJA,
    // O ÍNDICE DA PARTE 1 É 0, O ÍNDICE DA PARTE 2 É 1.. E ASSIM POR DIANTE...
    //
    // OU SEJA, SE VOCÊ QUER PEGAR A SEGUNDA PARTE DA URL, QUE SERÁ O LINK QUE O USUÁRIO QUER ACESSAR,
    // O ÍNDICE SERÁ 1 (UM), POR ISSO UTILIZAMOS $urlcomp[1].
?>

 

 

Agora é só definir a classe do link...

<ul>
    <li <?php if ($urlcomp == "home") { echo "class='current'"; } ?>><a href="index.html">HOME</a></li>
    <li <?php if ($urlcomp == "planos") { echo "class='current'"; } ?>><a href="planos.html">PLANOS</a></li>
    <li <?php if ($urlcomp == "registro-de-dominio") { echo "class='current'"; } ?>><a href="registro.html">REGISTRO DE DOMÍNIO</a></li>
    <li <?php if ($urlcomp == "suporte") { echo "class='current'"; } ?>><a href="suporte.html">SUPORTE</a></li>
    <li <?php if ($urlcomp == "central") { echo "class='current'"; } ?>><a href="central.html">CENTRAL DO CLIENTE</a></li>
    <li <?php if ($urlcomp == "contato") { echo "class='current'"; } ?>><a href="contato.html">CONTATO</a></li>
</ul>

 

 

Um abraço e feliz 2011!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Cicero, fiz dessa maneira aqui [localhost] e deu certo

 

// index
<?php
    $current_menu = $_SERVER['REQUEST_URI'];
    $current_menu = explode("/", $current_menu);
    $current_menu = $current_menu[2];
?>

  <ul class="lavaLamp">
           <li <?php print $current_menu == "home" ? "class=\"current\"" : NULL; ?> > <a href="home">HOME</a></li>
           <li <?php print $current_menu == "planos" ? "class=\"current\"" : NULL; ?> ><a href="planos">PLANOS</a></li>
           <li <?php print $current_menu == "registro" ? "class=\"current\"" : NULL; ?> ><a href="registro">REGISTRO DE DOMÍNIO</a></li>
           <li <?php print $current_menu == "suporte" ? "class=\"current\"" : NULL; ?> ><a href="suporte">SUPORTE</a></li>
           <li <?php print $current_menu == "central" ? "class=\"current\"" : NULL; ?> ><a href="central">CENTRAL DO CLIENTE</a></li>
           <li <?php print $current_menu == "contato" ? "class=\"current\"" : NULL; ?> ><a href="contato">CONTATO</a></li>

       </ul>

<?php
$pg = $_GET["p"];
switch($pg){
	case "home": 
		include("home.html");
		break;
	case "planos":
		include("planos.html");
		break;
	case "registro":
		include("registro.html");
		break;
	case "suporte":
		include("suporte.html");
		break;
	case "central":
		include("central.html");
		break;
	case "contato":
		include("contato.html");
		break;
	default: include("home.html");
}
?>

// .htaccess
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([a-z,0-9,A-Z,_-]+)$ index.php?p=$1

 

 

Aproveitando, você entende de reescrita de url?

http://forum.imasters.com.br/index.php?/topic/419153-url-amigaveis/

 

Se você entende, quero ver se você me ajuda a entender um esquema de usuários

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.