включает библиотеку js для заголовка изнутри тела и относится только к одной странице

0

Я использую google chart js library только на одной странице моего проекта, и у меня есть внешний и глобальный верхний и нижний колонтитулы. head находятся в файле head.php, и в него включены необходимые библиотеки js. Анатомия моих страниц такова:

<?php
require('header.php');
?>

<div>my body elements of this page lie here </div>

<?php
require('footer.php');
?>

Я могу включить библиотеку google диаграмм в header.php. Он будет загружен на каждую страницу, но мне нужно его только на одной странице. Поэтому я не хочу замедлять загрузку. Как включить эту библиотеку только в том случае, если я загружаю эту страницу? Является ли это возможным? Заранее спасибо.

  • 0
    Если вы уже загрузили его на одной странице, он будет кэширован для всех последующих страниц и не должен быть проблемой для ресурсов. Вы всегда можете создать специальный заголовочный файл для одной страницы.
  • 0
    Что сказал @JayBlanchard, но вы также можете написать функцию PHP, которая отслеживает открытый в данный момент URL-адрес, и, если он соответствует вашей странице диаграмм, выведите нужную библиотеку JS в заголовок HTML ...
Теги:
structure
html-head

3 ответа

3

Просто добавьте переменную, прежде чем включать заголовок, и проверьте эту переменную в header.php

<?php
//page that requires the js
$chartjs = true;
require('header.php');
?>

<div>my body elements of this page lie here </div>

<?php
require('footer.php');
?>

,

<?php
//header.php
if(isset($chartjs) && $chartjs){
    //inlcude js file here
}
  • 0
    Нижний колонтитул может включать закрывающий тег HTML, поэтому PHP может быть не таким простым ... ему нужно было бы записать его в footer.php если это так. Отличный и простой ответ, хотя :)
0

Альтернативно, вы можете загрузить его условно через JavaScript в зависимости от контекста страницы, я буду использовать jQuery здесь для удобства использования с его стороной Ajax, например:

Тело страницы:

<div class="chart"></div>

header.php

<script>
     var $charts = $('.chart');
     if ( $charts.length ) {
         $.getScript("charts.js", function(){
              $charts.plot(); //init.
         });
     }
</script>

Однако это замедлит загрузку диаграммы. Кроме того, для справки о том, как загрузить без библиотеки jQuery, см. Загрузка сценариев после загрузки страницы. для некоторых хороших ссылок на сценарии загрузки после страницы.

Ссылка $.getScript

0

У вас есть несколько вариантов. Во-первых, Стив рекомендовал в своем ответе.

Я хотел бы использовать это на странице диаграммы:

require('header.php');
?>
<script type="text/javascript" src="chart.js"></script>

<div>my body elements of this page lie here </div>

<?php
require('footer.php');

Другой - проверить $_SERVER["REQUEST_URI"] и включить только в заголовок, это указанная страница.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню