Как реализовать многократно используемые меню HTML-навигации? - PullRequest
8 голосов
/ 04 августа 2009

Я уверен, что эта тема поднимается постоянно, но я не могу найти точный ответ. У меня есть вертикальная строка меню, которую я хочу использовать на наших веб-страницах (> 20) для сайта.
Строка меню закодирована в html (UL, LI, A), использует теги Div и CSS для достижения желаемого эффекта.

Мы хотим найти самый простой подход к повторному использованию строки меню на всех веб-страницах, при этом мы можем поддерживать и масштабировать по мере необходимости, поэтому нам не нужно изменять все страницы каждый раз, когда мы добавляем страницу. Мы бы предпочли избегать подхода к кодированию, если это возможно, то есть мы могли бы жить только с одним основным файлом, который мы редактируем по мере необходимости. Так как мы используем CSS и DIV, я не думаю, что фреймы - это ответ. Какие-нибудь мысли?

Ответы [ 9 ]

8 голосов
/ 04 августа 2009

Включения на стороне сервера - путь, если вы не хотите использовать язык программирования.

Они принимают эту форму:

<!--#include virtual="menu.html" -->

и будет вставлен на страницу, где бы вы ни поместили этот тег в ваш HTML. Он требует синтаксического анализа на стороне сервера, поэтому на вашем веб-сервере должны быть включены включения на стороне сервера. Вы можете попробовать его, и если он не работает, обратитесь к хосту вашего сервера, чтобы узнать, сможете ли вы включить их. Если это Apache, есть способ их включения через файлы .htaccess.

2 голосов
/ 15 декабря 2016

Использование скрипта w3 ..

index.html

<!DOCTYPE html>
<html>
<script src="http://www.w3schools.com/lib/w3data.js"></script>

<body>

<div w3-include-html="header.html"></div>
<div w3-include-html="nav.html"></div>

<script>
w3IncludeHTML();
</script>

</body>
</html>

header.html

<h1>Title</h1>

nav.html

<h2>Your nav</h2>

Смотри также: http://www.w3schools.com/howto/howto_html_include.asp

И не забудьте протестировать этот код на вашем локальном хосте.

2 голосов
/ 28 сентября 2011

Без каких-либо серверных сценариев или Javascript вы можете использовать теги object или iframe.

http://www.w3schools.com/tags/tag_object.asp

http://www.w3schools.com/tags/tag_iframe.asp

Единственное, на что нужно обратить внимание, это указать target = "parent" в ссылках.

Надеюсь, это поможет

2 голосов
/ 04 августа 2009

Чтобы сделать это, вам придется использовать некоторые серверные технологии. Например, вы могли бы ...

  • включить их в php

  • поместите их на главной странице в .net

  • поместить это в частичную или макетную страницу в рельсах

Некоторые читают:

http://us.php.net/manual/en/function.include.php

http://msdn.microsoft.com/en-us/library/wtxbf3hh.aspx

Другим решением было бы создать все это, используя Javascript, , но, пожалуйста, не делайте так:)

HTML:

<script type="text/javascript" src="hack.js"></script>
<div id="mymenu">
</div>

hack.js:

function createMenu(){
  $("#mymenu").html("all the html of your menu");
}
1 голос
/ 09 сентября 2015

В качестве современного ответа на шестилетний вопрос: Веб-компоненты являются специально многократно используемыми компонентами HTML, и Полимер , возможно, является наиболее популярной на данный момент его реализацией. В настоящее время практически ни один браузер не имеет встроенной поддержки веб-компонентов, поэтому, по крайней мере, требуется заполнение Javascript.

1 голос
/ 25 августа 2014

Я столкнулся с тем же. Затем я создал новый файл для хранения html панели навигации.

Я создал файл navbar.html, в котором был весь мой штрих-код. Затем в вашем основном html-файле, где вы хотите панель навигации, просто включите этот файл с помощью jquery.

$(document).ready(function() {
    $('#navigation').load('navbar.html');
});

Затем в том месте, где вы хотите панель навигации, просто добавьте эту строку:

<div id="navigation"></div>
0 голосов
/ 05 августа 2009

Я сделал это двумя отдельными способами - один с использованием серверной части (PHP) и один с использованием Javascript (для демонстраций, которые должны иметь возможность работать без подключения к Интернету или серверных возможностей).

Поскольку PHP включает в себя, ваши страницы должны заканчиваться .php, а не .htm или .html, и они идеально подходят для замены заголовка, нижнего колонтитула, навигации и т. Д. Что-либо, что повторяется на нескольких страницах.

По сути, вы должны создать свой обычный код, а затем скопировать и вставить код, который вы хотите выделить - в этом примере - навигацию, - и сохранить его в другом файле с именем (например) inc_navigation.htm (эту страницу можно вызвать. HTM).

Тогда на ваших реальных страницах вы будете использовать следующий код:

<?php include('inc_navigation.htm') ?>

Это вставило бы вашу навигацию в тот момент, если бы у вас было изменение, которое вы бы сделали, вы бы сделали это в файле .htm, и оно распространялось бы на любую страницу с включенным.

Для включения javascript вы должны будете включить следующую строку вверху каждого документа, в который хотите включить навигацию:

<script type="text/javascript" src="includes.js"></script>

Затем вы создадите документ с именем include.js.

В верхней части этого документа вы объявите переменную навигации:

var navigation  = new Array();  // This is for the navigation.

Затем немного в том же документе вам нужно набросать код навигации (номера строк в квадратных скобках имеют решающее значение - держите их в порядке и начинайте с 0 - в этом коде не должно быть разрывов строк, поэтому каждый строка кода должна быть новой строкой):

// ==================== Navigation ==================== //
navigation[0]   = '<div id="tab_navigation">';
navigation[1]   = '<ul id="dropline">';
navigation[2]   = '<li><a href="index.htm"><b>Home</b></a></li>';
navigation[3]   = '<li><a href="about_us.htm"><b>About Us</b></a></li>';
navigation[4]   = '</ul>';
navigation[5]   = '</div><!-- Close TAB NAVIGATION -->';

Затем, немного позже, вы фактически вставите javascript, который поместит этот код на вашу страницу (он на самом деле не помещает его туда, а делает его доступным на странице, фактически не изменяя код .htm страница - поэтому если вы просматриваете исходный код, вы увидите ссылку на код, а не сам код).

function show(i)
 {
  for (x in i)
  {
   document.write(i[x]+'\n')
  }
 }

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

<script type="text/javascript">show(navigation);</script>

Где это имя после SHOW и в скобках - это имя вашей переменной (объявленной ранее).

У меня есть сайты, показывающие оба метода, если вы хотите их увидеть, просто отправьте мне сообщение.

0 голосов
/ 04 августа 2009

На сегодняшний день одним из лучших решений, которые я нашел, является моделирование меню после решения Сын Suckerfish XHTML / CSS, которое довольно хорошо задокументировано в Интернете, теперь в сочетании с некоторой логикой на сервере для сделать неупорядоченный список Используя неупорядоченные списки, у вас есть пара различных опций для вывода результатов, но пока меню имеет некоторую базовую иерархию, вы можете генерировать его. Затем для конкретной страницы все, что вам нужно сделать, это включить ссылку на функцию создания меню.

0 голосов
/ 04 августа 2009

Если вы используете PHP, все, что вам нужно сделать, это использовать команду include, без этой кодировки, кроме этой одной команды.
Также проверьте на стороне сервера включает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...