2013-09-05 5 views
1

J'ai une application dans laquelle j'ai créé un header.php qui est évidemment commun pour toutes les pages de l'application que j'inclus sur toutes les autres pages. Ce fichier d'en-tête contient les balises de tête html et la déclaration DOCTYPE etc. ainsi que certains fichiers JS et CSS courants nécessaires à chaque page. Mais il y a des fichiers spécifiques que je veux inclure en fonction de la page.inclure le fichier javascript basé sur l'URL

Maintenant, comment puis-je inclure un fichier JS ou CSS spécifique basé sur l'URL à partir de laquelle le header.php est demandé.

J'ai essayé d'utiliser $_SERVER['PHP_SELF'] en haut du fichier d'en-tête pour récupérer l'URL mais cela n'a pas fonctionné.

Veuillez suggérer avec la meilleure technique qui devrait être utilisée dans cette situation.

Exemple de code

header.php

<?php 
include (dirname(__FILE__) . "/includes/functions.php"); 
$url = $_SERVER['REQUEST_URI']; 
    ?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
<title>My APP</title> 
<meta charset="utf-8" /> 
<meta name="robots" content="noodp, noydir" /> 
<meta http-equiv="X-Frame-Options" content="deny" /> 
<link rel="stylesheet" href="css/main.css" type="text/css" /> 
<script src="js/main.js"></script> 
<?php 
if($url == "teachers.php"){ 
echo "<script src='js/teachers.js'></script>"; 
    } 
?> 

</head> 
<body> 
+0

Afficher un code. "ça n'a pas marché" ne suffit pas. –

+0

@BartFriederichs J'ai modifié pour inclure le code – coder101

+0

Demandez-vous 'teachers.php' dans votre navigateur? Et comment cela ressemble-t-il? –

Répondre

3

Le tableau que vous recherchez est le $_SERVER superglobale. Il a toutes ces informations. Plus spécifiquement: $_SERVER['REQUEST_URI'].

$_SERVER['REQUEST_URI'] donne le chemin complet, y compris les barres obliques et toute requête GET. Dans votre cas (si teachers.php est dans la racine de votre serveur, et vous N'obtenez rien), il contiendra /teachers.php, et vous comparez avec teachers.php.

$_SERVER['SCRIPT_FILENAME'] obtient le exécutant script, ce qui est ce que vous semblez rechercher.

Vous pouvez utiliser basename pour filtrer le chemin sur:

$url = basename($_SERVER['SCRIPT_FILENAME']); 

Par ailleurs, la solution de @ hendyanto est également bon. Il est certainement robuste contre les changements de nom de fichier.

+0

À mon avis, vous créez le tableau ou l'objet, comme $ css = array ('uri' => array ('css1.css', 'css2.css') ...) Et faire la fonction qui charge la spécification css ou js avec la propriété request_uri suggérée – DevMetal91

+0

Eh bien, ça ne marche toujours pas. ce que je fais est que sur le dessus du fichier d'en-tête avant la déclaration 'DOCTYPE' je stocke la valeur de tableau request_uri dans une variable et puis basé sur cela j'essaye d'inclure la balise JS – coder101

+0

@ coder101 montrer du code. –

2

Créer une variable sur la page qui inclura header.php, plus tard, vérifiez la variable à l'intérieur de header.php pour déterminer ce qu'il faut faire.

Exemple

à home.php (exemple de page qui appellera header.php)

<?php 
$page_code = "home"; 
include ("header.php"); 

/*Rest of your code*/ 

?> 

dans header.php

<?php 
switch ($page_code) { 
case 'home': 
    echo "include js and css here.."; 
    break; 

case 'profile': 
    echo "include js and css here.."; 
    break; 

default: 
    # code... 
    break; 
} 
?> 
+0

merci l'homme, comme @bart mentionné, le code ur est en effet très robuste. – coder101

0

I je ne sais pas parfait ou non, mais je l'utilise dans mes applications

anypage.php

<?php 
$js= "path/jstoinclude.js"; 
include "header.php"; 
?> 

en-tête.php

<?php 
//your code 
if(isset($js)){ 
echo "<script src='".$js."'></script>"; 
} 
?> 

de cette façon vous pouvez inclure js séparés, les fichiers CSS à différentes pages

Questions connexes