Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как оптимально сделать шаблон для сайта? / 20 сообщений из 20, страница 1 из 1
06.01.2015, 12:27
    #38849034
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
Добрый день! Думаю, как сделать оптимальный шаблон для своего сайта.

Задача такая:

1. Чтобы шаблон представлял собой целостный документ HTML. Это нужно для того, чтобы редактировать и видеть шаблон целиком в любом HTML-редакторе.

2. Шаблон состоит из блоков. К примеру упрощенно из двух блоков:
Код: html
1.
2.
3.
4.
<HTML><BODY><TABLE>
<TR><TD id="SectHead">Область шапки</TD></TR>
<TR><TD id="SectPage">Содержимое страницы</TD></TR>
</TABLE></BODY></HTML>



Как лучше программно менять innerHTML у элементов, у которых ID="SectHead" и ID="SectPage"?

Я предположил несколько вариантов решения:

1. С помощью JavaScript . Этот вариант отклонил, т.к. предполагаю что получить от сервера готовый HTML-код лучше, чем прорисовать страницу на глазах у пользователя.

2. С помощью PHP через поиск замену . Загружаю HTML-код файла шаблона в переменную. Ищу тег <TD id="SectHead"> и все, что после него заменяю на содержимое блока. Окончанием блока будет считаться первый встретившийся тег </TD>. В результате браузер получит цельную HTML-страницу, которую не надо будет потом дорисовывать с помощью JavaScript. Вариант приемлемый, но сложноватый в плане написания PHP-кода. Хотелось бы что-то проще.

3. С использованием обработчика XML-кода SimpleXML . Алгоритм такой: загружаю HTML-код из файла шаблона, каким-то образом его преобразую в XML код, заменяю в ветвях "SectHead" и "SectPage" содержимое и выдаю браузеру результат в виде HTML-кода. Этот вариант кажется наиболее приемлимым, но нигде не нашёл примеров автоматического преобразования из HTML и XLS.

4. Может есть ещё какие-то варианты?
...
Рейтинг: 0 / 0
06.01.2015, 12:36
    #38849044
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
Алексей Смирнов,
DOM,AJAX,PHP, да и без JS не обойтись.. вдруг захотите например календарик прицепить на сайт
В вашем примере симантическая ошибка... Используйте div блоки
...
Рейтинг: 0 / 0
06.01.2015, 13:01
    #38849077
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
kunaksergeyАлексей Смирнов,
DOM,AJAX,PHP, да и без JS не обойтись.. вдруг захотите например календарик прицепить на сайт
В вашем примере симантическая ошибка... Используйте div блоки

Я задавал конкретный вопрос. Перечислить слова DOM,AJAX,PHP,JS я тоже могу. И уже давно этим пользуюсь.

В принципе я нашёл пример по преобразованию HTML в XML и проверил - работает:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?php

// ФУНКЦИЯ: преобразование из XTML в XML
function html2xml($text, $encoding = 'UTF-8') {
	if ( strtoupper($encoding) !== 'UTF-8' ) $text = iconv($encoding, 'UTF-8', $text);
	$doc = new DOMDocument();
	if ( @ $doc->loadHTML( encode($text) ) ) return decode( $doc->saveXML() );
	return false;
}
   
// ФУНКЦИЯ: URL-кодирование
function encode($text) { return preg_replace("/([^A-Za-z_0-9\\s\\-'\"&;<>\\/:=])/e", "'%' . bin2hex('\\1')", $text); }
   
// ФУНКЦИЯ: URL-разкодирование
function decode($text) { return preg_replace("/%([A-Fa-f0-9]{2,2})/e", "chr(0x\\1)", $text); }

// ПРОВЕРКА:

echo html2xml(file_get_contents('proba.htm'));

?>
...
Рейтинг: 0 / 0
06.01.2015, 13:06
    #38849085
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
Алексей Смирнов4. Может есть ещё какие-то варианты? ага я сейчас используюсь twig и мне нравится
...
Рейтинг: 0 / 0
06.01.2015, 13:08
    #38849087
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
Алексей Смирнов,

Как лучше программно менять innerHTML у элементов, у которых ID="SectHead" и ID="SectPage"?
Код: javascript
1.
$('#SectHead').html(data);$('#SectPage').html(data)
...
Рейтинг: 0 / 0
06.01.2015, 13:11
    #38849091
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
kunaksergeyАлексей Смирнов,

Как лучше программно менять innerHTML у элементов, у которых ID="SectHead" и ID="SectPage"?
Код: javascript
1.
$('#SectHead').html(data);$('#SectPage').html(data)



О спасибо!) Это обычный PHP без всяких библиотек и XML?
...
Рейтинг: 0 / 0
06.01.2015, 13:13
    #38849095
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
или с помощью php

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
<?php
$str="Область шапки";
$str2="Содержимое страницы";
?>
<HTML><BODY><TABLE>
<TR><TD id="SectHead"><?=$str?></TD></TR>
<TR><TD id="SectPage"><?=$str2?></TD></TR>
</TABLE></BODY></HTML
...
Рейтинг: 0 / 0
06.01.2015, 13:13
    #38849096
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
Алексей СмирновkunaksergeyАлексей Смирнов,

Как лучше программно менять innerHTML у элементов, у которых ID="SectHead" и ID="SectPage"?
Код: javascript
1.
$('#SectHead').html(data);$('#SectPage').html(data)



О спасибо!) Это обычный PHP без всяких библиотек и XML? еще рано оптимизировать шаблоны, делайте пока как считаете правильным и со временем перейдете на шаблонизаторы.
...
Рейтинг: 0 / 0
06.01.2015, 13:15
    #38849097
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
Алексей Смирнов,
это jquary..
...
Рейтинг: 0 / 0
06.01.2015, 13:16
    #38849099
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
kunaksergeyАлексей Смирнов,
это jquary..

А нет jquery не хочу. Проще сделать одну функцию на PHP через поиск-замену.
...
Рейтинг: 0 / 0
06.01.2015, 13:22
    #38849108
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
на php написал выше... проще некуда
...
Рейтинг: 0 / 0
06.01.2015, 13:25
    #38849114
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
SmeL_md еще рано оптимизировать шаблоны, делайте пока как считаете правильным и со временем перейдете на шаблонизаторы.

Я уже этот этап прошел). И написал действующий модуль на PHP+MySQL, который уже в понедельник запущу в работу.
Но пока осталось несколько дней каникул, хотелось бы сразу заложить оптимальную структуру для проекта, потому что у меня уже сейчас крыша едет от пляски перед глазами переменных, функций, файлов. А когда будет 100 модулей - это будет катастрофа.

Надо как-то все упорядочить. Рекомендуют большие проекты писать в ООП. Но пока чёткая картина не складывается.

Пока начал с того, что представил Apache объектом PHP. Так же шаблон представил объектом PHP. Первый второму отправляет запрос. Второй должен первому вернуть готовый HTML-код. Третий объект PHP - это шаблон HTML. Шаблон будет состоять так из объектов (блоков шаблона). И т.д. Как-то так.
...
Рейтинг: 0 / 0
06.01.2015, 13:33
    #38849121
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
kunaksergeyили с помощью php

Код: php
1.
2.
<TR><TD id="SectHead"><?=$str?></TD></TR>
<TR><TD id="SectPage"><?=$str2?></TD></TR>



kunaksergey, такой вариант я тоже думал. Но он мне не нравится тем, что тот человек, который делает шаблон, должен будет в него вставлять эти закорючки. А желательно, чтобы дизайнера меньше заботили проблемы программиста.
Вторая причина - на этапе разработки шаблона дизайнеру хочется наполнить блоки уже каким-то содержимым для образца, чтобы увидеть сайт целиком в готовом виде. Данный вариант не позволит это сделать. Проще тегам <TD> или <DIV> (если вы хотите) присвоить ID и на этапе выполнения кода PHP заменить содержимое блоков контентом.
...
Рейтинг: 0 / 0
06.01.2015, 14:46
    #38849202
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
Алексей Смирнов,
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<?php
$SectHead="<root><element><child>MY HEAD</child></element></root>";
$SectPage="<root><element><child>MY PAGE</child></element></root>";

$orgdoc=new DOMDocument;
$orgdoc->loadXML($SectHead);
$node = $orgdoc->getElementsByTagName("element")->item(0);


$doc = new DOMDocument();
$doc->loadHTML("<HTML><BODY><TABLE>
<TR><TD id='SectHead'></TD></TR>
<TR><TD id='SectPage'></TD></TR>
</TABLE></BODY></HTML>");

$node=$doc->importNode($node,true);
$doc->getElementById('SectHead')->appendChild($node);

$orgdoc->loadXML($SectPage);
$node = $orgdoc->getElementsByTagName("element")->item(0);
$node=$doc->importNode($node,true);
$doc->getElementById('SectPage')->appendChild($node);

echo $doc->saveHTML();
?>



вместо переменных используй файлы,в которые будут писать шаблоны для HEAD и PAGE.. со всякими там проверками и т.д.
...
Рейтинг: 0 / 0
06.01.2015, 15:26
    #38849237
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
kunaksergeyАлексей Смирнов,
Код: php
1.
2.
3.
4.
5.
6.
<?php
$SectHead="<root><element><child>MY HEAD</child></element></root>";
$SectPage="<root><element><child>MY PAGE</child></element></root>";
$orgdoc=new DOMDocument;
...
?>



вместо переменных используй файлы,в которые будут писать шаблоны для HEAD и PAGE.. со всякими там проверками и т.д.

Спасибо! Я это и имел ввиду, когда говорил про XML. Но как вариант возможно что просто обойдусь поиском открывающего тега '<TD id="SectHead'>', заменой того, что после него до первого закрывающего тега </TD>. Чтобы не преобразовывать в XML, т.к. любое преобразование чревато последствиями.
...
Рейтинг: 0 / 0
06.01.2015, 15:27
    #38849240
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
Алексей Смирнов,
я не пойму для чего вам преобразовывать в XML?
...
Рейтинг: 0 / 0
06.01.2015, 17:05
    #38849339
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
kunaksergeyАлексей Смирнов,
я не пойму для чего вам преобразовывать в XML?

Шаблон верстальщик делает в HTML.
Программа его преобразовывает в XML для того, чтобы заменить содержимое контейнеров с ID='SectHead' и 'SectPage'.
Это был как вариант.

Но т.к. поиск-замена проще и надежней, то думаю что пока можно обойтись без XML.
...
Рейтинг: 0 / 0
06.01.2015, 17:14
    #38849351
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
Алексей Смирнов,
Если HTML валлидный, то преобразовывать ничего не надо.
...
Рейтинг: 0 / 0
06.01.2015, 21:32
    #38849512
Алексей Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
kunaksergeyАлексей Смирнов,
Если HTML валлидный, то преобразовывать ничего не надо.

Ну это да.
Я не много не понял этот момент. Сначала все ринулись писать в формате XHTML (построенным как раз на основе XML), потом от него отказались в пользу HTML5.
Интересно этот HTML5 в точности соответствует синтаксису XLM?
...
Рейтинг: 0 / 0
06.01.2015, 22:42
    #38849538
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как оптимально сделать шаблон для сайта?
Алексей Смирнов,
Все они строятся на DOM моделе, но имеют разные парсеры. XML-обстрактные узлы и строгий синтаксис. XHTML-html со строгим синтаксисом. HTML5-добавлено куча плюшек.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как оптимально сделать шаблон для сайта? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]