Как лучше загружать дополнительный JavaScript в нижний колонтитул?

Каждая страница моего сайта состоит из:

  • общий заголовок
  • сама страница
  • общий нижний колонтитул

В коде страница выглядит так:

<?php
require_once('header.php');
load_header('title', 'meta description'); // loads also MENU
?>

// Unique content of the page

<?php
// footer settings
$load_contact_info = true;

// load footer
require_once('footer.php');
load_footer($load_contact_info);
?>

На тех же страницах я хотел бы загрузить дополнительный контент (например, больше библиотек JS) в footer.php (прямо перед закрывающим тегом тела):

<?php
function load_footer($load_contact_info = false) {
?>
<footer>
<?php if ($load_contact_info) { ?>
<div id="contact-us">
// contact info
</div>
<?php } ?>

<div id="inner-footer">
// more generic footer content
</div>

</footer>
<script src="<?php echo($url); ?>js/vendor/jquery.js"></script>

// I want to load more UNIQUE JS content here at SOME pages

</body>
</html>
<?php } ?>

Как лучше загружать дополнительные библиотеки в нижний колонтитул? Должен ли я продлить footer.php с более if-yes-load-more, как это:

if ($google_maps_api) {
// map settings
echo "<script src=\"https://maps.googleapis.com/maps/api/js?callback=initMap\" async defer></script>";
}
if ($other_api) {
echo "<script src=\"https://example.com/other-api/\" async defer></script>";
}

Или есть другие возможности сделать это лучше?

0

Решение

Загрузка дополнительных библиотек не должна быть задачей нижнего колонтитула. Нижний колонтитул отображает нижний колонтитул. Вы должны создать новый файл php и назвать его что-то вроде «handle_js.php»

function print_script_tag($src, $options) {
echo "<script src=\"" . $src . "\" " . $options . "></script>\n";
}

function print_all_script_tags_for_url($url) {
if($url === 'example') {
print_script_tag('library.js','async');
}
}

и в вашем файле нижнего колонтитула

</footer>
print_scripts($url);
</body>

Я не проверял код.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]