2010-02-10 4 views
2

J'utilise essentiellement des variables php pour stocker la valeur du titre et l'ID du corps. Ce dernier est une technique pour avoir mon bouton (pressé) dans la navigation selon quelle section de la page l'utilisateur est (dans ce cas l'utilisateur saura qu'il est actuellement chez "home").Utiliser les variables php pour manipuler le titre du html et l'identifiant du corps (est-ce que quelqu'un le fait?)

Début de mon index.php:

<?php 
    $title = "New Project"; 
    $body = "home"; 
    include("common/header.php"); 
?> 
<div id="content"> 
    <div class="container"> 
     <div id="tagline"> 

Début de mon header.php

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/> 
    <title><?php echo $title; ?></title> 
    <link rel="stylesheet" type="text/css" href="styles/slimbox2.css" /> 
    <link rel="stylesheet" type="text/css" href="styles/global.css" /> 
    <link rel="stylesheet" type="text/css" href="styles/home.css" /> 
    <link rel="stylesheet" type="text/css" href="styles/contact.css" /> 
    <script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script> 
    <script type="text/javascript" src="scripts/jquery.corner.js"></script> 
    <script type="text/javascript" src="scripts/jquery.validate.js"></script> 
    <script type="text/javascript" src="scripts/slimbox2.js"></script> 
    <script type="text/javascript" src="scripts/custom.js"></script> 
</head> 
</head> 
<body id="<?php echo $body; ?>"> 
<div id="header"> 
    <div class="container"> 
     <div id="topbar"> 
      <h1><a href="http://widerdesign.co.nr/">wider design</a></h1> 
      <ul id="lang"> 
       <li><a href="index.php">English</a></li> 
       <li><a href="es/index.php">Español</a></li> 
       <li><a href="tw/index.php">中文(繁體)</a></li> 
       <li><a href="cn/index.php">中文(简体)</a></li> 
      </ul> 
      <ul id="nav"> 
       <li class="home"><a href="index.php">home</a></li> 
       <li class="products"><a href="products.php">products</a></li> 
       <li class="about"><a href="about.php">about</a></li> 
       <li class="contact"><a href="contact.php">contact</a></li> 
      </ul> 

Pour laisser l'utilisateur de savoir dans quelle section il/elle est:

#home li.home a, #products li.products a, #contact li.contact { 
    color: #999; 
} 

est il y a une façon plus simple de le faire? Est-ce que j'utilise ces variables PHP inutiles?

+0

Je pense que c'est ok, il n'y a pas de "include with variables" - vous utilisez un framework. –

+0

Pour des raisons de santé, vous devez html_entities() sur le titre, au cas où il inclurait des caractères amusants, dans votre exemple ce n'est pas important mais si vous récupérez ces titres depuis une base de données ou autre, c'est un moyen d'exploiter XSS votre site. – TravisO

Répondre

5

Oui, ce que vous faites est bien. Je fais quelque chose de similaire avec une classe PageTemplate. En plus de définir le titre et la navigation, il permet d'afficher les liens de navigation en fonction de l'authentification de l'utilisateur, d'ajouter javascript et css à la section head, etc.

Ce que vous faites est très commun. Il y a un million de façons de le faire, mais ils auront tous besoin de définir des variables.

-1

Cela fonctionne, mais vous devriez envisager d'utiliser un moteur de modèle tel que Smarty à la place.

+1

Pour ces raisons, PHP est sans doute _is_ le moteur de template. Pas besoin d'ajouter un autre calque. – benjy

0

Ou bien utiliser un framework MVC comme CakePHP

+0

Est-il correct d'utiliser CakePHP, même si ma page Web est statique à 98% (il affiche simplement des informations, des images et un formulaire de contact)? – alexchenco

+0

Si votre site est si statique, vous n'avez pas besoin d'utiliser CakePHP (ou tout autre framework d'ailleurs), il serait trop surchargé avec (à cet effet) des trucs inutiles –

1

janoChen,

J'utilise la méthode suivante:

// obtenir l'URL

$url= $_SERVER['PHP_SELF']; 

// ajouter une classe sur l'élément de menu

<ul id="lang"> 
     <li><a href="index.php" <?php if (strpos($url, "index.php")) { echo " class='active'"; } ?>>English</a></li> 

// avec css je mets un style pour la classe active

li a.active { 
color: #990000; 
} 

Mais votre méthode fonctionne également.

Questions connexes