Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite!
Gente eu preciso de um apoio e vou tentar ser o mais direto e específico possível.
Eu estou fazendo um site, que por sinal está ficando como esperado, porém, eu dei um pequeno vacilo que só fui perceber agora. No diretório principal tenho as pastas nativas, como:
imagesjs css includes templates index.php
Como podem ter percebido, o meu index é o local que coloco toas as funções php, como por exemplo:
ob_start();
session_start();
include("includes/config.php");
include("includes/functions.php");
$tb_users = mysql_query("SELECT * FROM `users_TABLE`");
Para facilitar a minha vida no gerenciamento e organização do FTP, eu decidi criar a pasta templates e dentro dela, os arquivos que vão compor as páginas do site. Para isso ocorrer, eu tive que adicionar ao meu index.php esse código:
$pagina = protect($_GET['pagina']);
include("templates/header.php");
switch($pagina) {
case "noticias": include("templates/noticias.php"); break;
}
include("templates/footer.php");
Com as configurações que fiz no .htaccess eu acesso a página principal no endereço "www.meusite.com/noticias" tendo url amigável.
Tudo ocorre como eu queria, até o problema na qual preciso de apoio de vocês. Eu fiz outras páginas, contendo templates na pasta "templates":
about.php
noticias.php
contato.php
testes.php
O problema é que o título da página não altera se eu mudar de página! Com as novos templates eu posso acessar "www.meusite.com/contato" mas, no título só aparece o título original que coloquei no header.php dentro do <title></title>. Alguém saberia como dar título para cada página usando este sistema que já fiz?
Obrigado pela ajuda, e se não conseguiram me compreender, eu explicarei outra vez. :D
Bom dia Beraldo.
O método não funcionou. Infelizmente, o título da página nem aparece no código fonte. Eu vou estudar um pouco mais seu código, pois, pode ser que eu tenha colocado errado. ;)
Até mais!
Ah, eu esqueci do echo nesta linha:
<title><?php echo isset( $pageTitle ) ? $pageTitle : 'Título Padrão'; ?></title>
Por isso não aparecia... :P
My bad... :ph34r:
Oi novamente Beraldo. Eu já tinha pensando nisso e encontrei o detalhe que você se esqueceu, só que quando eu coloquei o echo ele exibiu apenas o título padrão, mas o da variável "$pageTitle = 'Notícias';" não. Além do mais, se eu usar o include header.php como no seu código, a página fica sem estrutura porque os arquivos de CSS estão todas lá.
Eu acho que terei que remontar o layout criando páginas por páginas. :(
Obrigado até agora. ;)
Beraldo, olá. :D
Bem, eu fiz alguns testes de novo e não funciona de maneira alguma. Existe outra solução?
Funciona, sim.
Você deve ter feito algo errado.
Veja um exemplo funcional, baseado na sua estrutura:
index.php
<?php
$page = isset( $_GET['page'] ) ? $_GET['page'] : '';
$pageToInclude = null;
switch ( $page )
{
case 'noticias':
$pageToInclude = 'templates/noticias.php';
$pageTitle = 'Notícias';
break;
case 'contato':
$pageToInclude = 'templates/contato.php';
$pageTitle = 'Contato';
break;
}
require 'header.php';
if ( ! is_null( $pageToInclude ) && file_exists( $pageToInclude ) )
require $pageToInclude;
require 'footer.php';
header.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title><?php echo isset( $pageTitle ) ? $pageTitle : 'Título Padrão'; ?></title>
</head>
<body>
footer.php
</body>
</html>
templates/contato.php
<h1>Contato</h1>
templates/noticias.php
<h1>Notícias</h1>
Mas... Por quê
$_GET['page'] ) ? $_GET['page'] : '
?
No seu header.php, faça algo assim na tag title:
Pra facilitar, deixe todos os requires para depois do switch. Algo assim:
switch($pagina) { case "noticias":if ( ! is_null( $pageToInclude ) && file_exists( $pageToInclude ) )
include($pageToInclude);
include("templates/footer.php"); Você pode melhorar seu sistema de rotas e URLs Amigáveis. Veja:
http://rberaldo.com.br/urls-amigaveis-sem-htaccess-usando-slim/
PS: funções mysql_* estão obsoletas desde o PHP 5.5 e serão removidas do PHP em breve. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql