<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Движок сайтов S2 — Полноценные шаблоны]]></title>
	<link rel="self" href="https://s2cms.ru/forum/feed/atom/topic/251/"/>
	<updated>2014-11-08T17:55:20Z</updated>
	<generator>PunBB</generator>
	<id>https://s2cms.ru/forum/topic/251/</id>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1196/#p1196"/>
			<content type="html"><![CDATA[<p>Ну тогда, я думаю было бы неплохо если бы вы прочитали книгу Мэтта Зандстры: PHP. Объекты, шаблоны и методики программирования.</p><p>Или если ООП вас не интересует, то хотя бы книгу Роберта Мартина: Чистый Код. :)</p>]]></content>
			<author>
				<name><![CDATA[volter9]]></name>
				<uri>https://s2cms.ru/forum/user/206/</uri>
			</author>
			<updated>2014-11-08T17:55:20Z</updated>
			<id>https://s2cms.ru/forum/post/1196/#p1196</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1193/#p1193"/>
			<content type="html"><![CDATA[<p>hindsight, спасибо за исправление. Конечно, речь шла о третьей задаче, а не второй.</p><p>Как я написал выше, в следующей версии в движке появятся представления (view) такого типа: <a href="https://github.com/parpalak/s2/blob/master/_include/views/breadcrumbs.php">https://github.com/parpalak/s2/blob/mas … crumbs.php</a></p><p>volter9, когда я работаю над движком, я не думаю о каких-то группах. S2 для меня - это песочница для обкатки изучаемых технологий. Своеобразное портфолио. Мое решение поделиться кодом не влечет обязательств думать о ком-то еще.</p><p>Кто-то решает свои задачи движком, кому-то он не подходит. Это нормально.</p>]]></content>
			<author>
				<name><![CDATA[Роман]]></name>
				<uri>https://s2cms.ru/forum/user/2/</uri>
			</author>
			<updated>2014-11-08T17:39:27Z</updated>
			<id>https://s2cms.ru/forum/post/1193/#p1193</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1192/#p1192"/>
			<content type="html"><![CDATA[<p>Роман, я думаю эту бурную дискуссию можно закончить одним вопросом:</p><p>Вы делаете движок <em>только</em> для пользователей или для разработчиков, или для обоих групп?<br />Если вы делаете только для пользователей, то ваш код имеет смысл, т.к. кроме вас вроде бы никто больше не занимается разработкой расширений.</p><p>Если для разработчиков, то вы точно не знаете что вы делаете. А спрашивать про обе группы даже не имеет смысл пока что.</p>]]></content>
			<author>
				<name><![CDATA[volter9]]></name>
				<uri>https://s2cms.ru/forum/user/206/</uri>
			</author>
			<updated>2014-11-08T16:04:24Z</updated>
			<id>https://s2cms.ru/forum/post/1192/#p1192</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1190/#p1190"/>
			<content type="html"><![CDATA[<p>Роман, я разработчик, но пишу не на php. Такие все еще встречаются.</p><p>В движке неудовлетворительно выполняется третья из описанных вами задач. А именно: шаблон страницы определяет лишь ее общую структуру; невозможно изменить код конкретных компонентов. При дальнейшем исследовании (насколько сейчас помню) оказалось что код компонентов генерируется из какой-то **пы (извиняюсь) внутри php. Именно поэтому я предложил использовать шаблонизатор.</p><p>P.S. даже SSI использует другой формат &lt;!--# ... --&gt;, что позволяет отделить includ-ы от html-комментариев.</p>]]></content>
			<author>
				<name><![CDATA[hindsight]]></name>
				<uri>https://s2cms.ru/forum/user/201/</uri>
			</author>
			<updated>2014-11-08T14:12:43Z</updated>
			<id>https://s2cms.ru/forum/post/1190/#p1190</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1188/#p1188"/>
			<content type="html"><![CDATA[<p>hindsight, ваши фразы &quot;скажу Вам как разработчик разработчику&quot; и &quot;Я очень плохо знаю php и для меня это проблема&quot; не сочетаются друг с другом. Вы только подтверждаете мое предположение (которое volter9 просил высказать).</p><p>Попробую написать про шаблоны последний раз.</p><p>Упрощенный алгоритм работы движка выглядит так:<br />1. Разобрать URL страницы и определить ее структуру.<br />2. Сделать запросы к базе данных для получения фрагментов страницы: меню, списков ссылок и прочего.<br />3. Сгенерировать html-код фрагментов страницы.</p><p>В движке есть инструмент, который определяет структуру страниц. Я назвал его &quot;шаблоны&quot; (&quot;templates&quot;). Метка вроде &lt;!-- s2_menu --&gt; решает две задачи: она говорит, что на странице должно быть меню, и указывает, где именно. Метки по форме совпадают с html-комментариями, чтобы несработавшие метки не появлялись на экране.</p><p>Очевидно, что этот инструмент не может одновременно решать и задачу генерации HTML-кода. В задаче определения структуры инструмент говорит базе, какие данные нужно получить. В задаче генерации HTML-кода эти данные выводятся на экран. Две задачи выполняются в разные моменты времени (до шага номер 2 и после), и их нельзя совместить.</p><p>Вместо того чтобы справедливо критиковать движок за то, что в нем неудовлетворительно решается третья задача, вы критикуете инструмент движка, который прекрасно решает первую задачу, основываясь, в лучшем случае, на вкусовых аргументах.</p><p>Кстати, про &quot;плохой стиль&quot;. О чем тогда думали разработчики SSI? <a href="https://ru.wikipedia.org/wiki/SSI_(программирование)">https://ru.wikipedia.org/wiki/SSI_(программирование)</a></p>]]></content>
			<author>
				<name><![CDATA[Роман]]></name>
				<uri>https://s2cms.ru/forum/user/2/</uri>
			</author>
			<updated>2014-11-08T07:31:25Z</updated>
			<id>https://s2cms.ru/forum/post/1188/#p1188</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1185/#p1185"/>
			<content type="html"><![CDATA[<div class="quotebox"><cite>hindsight пишет:</cite><blockquote><p> Ленивые вычисления почти наверняка поддерживаются каким-то (уже существующим) шаблонизатором PHP. Вы изобретаете велосипед.</p></blockquote></div><p>Ленивые вычисления может быть и существует, но тут не обойтись без PHP5 и замыканий.</p><p>PHP сам по себе велосипед. Многие функции всего лишь тонкие обертки. У PHP много проблем, советую почитать на эту тему статью <a href="http://habrahabr.ru/post/142140/">PHP: фрактал плохого дизайна</a> (<a href="http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/">en</a>). Там все ясно выражено.</p><p>Но меня удивляет что некоторые крутые сайты вроде как Facebook или Wikipedia используют PHP. Видимо PHP принимает людей и их код какой он есть, не взирая на их проблемы и недостатки.</p>]]></content>
			<author>
				<name><![CDATA[volter9]]></name>
				<uri>https://s2cms.ru/forum/user/206/</uri>
			</author>
			<updated>2014-11-07T21:09:21Z</updated>
			<id>https://s2cms.ru/forum/post/1185/#p1185</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1183/#p1183"/>
			<content type="html"><![CDATA[<p>volter9, не против.</p>]]></content>
			<author>
				<name><![CDATA[Роман]]></name>
				<uri>https://s2cms.ru/forum/user/2/</uri>
			</author>
			<updated>2014-11-07T21:01:27Z</updated>
			<id>https://s2cms.ru/forum/post/1183/#p1183</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1182/#p1182"/>
			<content type="html"><![CDATA[<p>Роман, скажу Вам как разработчик разработчику. Метки вида &lt;!-- ... --&gt; имеют название - это html-комментарии. Делать их шаблонами, выполняемыми на стороне сервера - это действительно очень плохой стиль. Ленивые вычисления почти наверняка поддерживаются каким-то (уже существующим) шаблонизатором PHP. Вы изобретаете велосипед. И не удивительно, что появились люди, с Вами не согласные.</p><p>С другой стороны я, бесспорно, уважаю Ваше право делать все так, как Вы желаете в Вашем проекте. Отсутствие шаблонов, к сожалению, сделало его неприменимым для меня, и мне пришлось писать свой движок. Но это мои проблемы, и Вы тут действительно не при чем.</p>]]></content>
			<author>
				<name><![CDATA[hindsight]]></name>
				<uri>https://s2cms.ru/forum/user/201/</uri>
			</author>
			<updated>2014-11-07T21:01:12Z</updated>
			<id>https://s2cms.ru/forum/post/1182/#p1182</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1180/#p1180"/>
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Я думаю, что вы вместе с автором первоначального вопроса не разобрались до конца ни в сути проблемы, ни в моем ответе на единственный сформулированный вопрос. И пытаетесь мне объяснить то, что я и так знаю, вместо того чтобы что-то переспросить или сформулировать уточняющий вопрос.</p></blockquote></div><p>Прямо как в анекдоте про менеджера и программиста :)</p><p>Хм... мне интересно, вы бы не были против если бы я переписал S2 на свой вкус и выложил бы на общее обозрение тут?</p>]]></content>
			<author>
				<name><![CDATA[volter9]]></name>
				<uri>https://s2cms.ru/forum/user/206/</uri>
			</author>
			<updated>2014-11-07T20:55:14Z</updated>
			<id>https://s2cms.ru/forum/post/1180/#p1180</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1178/#p1178"/>
			<content type="html"><![CDATA[<p>Я думаю, что вы вместе с автором первоначального вопроса не разобрались до конца ни в сути проблемы, ни в моем ответе на единственный сформулированный вопрос. И пытаетесь мне объяснить то, что я и так знаю, вместо того чтобы что-то переспросить или сформулировать уточняющий вопрос.</p><p>Суть же в том, что шаблоны с метками типа &lt;!-- something --&gt; определяют структуру будущей страницы. Движок может не делать впустую сложных вычислений, если не находит соответствующей метки.</p><p>Перемешанный html- и php-код не имеет прямого отношения к вышеупомянутым шаблонам и не дает никаких оснований называть метки ущербными.</p><p>Я в свободное время по-немногу делаю рефакторинг движка. Можете посмотреть тут: <a href="https://github.com/parpalak/s2">https://github.com/parpalak/s2</a><br />Сейчас это нестабильная версия 2.0dev. Использовать ее можно только на свой страх и риск. Пока по структуре БД она совместима с 1.0.</p><p>В версии 2.0dev html-код выделен в специальные view-файлы. Они могут переопределяться в стилях.</p>]]></content>
			<author>
				<name><![CDATA[Роман]]></name>
				<uri>https://s2cms.ru/forum/user/2/</uri>
			</author>
			<updated>2014-11-07T19:44:20Z</updated>
			<id>https://s2cms.ru/forum/post/1178/#p1178</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1176/#p1176"/>
			<content type="html"><![CDATA[<p>Я полностью согласен с @hindsight. Шаблонизатор это очень важная вещь для работой с темами оформления. Отсутствие шаблонизатора ограничивает порог вхождения, а также не дает возможность дизайнерам (верстальщикам) менять HTML структуру сайта. А генерация HTML&#039;а средствами PHP делает модификацию HTML&#039;а невозможным для людей не знающих PHP.</p><p>Ваш процедурный движок и так быстро работает. И пожалуй я согласен опять с @hindsight:</p><div class="quotebox"><cite>hindsight пишет:</cite><blockquote><p>P.S. это довольно странно - писать на php и так заботиться о производительности. Писали бы на C++ :)</p></blockquote></div><p>Это верно подмечено. Тут особого удара по производительности не будет. К тому же согласитесь что процедурный псевдо-код шаблонизатора:</p><div class="codebox"><pre><code>$template = s2_create_template();

s2_assign_variable($template, &#039;last_comments&#039;, s2_last_article_comments());</code></pre></div><p>Или хотя бы Smarty:</p><div class="codebox"><pre><code>$smarty = new Smarty();

$smarty-&gt;assign(&#039;last_comments&#039;, s2_last_article_comments());
$smarty-&gt;display(&#039;index.php&#039;);</code></pre></div><p>Выглядит лучше чем костыль через strpos:</p><div class="codebox"><pre><code>if (strpos($template, &#039;&lt;!-- s2_last_comments --&gt;&#039;) !== false &amp;&amp; ($last_comments = s2_last_article_comments()))
    $replace[&#039;&lt;!-- s2_last_comments --&gt;&#039;] = &#039;&lt;div class=&quot;header&quot;&gt;&#039;.$lang_common[&#039;Last comments&#039;].&#039;&lt;/div&gt;&#039;.$last_comments;</code></pre></div><p>Что вы думаете?</p>]]></content>
			<author>
				<name><![CDATA[volter9]]></name>
				<uri>https://s2cms.ru/forum/user/206/</uri>
			</author>
			<updated>2014-11-07T19:01:57Z</updated>
			<id>https://s2cms.ru/forum/post/1176/#p1176</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1155/#p1155"/>
			<content type="html"><![CDATA[<div class="quotebox"><cite>boo пишет:</cite><blockquote><div class="quotebox"><cite>hindsight пишет:</cite><blockquote><p>P.S. это довольно странно - писать на php и так заботиться о производительности. Писали бы на C++ :)</p></blockquote></div><p>Ещё страннее приходить в отлично сделаный проект и раздавать советы, да ещё по теме, в которой слабо разбираетесь. <br />Вам же ясно ответили почему и зачем.</p></blockquote></div><p>Очень даже разбираюсь.</p><div class="quotebox"><blockquote><p>Я рекомендую посмотреть в сторону <a href="http://www.monstra.org">Monstra</a> (очень простой движок, без баз) или <a href="http://www.instantcms.ru">instant cms</a>&nbsp; (большой, с кучей шаблонов, блоков и так далее). Думаю, что это больше вам подходит.</p></blockquote></div><p>Спасибо конечно, но я знаком с альтернативами. Меня заинтересовал именно ваш (или не ваш) проект. Отсутствие шаблонов показалось серьезным минусом, а &quot;соображения производительности&quot; - весьма жидкой отмазкой. Но конечно же решать вам, так что не буду больше спорить.</p><p>Удачи!</p>]]></content>
			<author>
				<name><![CDATA[hindsight]]></name>
				<uri>https://s2cms.ru/forum/user/201/</uri>
			</author>
			<updated>2014-08-03T10:29:47Z</updated>
			<id>https://s2cms.ru/forum/post/1155/#p1155</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1154/#p1154"/>
			<content type="html"><![CDATA[<div class="quotebox"><cite>hindsight пишет:</cite><blockquote><p>P.S. это довольно странно - писать на php и так заботиться о производительности. Писали бы на C++ :)</p></blockquote></div><p>Ещё страннее приходить в отлично сделаный проект и раздавать советы, да ещё по теме, в которой слабо разбираетесь. <br />Вам же ясно ответили почему и зачем.</p><p>Я рекомендую посмотреть в сторону <a href="http://www.monstra.org">Monstra</a> (очень простой движок, без баз) или <a href="http://www.instantcms.ru">instant cms</a>&nbsp; (большой, с кучей шаблонов, блоков и так далее). Думаю, что это больше вам подходит.</p>]]></content>
			<author>
				<name><![CDATA[boo]]></name>
				<uri>https://s2cms.ru/forum/user/63/</uri>
			</author>
			<updated>2014-08-02T14:16:15Z</updated>
			<id>https://s2cms.ru/forum/post/1154/#p1154</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1153/#p1153"/>
			<content type="html"><![CDATA[<p>Запросы к базе тут не при чем. А производительность не очень упадет, думаю.<br />P.S. это довольно странно - писать на php и так заботиться о производительности. Писали бы на C++ :)</p>]]></content>
			<author>
				<name><![CDATA[hindsight]]></name>
				<uri>https://s2cms.ru/forum/user/201/</uri>
			</author>
			<updated>2014-07-30T23:23:09Z</updated>
			<id>https://s2cms.ru/forum/post/1153/#p1153</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полноценные шаблоны]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1152/#p1152"/>
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>почему не используется полноценный template engine?</p></blockquote></div><p>Из соображений производительности. Шаблоны с метками можно однозначно разобрать заранее и сказать, какие части страниц нужно готовить, какие запросы делать к базе данных и т. д.</p>]]></content>
			<author>
				<name><![CDATA[Роман]]></name>
				<uri>https://s2cms.ru/forum/user/2/</uri>
			</author>
			<updated>2014-07-30T12:22:38Z</updated>
			<id>https://s2cms.ru/forum/post/1152/#p1152</id>
		</entry>
</feed>
