2013-09-05 3 views
1

У меня есть приложение, в котором я создал header.php, который, очевидно, распространен для всех страниц приложения, которые я включаю поверх каждой другой страницы. Этот заголовочный файл содержит заголовки html и объявление DOCTYPE и т. Д., А также некоторые распространенные файлы JS и CSS, необходимые для каждой страницы. Но есть некоторые конкретные файлы, которые я хочу включить в зависимости от страницы.включает javascript-файл на основе URL-адреса

Теперь, как я могу добавить конкретный файл JS или CSS на основе URL-адреса, с которого запрашивается header.php.

Я попытался использовать $_SERVER['PHP_SELF'] в верхней части файла заголовка, чтобы получить URL-адрес, но он не сработал.

Пожалуйста, предложите наилучшую технику, которая должна использоваться в этой ситуации.

Пример кода

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

Показать код. «это не сработало» недостаточно. –

+0

@BartFriederichs Я отредактировал код – coder101

+0

Вы запрашиваете 'teachers.php' в своем браузере? И как это выглядит? –

ответ

3

Массив вы ищете суперглобальный $_SERVER. У этого есть вся эта информация. Более конкретно: $_SERVER['REQUEST_URI'].

$_SERVER['REQUEST_URI'] дает полный путь, включая косые черты и любой запрос GET. В вашем случае (если teachers.php находится в корне вашего сервера, и вы ничего не получаете), он будет содержать /teachers.php, и вы сравниваете его с teachers.php.

$_SERVER['SCRIPT_FILENAME'] получает Выполнение сценария, которого вы, кажется, ищете.

Вы можете использовать basename фильтровать путь из:

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

Кстати, @ решение hendyanto является также хорошим. Это, безусловно, устойчиво к изменениям имен файлов.

+0

На мой взгляд, создайте массив или объект, например $ css = array ('uri' => array ('css1.css', 'css2.css') ...) И сделайте функцию, загружающую спецификацию css или js с предлагаемым свойством request_uri – DevMetal91

+0

Ну, его все еще не работает. то, что я делаю, заключается в том, что поверх файла заголовка перед объявлением 'DOCTYPE' я храню значение массива request_uri в переменной, а затем на основе этого я пытаюсь включить тег JS – coder101

+0

@ coder101, чтобы показать некоторый код. –

2

Создайте переменную на странице, которая будет включать header.php, а затем проверьте переменную внутри header.php, чтобы определить, что делать.

Пример

в home.php (пример страницы, которая будет вызывать header.php)

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

/*Rest of your code*/ 

?> 

в 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

спасибо, человек, как сказал @bart, ур код действительно очень надежный. – coder101

0

I не знаю, что это совершенным или нет, но я использую его в своих приложениях

anypage.php

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

в заголовке.PHP

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

таким образом вы можете включить отдельные JS, CSS-файлы на разные страницы

Смежные вопросы