LINUX.ORG.RU
ФорумTalks

HTML-импорт. Локальный. Возможно?

 


0

1

Есть всякие инклуды для пхп, схожие штуки для nginx и т.п.

Их обрабатывает веб-сервер. А есть ли что-то такое для локального использования? Т.е. запускаем хтмлку любым более мене современным браузером и она берет из ../pages/list.html нужный (повторяющийся в хтмлках (кусок кода).

Как?

Нагуглил http://habrahabr.ru/post/230877/

Сделал
<link rel=«import» href="../_pages/articles.html">

Не канает.


Ответ на: комментарий от kiotoze

Ммм. Не. Вряд ли.
Мне нужно подключить огромный список скрытых дивов. Которые потом js дергаются.

dk-
() автор топика

Плюс, насколько я понимаю, view engine из, например,rails, довольно самостоятельная штука. Тоже недавно писал скрипт, который из slim шаблона генерит html безо всяких вебов.

chkalov
()
Ответ на: комментарий от dk-

Никакие)

Но тебе нужно написать xslt, который будет делать все, что нужно, плюс, исходные файлы должны быть xml.

Вообще, выглядит как извращение, но я так в униаере делал)

chkalov
()
Ответ на: комментарий от r_asian

\делает большие влажные глаза\
Ага :)

Мне надо в 20 хтмлок подключить массив вида:

<div class="links">
	<!-- Блок материалов на русском -->
	<div><a class="fancybox-htm fancybox.iframe" id="article_01_ru" href="../_pages/article_01/ru/index.html" title="С"></a></div>
	<div><a class="fancybox-htm fancybox.iframe" id="article_02_ru" href="../_pages/article_02/ru/index.html" title="Б"></a></div>
...
</div>

dk-
() автор топика

Да я что-то затупил, таких ведь штук полно, например,freemarker тоже можно локально, для файла выполнить.

Правда, я не совсем понял задачу: уже есть готовый html в определенном формате или нет?

Во втором случае, я бы взял таки какой-нибудь freemarker.

chkalov
()
Ответ на: комментарий от dk-

Блин, мне кажется тогда проще придумать какую- нибудь конструкцию типа того-же link rel, и потом скриптом на <language name> во всех файлах заменить но то, что надо.

chkalov
()
Ответ на: комментарий от chkalov

Есть хтмлка, в ней разное, в т.ч. панорамный плеер. Таких однотипных (отличаются заголовком и ИД виртуального тура) хтмлок 20 шт.

В каждую из них надо подключить один и тот же длинющий (десятки позиций) список дивов (см. поста выше).

Должно работать под любым более менее актуальным браузером. Без веб-сервера. Локальный запуск с диска.

dk-
() автор топика
Ответ на: комментарий от chkalov

Этот список (библиотека карточек продуктов) может редактироваться. Ну вот что бы его 20 раз не копирать в однотипные хтмлки.

Было бы оно только для веба - я бы пых пых инклуд повесил и все. Но оно должно работать и локально.

dk-
() автор топика
Ответ на: комментарий от dk-

Да, кажется понял. Из того, что поддерживают многие браузеры это, насколько я знаю, только xslt, там можно брать данные из нескольких файлов.

Но, недостатки я уже озвучил: не совсем просто/тривиально, плюс, входные файлы должны быть xml( хотя бы xhtml).

Других вариантов я, честно говоря, не знаю.

chkalov
()
Последнее исправление: chkalov (всего исправлений: 1)
Ответ на: комментарий от chkalov

От этого в FF могут быть проблемы со скриптами, если они у тебя есть (двойное выполнение на разных деревьях).

Deleted
()
Ответ на: комментарий от dk-

Пардонь, товарищ. Невнимательно прочитал условия задачи. ВСя суть в локальности файлов. На типично настроенном браузере мой способ не позволят провернуть настройки безопасности.

r_asian ★☆☆
()
Ответ на: комментарий от Deleted

Именно, я не как-то зевнул тот факт, что речь о локальной ФС

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

Эх все равно сегодня пьянка сорвалась, вот тебе за это в отместку на коленке написанный за 15 мин быдлокод и файло для примера.

r-asian@localhost:~/Music/dk$ tree
.
├── build.pl
├── index.html
└── pages
    ├── 1.html
    └── 2.html
r-asian@localhost:~/Music/dk$ cat index.html 
<html>
<head>
</head>
<body>
<include src="pages/2.html">
<include src="pages/2.html">
</body>
</html>
r-asian@localhost:~/Music/dk$ cat pages/1.html 
	<a class="fancybox-htm fancybox.iframe" id="article_01_ru" href="../_pages/article_01/ru/index.html" title="С">123</a>r-asian@l
r-asian@localhost:~/Music/dk$ cat pages/2.html 
    <a class="fancybox-htm fancybox.iframe" id="article_02_ru" href="../_pages/article_02/ru/index.html" title="С">456</a>
r-asian@localhost:~/Music/dk$ cat build.pl 
#!/usr/bin/perl

open(A,"index.html");$html = join('',<A>);close(A);

foreach $inc(($html=~m|<include.*?src=["'].*?["'].*?>|gi)){
    if($inc=~m|<include.*?src=["'](.*?)["'].*?>|i){
	open(A,$1);$inc_code= join('',<A>);close(A);
	$html=~s|\Q$inc\E|$inc_code|gi;
    }
}

open(A,">build.html");print A $html;close(A);

Запускаем build.pl, получаем

r-asian@localhost:~/Music/dk$ cat build.html 
<html>
<head>
</head>
<body>
    <a class="fancybox-htm fancybox.iframe" id="article_02_ru" href="../_pages/article_02/ru/index.html" title="С">456</a>

    <a class="fancybox-htm fancybox.iframe" id="article_02_ru" href="../_pages/article_02/ru/index.html" title="С">456</a>

</body>
</html>
r_asian ★☆☆
()
Ответ на: комментарий от r_asian

Спасибо, конечно, большое...
Но откуда у вендовозов на компе перл то?)

Оно должно запускаться локально в дефолтных браузерах на вин\мак\лин.

dk-
() автор топика
Ответ на: комментарий от r_asian

\перечитав внимательнее

хм. вроде полнял логику. конструктор этой хрени. тоже мысль да.

я планировал (если не получится) пойти наоборот. на серврее собирать с инклудами, а потом сохранять нагенеренные хтмлки.

dk-
() автор топика

Сделать один HTML-файл, а название и туры менять по суффиксу из js.
т.е index.html/#3
index.html/#4

В JS выглядит примерно так:

switch(window.location.hash) {
  case '#1':
    $('.header').css('background-image', "url('tmp/repair2.jpg')");
    $('.header').css('background-position', "50%");
    $('.header-panel').removeClass('col-md-7 col-md-offset-5').addClass('col-md-6');

    $htl1.text('Не заряжается').show();
    $htl3.text('компьютер?').show();
    break;

  case '#2':
    $('.header').css('background-image', "url('tmp/matrica2.jpg')");
    $('.header').css('background-position', '50%');
    $('.header-panel').removeClass('col-md-7 col-md-offset-5').addClass('col-md-6');

    $htl1.text('Необходима').show();
    $htl3.text('замена матрицы?').show();
    $hb.text('Получить консультацию!');
    break;

Kaschenko
()
Последнее исправление: Kaschenko (всего исправлений: 1)
Ответ на: комментарий от dk-

Спасибо, конечно, большое...

Пожалуйста, конечно, но это всё я не от доброты душевной, а от скуки, и человеконенавистничества

Но откуда у вендовозов на компе перл то?)

От верблюда http://learn.perl.org/installing/windows.html

Оно должно запускаться локально в дефолтных браузерах на вин\мак\лин.

Собираешь из кучи своих html-ов один большой и запускаешь его хоть на кофемолке. Думаю, на кофемолку можно поставить тот же lynx

r_asian ★☆☆
()
Ответ на: комментарий от dk-

я планировал (если не получится) пойти наоборот. на серврее собирать с инклудами, а потом сохранять нагенеренные хтмлки.

И так тоже можно, но нужен webсервер

r_asian ★☆☆
()

Я так делал, да. Генерилось скриптом, клалось куда надо в виде готовых статических файлов с «копипастой» внутри. Естессно, при изменении чего-либо надо было запускать на перегенерацию всех. Вполне себе жить можно в сравнении с ручной копипастой в десятках файлов.

deep-purple ★★★★★
()

А вообще - подло такие темы в толксах постить, а не в web-dev

r_asian ★☆☆
()
Ответ на: комментарий от dk-

Проверил, работает.
Только не index.html/#4, а index.html#4
http://pic4a.ru/ijz5/
У меня, в зависимости от передаваемого номера, меняется картинка и текст.

Kaschenko
()
Ответ на: комментарий от r_asian

Не-не-не, я немного про другое. HTML один, название страницы и тур только из JS меняются в зависимости от указанного за решеткой номера

Kaschenko
()
Последнее исправление: Kaschenko (всего исправлений: 1)

А знаете в чем жопа?

Я прораммера за приличное очень бабло на проект подключил. И всё равно во многое сам делаю. Идиота кусок.

dk-
() автор топика
Ответ на: комментарий от chkalov

Куча сложных виртуальных туров по разным объектам.

Заказчику нужно чтоб не только сайт, но и локальная копия запускалась. В дефолтном десктопе любви современным браузером.

dk-
() автор топика
Ответ на: комментарий от chkalov

Никакой установки. Запуск хтмлки. А она через жс гоняет туры.

dk-
() автор топика
Ответ на: комментарий от dk-

Заказчику нужно чтоб не только сайт, но и локальная копия запускалась

Так это через

wget -r -k "http://site.com"

Делается

r_asian ★☆☆
()
Ответ на: А знаете в чем жопа? от dk-

Я прораммера за приличное очень бабло на проект подключил. И всё равно во многое сам делаю.

У меня так с сантехниками было. А потом со сварщиками. А потом с ...

Короче, жизнь - боль

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

Если есть право запускать утилиты, то можно запустить и самодельный бинарь меняющий в html файлах код между метками А и Б. Объяснить это погромисту - пусть напишет.

Napilnik ★★★★★
()
Ответ на: комментарий от dk-

Если проинсталировать nodejs то затем запустить вэб сервер занимает 2 команды

npm install -g http-server

устанавливает простой сервер в глобальное окружение
затем из директории с сайтов говорите

http-server -p3000 -c-1

запускает сервер в текущей директории на порт 3000 и проверяет обновления файлов.
причем первую нужно давать один раз а вторую можно в cmd файл поместить(не забудьте сначала перейти в дир. с проектом) и повесить ярлык на десктоп.

если поставить gulp (модуль ноды) то можно гораздо лучше всем управлять, но это вам на будущее

PS
Прочитал тред.
Да, для такой задачи сервер наверное не нужен.

grim ★★☆☆
()
Последнее исправление: grim (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.