Существует ли система шаблонов только для html для php?

Я начал программировать в clojure, и меня очень впечатлил Enlive. Что мне действительно нравится, так это то, что Enlive использует шаблоны только для html. Итак, шаблон — это файл с html в нем, оканчивающийся на .html, вот так просто. Он анализируется в дерево dom, а затем clojure/enlive манипулирует этим деревом dom, объединяет, делает динамическим и т. д. В файлах шаблонов html нет синтаксиса, прекрасное чистое разделение.

Другим примером подобной системы, созданной с помощью javascript, является PURE.

Есть ли что-то подобное в пхп? Или, вообще, какие-либо способы создания шаблонов только для html?


person Kzqai    schedule 14.07.2010    source источник
comment
Я тоже по этому поводу философствовал. Теоретически вы можете собрать весь вывод html из вашего приложения, передать его в phpQuery, а затем внедрить фактический контент, как это делает PURE. В теории.   -  person mario    schedule 14.07.2010
comment
Пример Hello World для PURE можно легко реализовать с помощью DOM в дюжине строк. Однако он будет использовать XPath для запросов DOM. Если вы не против изучить другой язык разметки, взгляните на XSLT.   -  person Gordon    schedule 14.07.2010
comment
Я думаю так же, как и Гордон, если вы идете по пути реализации чего-то вроде PURE в PHP (что не должно быть так сложно) и не имеете доступного механизма DOM, XPATH - это путь. PURE появился в результате моей прошлой встречи XSLT с JSON. Но тут я не согласен с Гордоном, я бы ни за что не вернулся к XSLT.   -  person Mic    schedule 15.07.2010


Ответы (5)


Очарованный, чтобы услышать о Enlive. Я обдумывал эту концепцию несколько лет и собрал кое-что на PHP, который разделяет некоторые принципы: шаблоны представляют собой чистый HTML, и вы «заполняете» их, адресуя содержимое определенному узлу в документе с помощью CSS или XPath.

$t = new Template('yourfile.html');
$t->fill('#nav',$someMarkup);
$t->fill('#header',$otherMarkup);

Я также экспериментировал с объединением некоторых положений для разделения контента в своего рода «таблицу стилей»… ну, «таблица стилей» — неправильное слово. Я называю их листами с адресацией содержимого (проект называется CAST, что означает «шаблон стиля с адресацией содержимого»). CAS выглядит так, как вы могли бы ожидать:

.col #foot {
    content: 'foot';
}

#content {
    content: file_get_contents('pangolin.txt');
}

Предполагается, что значения содержимого являются выражениями PHP. Есть некоторые положения для настройки PHP, которые также применяются к селекторам.

Запустите скрипт cssfill.php, который находится в архиве (лучший вызов, вероятно, ./cssfill.php pangolin.cas pangolin.html, возможно, вам придется изменить путь к вашему интерпретатору php внутри cssfill.php), посмотрите на вывод, сравните с входными файлами.

Если этот пост вызовет у вас энтузиазм по поводу этой идеи, не стесняйтесь, дайте мне знать. Мне было интересно, была ли это сумасшедшая идея или у нее есть место, если это так, я был бы счастлив превратить ее в вдумчиво выпущенный проект с открытым исходным кодом, а не в tarball, случайно брошенный в Интернет.

person Weston C    schedule 19.07.2010
comment
Да, это действительно так. Мне нужно проверить проект кода, потому что я думаю, что эта система действительно выходит за рамки традиционных системных методов шаблонов, потому что использование только html для начала настолько чисто, насколько вы можете когда-либо получить, поэтому вы не можете идти дальше этой точки. Вы случайно не используете git/github, не так ли? Если бы вы сделали его открытым исходным кодом, я бы, конечно, сказал, что github будет хорошим местом для его размещения, если вы знакомы с ним (я весь день занимаюсь простлетированием (sic) git и github). В любом случае, я проверю код и свяжусь с вами. - person Kzqai; 04.08.2010
comment
Чалвак - спустя год (и побочного обсуждения на Hacker News) я, наконец, решил поставить CAST на github — если у вас есть возможность, не стесняйтесь тянуть и дайте мне знать, что вы считать! - person Weston C; 11.12.2011

Вы можете проверить phptal.org. Это механизм шаблонов для PHP, который использует теги HTML. Но это не так быстро.

Вы также можете проверить другие проекты, такие как twig-project.org, ведь они намного быстрее.

person esgy    schedule 19.07.2010

Оформить заказ на PHPTAL. PHPTAL — это библиотека шаблонов XML/XHTML для PHP5, которая предоставляет скомпилированные шаблоны и мелкозернистое кэширование. Шаблоны определяются в чистой разметке XML/HTML.

<div class="item" tal:repeat="item itemsArray">
    <span tal:condition="item/hasDate" tal:replace="item/getDate"/>
    <a href="${item/getUrl}" tal:content="item/getTitle"/>
  <p tal:content="value/getContent"/>
</div>
person Benjamin Cremer    schedule 20.07.2010

Интересные старты. Но меня впечатлило, почему мы не можем иметь другой шаблон с образцом текста, чтобы изменить вид и другое состояние элементов, а также извлечь код для создания существующих систем шаблонов или просто заполнить его контентом. Найти, что рабочий процесс кажется таким сломанным и сложным — не нравится смешивать html с php / js или писать абстрактные системы шаблонов. Нужно много мозгов - много мимики без легкой визуализации.

person Peter Pötsch    schedule 28.11.2013

Я думаю Псттт! Механизм шаблонов для php — это именно то, что вам нужно, он сохраняет ваш HTML-шаблон нетронутым, позволяя вам лучше повторно использовать ваши HTML-файлы.

полный исходный код здесь http://github.com/givanz/psttt

person codeassembly    schedule 19.09.2010