Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Adicionar elementos individuais nas paginas

Olá,

Nos foi ensinado a separar o código com a função include do PHP. Porém, eu gostaria de estilizar a navbar de acordo com a pagina que o usuário se encontra. Por exemplo, gostaria que o texto "Adiciona Produto", na tag <li> estivesse com uma cor diferente quando o usuário estivesse acessando aquela página. Então queria saber como isso é possível de forma a manter o código separado. Obrigado.

2 respostas
solução!

Oi Yharon, tudo bom?

Com php puro você vai precisar criar condições (ifs) no seu código isolado. Não tem muito como fugir.

Uma forma é verificar qual url está sendo acessada pelo usuario. Algo como:

$_SERVER['REQUEST_URI']

E qual pagina está sendo chamada para renderizar seu html da forma correta para cada caso.

Outra forma é gerar o html a partir da chamada de uma função. E, ao renderizar a pagina chamar a função passando o parametro correto. Algo como:

// header.php
function cabecalhoDaPagina($pagina){
    if($pagina == "home") {
        echo "**HTML  DO CABECALHO PARA A HOME**"
    } else if($pagina == "contato") {
        echo "**HTML DO CABECALHO PARA CONTATO**"
    }  else if ...
}

// home.php
include(header.php);
// chama a função
cabecalhoDaPagina("home");

Abraço =)

Opa, obrigado André!

Eu agradeço muito a sua ajuda mas eu fiz através de uma requisição ajax. Segue:

cabeçalho.php:

<html>
<head>
    <title>Minha loja</title>
    <meta charset="utf-8">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <link href="../css/themes/materialize.css" rel="stylesheet" />
    <link href="../css/themes/loja.css" rel="stylesheet" />
</head>

<body>

<nav>
  <div class="nav-wrapper">
    <a href="index.php" class="brand-logo">Minha Loja</a>
    <ul id="nav-mobile" class="right hide-on-med-and-down">
      <li id="pagina-cadastro-produto"><a href="produto-formulario.php">Cadastro de Produtos</a></li>
      <li id="pagina-lista-produto"><a href="produto-lista.php">Lista de Produtos</a></li>
    </ul>
  </div>
</nav>

<div class="container">
    <div class="principal">

custom.js:

$(function () {
    $.ajax({
        success: function(){
            if (this.url == "http://localhost:63342/php-mysql-e-fundamentos-da-web_I/php/produto-formulario.php"){
                $("#pagina-cadastro-produto").addClass("active");
            } else if (this.url == "http://localhost:63342/php-mysql-e-fundamentos-da-web_I/php/produto-lista.php"){
                $("#pagina-lista-produto").addClass("active");
            }
        }
    });
});

Dessa forma ficou bem mais enxuto. Porém tem um pequeno delay na hora de adicionar a classe, queria que fosse mais rápido.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software