Title Dinamico PHP

  • Creatore Discussione Creatore Discussione Jonn
  • Data di inizio Data di inizio

Jonn

Utente Attivo
29 Dic 2012
352
3
18
Pistoia
Sto cercando una soluzione a questo dilemma:

Pagina PHP:
PHP:
<div id="content">
$link = $_GET["page"];
switch ($link)
{
case "card":include('informazioni.txt');break;
default  :include('index.txt');break;
}
?>
</div>

E la pagina index.php è una sola dove dal div id content vengono caricate tutte le altre pagine in formato TXT; ora, volendo per principio rispettare nel resto del codice HTML tutti gli standard del W3C in XHTML 1.0 Strict e avendo tutte le pagine txt in questo modo:

informazioni.txt:
<br />Nome:
<br />Cognome....bla bla bla...

e basta.

Non posso inserire il Tag TITLE dell'html in queste ultime perchè ci dovrebbero essere anche i tag DOCTYPE, HTML, HEAD per la validazione, anche se così facendo ho visto che posso cambiare il title in base alla pagina visualizzata nel div content.
Come potrei fare per fare si che in base alla pagina visualizzata nel content il tag title cambi?
 
Ultima modifica di un moderatore:
L'idea che mi viene in mente così su due piedi è settare una variabile di sessione dove ci metti il nome del file che hai incluso, poi la utilizzi come title.
 
Io strutturerei la pagina index.php in questo modo:
PHP:
<?php
$link = isset($_GET['page']) ? trim($_GET['page']) : '';

ob_start();

switch ($link) {
	case 'pagina1':
		require_once __DIR__ . '/pages/pagina1.php';
		break;

	case 'pagina2':
		require_once __DIR__ . '/pages/pagina2.php';
		break;

	default:
		require_once __DIR__ . '/pages/404.php';
}

$contents = ob_get_contents();
ob_end_clean();
?>
<!DOCTYPE html>
<html lang="it">
	<head>
		<title><?php echo $title; ?></title>
		<meta charset="utf-8" />
	</head>

	<body>
		<?php echo $contents; ?>
	</body>
</html>
E nelle pagine pagina1.php, pagina2.php e 404.php metterei:
PHP:
<?php
$title = 'Titolo della pagina';
?>
<p>Contenuto della pagina.</p>
 
Scusate se riporto in cima questa discussione,
ringrazio Longo8 anche se non ho specificato che ho cominciato da pochissimo tempo con il php e che cioè scrivo le pagine strettamente in xhtml.
Mi sembra di capire che la tua soluzione sarebbe quella di usare il nome stesso del file come title delle pagine, un'ottima soluzione direi, ma dovrei studiarmela un pò prima di capire come applicarla al meglio (visto che sono un po neofita ahah) ma soprattutto per capire se è la soluzione migliore per i miei progetti, Grazie comunque.

Ad Alessandro:
grazie mille intanto per l'interesse dimostrato finora, la tua soluzione mi sembra molto professionale a prima vista, e la strutturazione che mi hai scritto la voglio studiare e capire anche se magari non la userò (ma penso proprio di si!).

Adesso proverò, anche se mi perderò sullo studiare quel pezzo di codice PHP visto che dei codici che scrivo mi piace conoscerne il loro funzionamento a pieno altrimenti preferisco non usarli ^^.

Per me, è risolto!!
Grazie :)
 
Scusate se riuppo il post ma sono riuscito oggi a far funzionare un'altra soluzione molto più semplice, esteticamente ordinata e meno laboriosa.

Posto il codice dell'intera index.php per far vedere come funziona il title:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="it">
<head>
<title>Johnny Ferrari - 
<?php
$link = $_GET["page"];
switch ($link)
{
case "profilo": echo 'Profilo';break;
case "servizi": echo 'Servizi';break;
case "portfolio": echo 'Portfolio';break;
case "progetti": echo 'Progetti';break;
case "questosit": echo 'Questo Sito';break;
case "contatti": echo 'Contatti';break;
case "modweb": echo 'Moduli';break;
case "commenti": echo 'Commenti';break;
case "includedir": echo 'Include Directory';break;
case "textarc": echo 'Testo Arcobaleno Animato';break;
case "textscav": echo 'Testo Scavato';break;
default :  echo 'Profilo';break;
}
?></title>
</head>
<body>
<div class="container">
<div class="header"><img src="img/headerimg.png" alt="" /></div>
<div class="corpopagina">
<div class="settore2">
<div class="percorso"></div>
<div class="nav-left"><?php include('mod/menu.txt');?><?php include('mod/statist.txt');?></div>
<div class="contentb"><?php
$link = $_GET["page"];
switch ($link)
{
case "profilo":include('page/profilo.txt');break;
case "servizi":include('page/servizi.txt');break;
case "portfolio":include('page/portfolio.txt');break;
case "progetti":include('page/progetti.txt');break;
case "questosit":include('page/questo.txt');break;
case "contatti":include('page/contatti.txt');break;
case "modweb":include('page/modweb.txt');break;
case "commenti":include('page/dilatua.txt');break;
case "includedir":include('download/moduli/IncludeDirectory/index.php');break;
case "textarc":include('download/moduli/ScrittaArcobaleno/testo_arcobaleno_animato.txt');break;
case "textscav":include('download/moduli/TestoScavato/testoscavato.txt');break;
default : include('page/profilo.txt'); break;
}
?></div>
<div class="nav-right"><?php include('mod/player.txt');?><?php include('mod/risorseest.txt');?><?php include('mod/risorseint.txt');?></div>
</div>
</div><!--Fine Corpopagina-->
<div class="footer">Johnny Ferrari Informatica &copy; 2013 - <a class="menulink" href="?page=questosit">Informazioni su questo sito</a>
<br /><p><a href="http://validator.w3.org/check?uri=referer"><img src="img/XHTML 1.0.png" alt="Valid XHTML 1.0 Strict" /></a> <a href="http://jigsaw.w3.org/css-validator/check/referer"><img style="border:0;" src="img/CSS3.png" alt="CSS Valido!" /></a></p></div>
</div><!--Fine Container-->
</body>
</html>

QUESTO PER CHIUNQUE AVENDO LE PAGINE IN PHP E SI è AFFACCIATO DA POCO A QUESTO STUPENDO LINGUAGGIO, SI è TROVATO A VOLER REALIZZARE UN TITLE CHE CAMBIA IN BASE ALLA PAGINA IN CUI CI SI TROVA
Appena ho trovato questa soluzione ho pensato: "mavvaff.....!"

Ringrazio di nuovo infinitamente alessandro che ha posto una soluzione che comunque funziona ugualmente anche se più laboriosa e spero che questo 3D possa servire.
 

Discussioni simili