<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Движок сайтов S2 — Полноценные шаблоны]]></title>
		<link>https://s2cms.ru/forum/topic/251/</link>
		<description><![CDATA[Недавние сообщения в теме «Полноценные шаблоны».]]></description>
		<lastBuildDate>Sat, 08 Nov 2014 17:55:20 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1196/#p1196</link>
			<description><![CDATA[<p>Ну тогда, я думаю было бы неплохо если бы вы прочитали книгу Мэтта Зандстры: PHP. Объекты, шаблоны и методики программирования.</p><p>Или если ООП вас не интересует, то хотя бы книгу Роберта Мартина: Чистый Код. :)</p>]]></description>
			<author><![CDATA[null@example.com (volter9)]]></author>
			<pubDate>Sat, 08 Nov 2014 17:55:20 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1196/#p1196</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1193/#p1193</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Роман)]]></author>
			<pubDate>Sat, 08 Nov 2014 17:39:27 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1193/#p1193</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1192/#p1192</link>
			<description><![CDATA[<p>Роман, я думаю эту бурную дискуссию можно закончить одним вопросом:</p><p>Вы делаете движок <em>только</em> для пользователей или для разработчиков, или для обоих групп?<br />Если вы делаете только для пользователей, то ваш код имеет смысл, т.к. кроме вас вроде бы никто больше не занимается разработкой расширений.</p><p>Если для разработчиков, то вы точно не знаете что вы делаете. А спрашивать про обе группы даже не имеет смысл пока что.</p>]]></description>
			<author><![CDATA[null@example.com (volter9)]]></author>
			<pubDate>Sat, 08 Nov 2014 16:04:24 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1192/#p1192</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1190/#p1190</link>
			<description><![CDATA[<p>Роман, я разработчик, но пишу не на php. Такие все еще встречаются.</p><p>В движке неудовлетворительно выполняется третья из описанных вами задач. А именно: шаблон страницы определяет лишь ее общую структуру; невозможно изменить код конкретных компонентов. При дальнейшем исследовании (насколько сейчас помню) оказалось что код компонентов генерируется из какой-то **пы (извиняюсь) внутри php. Именно поэтому я предложил использовать шаблонизатор.</p><p>P.S. даже SSI использует другой формат &lt;!--# ... --&gt;, что позволяет отделить includ-ы от html-комментариев.</p>]]></description>
			<author><![CDATA[null@example.com (hindsight)]]></author>
			<pubDate>Sat, 08 Nov 2014 14:12:43 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1190/#p1190</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1188/#p1188</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Роман)]]></author>
			<pubDate>Sat, 08 Nov 2014 07:31:25 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1188/#p1188</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1185/#p1185</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (volter9)]]></author>
			<pubDate>Fri, 07 Nov 2014 21:09:21 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1185/#p1185</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1183/#p1183</link>
			<description><![CDATA[<p>volter9, не против.</p>]]></description>
			<author><![CDATA[null@example.com (Роман)]]></author>
			<pubDate>Fri, 07 Nov 2014 21:01:27 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1183/#p1183</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1182/#p1182</link>
			<description><![CDATA[<p>Роман, скажу Вам как разработчик разработчику. Метки вида &lt;!-- ... --&gt; имеют название - это html-комментарии. Делать их шаблонами, выполняемыми на стороне сервера - это действительно очень плохой стиль. Ленивые вычисления почти наверняка поддерживаются каким-то (уже существующим) шаблонизатором PHP. Вы изобретаете велосипед. И не удивительно, что появились люди, с Вами не согласные.</p><p>С другой стороны я, бесспорно, уважаю Ваше право делать все так, как Вы желаете в Вашем проекте. Отсутствие шаблонов, к сожалению, сделало его неприменимым для меня, и мне пришлось писать свой движок. Но это мои проблемы, и Вы тут действительно не при чем.</p>]]></description>
			<author><![CDATA[null@example.com (hindsight)]]></author>
			<pubDate>Fri, 07 Nov 2014 21:01:12 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1182/#p1182</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1180/#p1180</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Я думаю, что вы вместе с автором первоначального вопроса не разобрались до конца ни в сути проблемы, ни в моем ответе на единственный сформулированный вопрос. И пытаетесь мне объяснить то, что я и так знаю, вместо того чтобы что-то переспросить или сформулировать уточняющий вопрос.</p></blockquote></div><p>Прямо как в анекдоте про менеджера и программиста :)</p><p>Хм... мне интересно, вы бы не были против если бы я переписал S2 на свой вкус и выложил бы на общее обозрение тут?</p>]]></description>
			<author><![CDATA[null@example.com (volter9)]]></author>
			<pubDate>Fri, 07 Nov 2014 20:55:14 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1180/#p1180</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1178/#p1178</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Роман)]]></author>
			<pubDate>Fri, 07 Nov 2014 19:44:20 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1178/#p1178</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1176/#p1176</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (volter9)]]></author>
			<pubDate>Fri, 07 Nov 2014 19:01:57 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1176/#p1176</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1155/#p1155</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (hindsight)]]></author>
			<pubDate>Sun, 03 Aug 2014 10:29:47 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1155/#p1155</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1154/#p1154</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (boo)]]></author>
			<pubDate>Sat, 02 Aug 2014 14:16:15 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1154/#p1154</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1153/#p1153</link>
			<description><![CDATA[<p>Запросы к базе тут не при чем. А производительность не очень упадет, думаю.<br />P.S. это довольно странно - писать на php и так заботиться о производительности. Писали бы на C++ :)</p>]]></description>
			<author><![CDATA[null@example.com (hindsight)]]></author>
			<pubDate>Wed, 30 Jul 2014 23:23:09 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1153/#p1153</guid>
		</item>
		<item>
			<title><![CDATA[Re: Полноценные шаблоны]]></title>
			<link>https://s2cms.ru/forum/post/1152/#p1152</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>почему не используется полноценный template engine?</p></blockquote></div><p>Из соображений производительности. Шаблоны с метками можно однозначно разобрать заранее и сказать, какие части страниц нужно готовить, какие запросы делать к базе данных и т. д.</p>]]></description>
			<author><![CDATA[null@example.com (Роман)]]></author>
			<pubDate>Wed, 30 Jul 2014 12:22:38 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1152/#p1152</guid>
		</item>
	</channel>
</rss>
