Я хотел бы, чтобы мой заголовок, панель навигации, боковая панель и нижний колонтитул синхронизировались между всеми страницами, только с дифференциацией содержимого/контейнера. Я знаю, что для этого есть команда PHP (включая: http://www.w3schools.com/php/php_includes.asp), но мой веб-хостинг не поддерживает сценарии на стороне сервера, а только статические веб-страницы. Я специально ищу пути с JavaScript и jQuery.
Отображение одного и того же содержимого (верхний колонтитул, панель навигации, боковая панель, нижний колонтитул) на всех страницах без сценариев на стороне сервера (PHP)
Ответы (4)
Вы можете использовать генератор статических сайтов, например Jekyll, создавать страницы на своем персональном компьютере и загружать окончательные файлы на сервер веб-хостинга. .
Вы можете использовать Underscore Javascript и его систему шаблонов:
Простой пример:
var tpl = _.template("<h1>Some text: <%= foo %></h1>");
тогда tpl({foo: "Hello World"})
будет преобразовано в строку <h1>Some text: Hello World</h1>
Если вам нужно сохранить это ограничение и не использовать рендеринг на стороне сервера, я бы посоветовал вам изучить что-то вроде шаблонов jade. http://jade-lang.com/
Для начала вам не нужно многого, вы просто устанавливаете npm (https://www.npmjs.com/ - если вы хотите сделать что-то еще с Интернетом в будущем, он вам, вероятно, все равно понадобится) и jade-инструмент командной строки.
Затем в ваших шаблонах вы можете сделать что-то вроде:
// homepage.jade
include 'header.jade'
…
include 'footer.jade'
и вы получите хороший html-файл (ы).
Положительным моментом является то, что в конце концов у вас действительно будут надежные html-файлы, поэтому их источником будет полный, правильный html-документ, и пользователю не нужно будет загружать какую-либо библиотеку javascript только для того, чтобы она скачайте и каким-то образом прикрепите частичные html-файлы к вашему основному документу.
Он получит весь документ сразу.
Как сказал @chris85 в комментариях, я думаю, что лучший способ — сменить хостинговую компанию. Имейте в виду, что без скриптов на стороне сервера вы не можете хранить какую-либо информацию в базе данных для дальнейшего использования, а также не имеете некоторых основных функций веб-сайта, таких как контактная форма.
Тем не менее, если вы действительно хотите сделать веб-сайт, повторно используя заголовок и т. Д., Я бы сделал одну страницу для всех запросов и обрабатывал все клики по ссылкам с помощью JavaScript и jQuery.
Имейте в виду, однако, что этот подход быстро становится трудно поддерживать, когда ваш сайт становится больше.
Давайте сделаем простой пример:
index.html
<!DOCTYPE html>
<html>
<head>
<title>My Awesome single-page Website</title>
</head>
<body>
<header>
<ul>
<li><a class="menu-link" href="home.html">Home</a></li>
<li><a class="menu-link" href="about.html">About</a></li>
<li><a class="menu-link" href="contact.html">Contact</a></li>
</ul>
</header>
<div id="main">
<!-- let JavaScript handle the magic -->
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="file.js"></script>
</body>
</html>
файл.js
$(function(){
$('.menu-link').click(function() {
$.get($(this).attr('href'), "", function(data){
$('#main').html(data);
});
});
})
home.html
<div>
Be welcome!
</div>
about.html
<div>
About page
</div>
contact.html
<div>
Ouch, I do <b>not</b> have a contact page :(
</div>