<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: Поддержка тем в CodeIgniter</title>
	<atom:link href="http://www.simplecoding.org/poddershka-tem-v-codeigniter.html/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simplecoding.org/poddershka-tem-v-codeigniter.html</link>
	<description>Блог о программировании</description>
	<pubDate>Wed, 07 Jan 2009 05:20:05 +0000</pubDate>
	
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Владимир</title>
		<link>http://www.simplecoding.org/poddershka-tem-v-codeigniter.html/comment-page-1#comment-2394</link>
		<dc:creator>Владимир</dc:creator>
		<pubDate>Thu, 11 Sep 2008 14:59:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.simplecoding.org/?p=470#comment-2394</guid>
		<description>&lt;blockquote&gt;какая-то операция изменила базу&lt;/blockquote&gt;

Я, наверное, не очень удачно использовал термин "кэш". Речь шла об очень коротко живущем кэше. Который существует только в течении обработки одного запроса (формирования одной страницы). И предназначен исключительно для защиты от повторных вызовов одних и тех же функций. (Функцию второй раз вызвать будет можно, но запрос при этом она выполнять не будет).

Но, чем больше я думаю на эту тему, тем больше вопросов возникает. В общем, уже сам сомневаюсь, что такое решение будет эффективным ;)
Нужно будет поэкспериментировать.</description>
		<content:encoded><![CDATA[<blockquote><p>какая-то операция изменила базу</p></blockquote>
<p>Я, наверное, не очень удачно использовал термин &#034;кэш&#034;. Речь шла об очень коротко живущем кэше. Который существует только в течении обработки одного запроса (формирования одной страницы). И предназначен исключительно для защиты от повторных вызовов одних и тех же функций. (Функцию второй раз вызвать будет можно, но запрос при этом она выполнять не будет).</p>
<p>Но, чем больше я думаю на эту тему, тем больше вопросов возникает. В общем, уже сам сомневаюсь, что такое решение будет эффективным <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Нужно будет поэкспериментировать.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MAX</title>
		<link>http://www.simplecoding.org/poddershka-tem-v-codeigniter.html/comment-page-1#comment-2386</link>
		<dc:creator>MAX</dc:creator>
		<pubDate>Wed, 10 Sep 2008 18:11:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.simplecoding.org/?p=470#comment-2386</guid>
		<description>Не так. $MSO вообще никакого отношения к кэшу не имеет. Если уж и нужно закэшировать SQL-запрос, то с этим пусть справляется $CI. Там вообще его кухня.

Вообще же кэшировать запрос как таковой  невозможно, по той простой причине, что в качестве ключа нельзя использовать sql. Потому что при одном и том же sql можно получить совсем разные данные, в случае если например какая-та операция изменила базу. Поэтому кэширование в таких вещах лучше не использовать вовсе.

Зато спокойно можно использовать кэш в разных функциях. Например вывод последних записей. Один запрос, результат в кэш. Ключ кэша явно определяется, так что проблем нет. У меня практически все сложные функции имеют подобное кэширование и именно по этому такое малое ресурсопотребление.

Да, и в отличие от WordPress результат не сохраняется в глобальном объекте. Просто нет надобности. :)</description>
		<content:encoded><![CDATA[<p>Не так. $MSO вообще никакого отношения к кэшу не имеет. Если уж и нужно закэшировать SQL-запрос, то с этим пусть справляется $CI. Там вообще его кухня.</p>
<p>Вообще же кэшировать запрос как таковой  невозможно, по той простой причине, что в качестве ключа нельзя использовать sql. Потому что при одном и том же sql можно получить совсем разные данные, в случае если например какая-та операция изменила базу. Поэтому кэширование в таких вещах лучше не использовать вовсе.</p>
<p>Зато спокойно можно использовать кэш в разных функциях. Например вывод последних записей. Один запрос, результат в кэш. Ключ кэша явно определяется, так что проблем нет. У меня практически все сложные функции имеют подобное кэширование и именно по этому такое малое ресурсопотребление.</p>
<p>Да, и в отличие от WordPress результат не сохраняется в глобальном объекте. Просто нет надобности. <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Владимир</title>
		<link>http://www.simplecoding.org/poddershka-tem-v-codeigniter.html/comment-page-1#comment-2383</link>
		<dc:creator>Владимир</dc:creator>
		<pubDate>Wed, 10 Sep 2008 14:06:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.simplecoding.org/?p=470#comment-2383</guid>
		<description>&lt;blockquote&gt;и он будет выполнен. Дважды&lt;/blockquote&gt;

Почему бы не кэшировать результаты этих запросов? Т.е. при первом обращении к функции запрос выполняется как обычно, а его результат сохраняется в $MSO (или другом глобальном объекте, подойдет обычный массив), при повторном вызове функции будут возвращаться сохраненные данные, а запрос выполняться не будет.
Получится что-то вроде временного кэша в памяти, который существует только для одного запроса. Своеобразная "защита от дурака".
Примечание. Это не предложение изменить MaxsiteCMS, скорее просто мысли вслух. В большинстве случаев этот кэш использоваться не будет. А если включено обычное кэширование, то разговаривать вообще не о чем, функция будет вызвана только при обновлении кэша.

&lt;blockquote&gt;плагин к jQuery&lt;/blockquote&gt;

Zen Garden не использует JS для дизайна ;)</description>
		<content:encoded><![CDATA[<blockquote><p>и он будет выполнен. Дважды</p></blockquote>
<p>Почему бы не кэшировать результаты этих запросов? Т.е. при первом обращении к функции запрос выполняется как обычно, а его результат сохраняется в $MSO (или другом глобальном объекте, подойдет обычный массив), при повторном вызове функции будут возвращаться сохраненные данные, а запрос выполняться не будет.<br />
Получится что-то вроде временного кэша в памяти, который существует только для одного запроса. Своеобразная &#034;защита от дурака&#034;.<br />
Примечание. Это не предложение изменить MaxsiteCMS, скорее просто мысли вслух. В большинстве случаев этот кэш использоваться не будет. А если включено обычное кэширование, то разговаривать вообще не о чем, функция будет вызвана только при обновлении кэша.</p>
<blockquote><p>плагин к jQuery</p></blockquote>
<p>Zen Garden не использует JS для дизайна <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MAX</title>
		<link>http://www.simplecoding.org/poddershka-tem-v-codeigniter.html/comment-page-1#comment-2379</link>
		<dc:creator>MAX</dc:creator>
		<pubDate>Tue, 09 Sep 2008 22:00:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.simplecoding.org/?p=470#comment-2379</guid>
		<description>&lt;blockquote&gt;Насколько я понял, в MaxSite CMS объект $MSO вообще не заполняется данными из базы (при инициализации).&lt;/blockquote&gt;

Верно. Он служит только для инициализации, где хранятся разные переменные под разные случаи. Ну вроде активированных плагинов, определенных сайдбаров, хуки, пути.

&lt;blockquote&gt;Что будет если два раза вызвать mso_get_pages?&lt;/blockquote&gt;

В зависимости от входных параметров сформируется sql-запрос и он будет выполнен. Дважды.


&lt;blockquote&gt;Все равно разметка получится сложной. Например, если не использовать CSS3, то для создания закругленных уголков нужны вложенные div'ы для одного и того же блока.&lt;/blockquote&gt;

Не совсем. :) Я все чаще использую плагин к jQuery - Cornerz, который работает с любым браузером и очень неплохо скругляет углы. Я его даже в комплект MaxSite CMS включил. :)</description>
		<content:encoded><![CDATA[<blockquote><p>Насколько я понял, в MaxSite CMS объект $MSO вообще не заполняется данными из базы (при инициализации).</p></blockquote>
<p>Верно. Он служит только для инициализации, где хранятся разные переменные под разные случаи. Ну вроде активированных плагинов, определенных сайдбаров, хуки, пути.</p>
<blockquote><p>Что будет если два раза вызвать mso_get_pages?</p></blockquote>
<p>В зависимости от входных параметров сформируется sql-запрос и он будет выполнен. Дважды.</p>
<blockquote><p>Все равно разметка получится сложной. Например, если не использовать CSS3, то для создания закругленных уголков нужны вложенные div&#039;ы для одного и того же блока.</p></blockquote>
<p>Не совсем. <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Я все чаще использую плагин к jQuery - Cornerz, который работает с любым браузером и очень неплохо скругляет углы. Я его даже в комплект MaxSite CMS включил. <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Владимир</title>
		<link>http://www.simplecoding.org/poddershka-tem-v-codeigniter.html/comment-page-1#comment-2374</link>
		<dc:creator>Владимир</dc:creator>
		<pubDate>Tue, 09 Sep 2008 19:41:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.simplecoding.org/?p=470#comment-2374</guid>
		<description>&lt;blockquote&gt;То есть получается двойная работа.&lt;/blockquote&gt;

Да, не самый оптимальный вариант :-) . Насколько я понял, в MaxSite CMS объект $MSO вообще не заполняется данными из базы (при инициализации).
Есть небольшой вопрос. Что будет если два раза вызвать mso_get_pages?

&lt;blockquote&gt;немного упростить задачу до каких-то типичных структур&lt;/blockquote&gt;

Все равно разметка получится сложной. Например, если не использовать CSS3, то для создания закругленных уголков нужны вложенные div'ы для одного и того же блока. Такие нюансы придется учитывать, иначе количество чудес поубавится ;)</description>
		<content:encoded><![CDATA[<blockquote><p>То есть получается двойная работа.</p></blockquote>
<p>Да, не самый оптимальный вариант <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Насколько я понял, в MaxSite CMS объект $MSO вообще не заполняется данными из базы (при инициализации).<br />
Есть небольшой вопрос. Что будет если два раза вызвать mso_get_pages?</p>
<blockquote><p>немного упростить задачу до каких-то типичных структур</p></blockquote>
<p>Все равно разметка получится сложной. Например, если не использовать CSS3, то для создания закругленных уголков нужны вложенные div&#039;ы для одного и того же блока. Такие нюансы придется учитывать, иначе количество чудес поубавится <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MAX</title>
		<link>http://www.simplecoding.org/poddershka-tem-v-codeigniter.html/comment-page-1#comment-2369</link>
		<dc:creator>MAX</dc:creator>
		<pubDate>Mon, 08 Sep 2008 20:34:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.simplecoding.org/?p=470#comment-2369</guid>
		<description>&lt;blockquote&gt;Если я правильно понял, данные, которые возвращают функции с этой страницы http://codex.wordpress.org/Function_Reference движок получает заранее?
&lt;/blockquote&gt;

В WordPress есть такой глобавльный объект $wp_query, который вроде аналога $CI. :) И формируется он в момент инициализации системы. То есть вначале роутер смотрит текущий ЧПУ, потом его парсит и уже по нему пытается построить sql-запрос. И при этом сразу же его выполняет. 

Таким образом $wp_query уже заполнен в момент передачи управления шаблону. Потом, если сделать query_posts, то это по сути заставит измениться $wp_query, путем парсинга и модификации последнего sql. То есть получается двойная работа.

&lt;blockquote&gt;Я просто фрагмент настроек привел только для одной темы. Т.е. можно сделать:&lt;/blockquote&gt;

Вот как раз CMS и отличается от фреймворка тем, что в ней можно подключать любые файлы с помощью обычного require и уже в нем получать нужные данные для вывода. :-)

&lt;blockquote&gt;Идеальный вариант. Очень высокие требования к разметке, но оно того стоит.&lt;/blockquote&gt;

Если немного упростить задачу до каких-то типичных структур, вроде две колонки, текст, то все варианты спокойно уложатся в один html. А с помощью CSS, можно уже чудеса творить. :) Но, хотя, конечно же тут требуются хорошие знания CSS.</description>
		<content:encoded><![CDATA[<blockquote><p>Если я правильно понял, данные, которые возвращают функции с этой страницы <a href="http://codex.wordpress.org/Function_Reference" rel="nofollow">http://codex.wordpress.org/Function_Reference</a> движок получает заранее?
</p></blockquote>
<p>В WordPress есть такой глобавльный объект $wp_query, который вроде аналога $CI. <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> И формируется он в момент инициализации системы. То есть вначале роутер смотрит текущий ЧПУ, потом его парсит и уже по нему пытается построить sql-запрос. И при этом сразу же его выполняет. </p>
<p>Таким образом $wp_query уже заполнен в момент передачи управления шаблону. Потом, если сделать query_posts, то это по сути заставит измениться $wp_query, путем парсинга и модификации последнего sql. То есть получается двойная работа.</p>
<blockquote><p>Я просто фрагмент настроек привел только для одной темы. Т.е. можно сделать:</p></blockquote>
<p>Вот как раз CMS и отличается от фреймворка тем, что в ней можно подключать любые файлы с помощью обычного require и уже в нем получать нужные данные для вывода. <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<blockquote><p>Идеальный вариант. Очень высокие требования к разметке, но оно того стоит.</p></blockquote>
<p>Если немного упростить задачу до каких-то типичных структур, вроде две колонки, текст, то все варианты спокойно уложатся в один html. А с помощью CSS, можно уже чудеса творить. <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Но, хотя, конечно же тут требуются хорошие знания CSS.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Владимир</title>
		<link>http://www.simplecoding.org/poddershka-tem-v-codeigniter.html/comment-page-1#comment-2364</link>
		<dc:creator>Владимир</dc:creator>
		<pubDate>Mon, 08 Sep 2008 16:12:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.simplecoding.org/?p=470#comment-2364</guid>
		<description>Я с Kohana не работал. А чем она лучше?
Описание я, конечно, читал. Очень красиво все описано. Но &lt;a href="http://thislab.com/2008/03/25/kohana-vs-codeigniter-speed-and-memory-usage-performance-benchmark/" rel="nofollow"&gt;результаты тестирования&lt;/a&gt; показывают, что она потребляет практически на 50% больше памяти чем CI.</description>
		<content:encoded><![CDATA[<p>Я с Kohana не работал. А чем она лучше?<br />
Описание я, конечно, читал. Очень красиво все описано. Но <a href="http://thislab.com/2008/03/25/kohana-vs-codeigniter-speed-and-memory-usage-performance-benchmark/" rel="nofollow">результаты тестирования</a> показывают, что она потребляет практически на 50% больше памяти чем CI.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Владимир</title>
		<link>http://www.simplecoding.org/poddershka-tem-v-codeigniter.html/comment-page-1#comment-2363</link>
		<dc:creator>Владимир</dc:creator>
		<pubDate>Mon, 08 Sep 2008 16:03:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.simplecoding.org/?p=470#comment-2363</guid>
		<description>&lt;blockquote&gt;жесткие ограничения на файлы шаблона&lt;/blockquote&gt;

Да, это основной недостаток. Но при этом разработчику шаблона не нужно изучать API. Для CMS, однозначно не подходит, но для небольших проектов с фиксированной структурой может иметь смысл.

&lt;blockquote&gt;
для «фанатов» MVC просто не допустимо&lt;/blockquote&gt;

Я не фанат ;) . И, честно говоря, не знаю примеров CMS, которые сделаны в строгом соответствии с MVC.

&lt;blockquote&gt;Пример с WordPress не совсем некорректный&lt;/blockquote&gt;

Да подробно разобраться с WP у меня руки не дошли :-) . Если я правильно понял, данные, которые возвращают функции с этой страницы &lt;a href="http://codex.wordpress.org/Function_Reference" rel="nofollow"&gt;http://codex.wordpress.org/Function_Reference&lt;/a&gt; движок получает заранее?

&lt;blockquote&gt;фиксированных php-файлов во вьювере&lt;/blockquote&gt;

Почему фиксированных? Их можно менять. Последний пример в конце статьи, когда имена файлов и их количество задаются в массиве отдельно для каждой темы. Я просто фрагмент настроек привел только для одной темы. Т.е. можно сделать:
$config['themes']['default']['page'] = array('header', 'content', 'sidebar', 'footer');

$config['themes']['classic']['page'] = array('header', 'content', 'footer');

&lt;blockquote&gt;зен гарден&lt;/blockquote&gt;

Идеальный вариант. Очень высокие требования к разметке, но оно того стоит.</description>
		<content:encoded><![CDATA[<blockquote><p>жесткие ограничения на файлы шаблона</p></blockquote>
<p>Да, это основной недостаток. Но при этом разработчику шаблона не нужно изучать API. Для CMS, однозначно не подходит, но для небольших проектов с фиксированной структурой может иметь смысл.</p>
<blockquote><p>
для «фанатов» MVC просто не допустимо</p></blockquote>
<p>Я не фанат <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . И, честно говоря, не знаю примеров CMS, которые сделаны в строгом соответствии с MVC.</p>
<blockquote><p>Пример с WordPress не совсем некорректный</p></blockquote>
<p>Да подробно разобраться с WP у меня руки не дошли <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Если я правильно понял, данные, которые возвращают функции с этой страницы <a href="http://codex.wordpress.org/Function_Reference" rel="nofollow">http://codex.wordpress.org/Function_Reference</a> движок получает заранее?</p>
<blockquote><p>фиксированных php-файлов во вьювере</p></blockquote>
<p>Почему фиксированных? Их можно менять. Последний пример в конце статьи, когда имена файлов и их количество задаются в массиве отдельно для каждой темы. Я просто фрагмент настроек привел только для одной темы. Т.е. можно сделать:<br />
$config['themes']['default']['page'] = array(&#039;header&#039;, &#039;content&#039;, &#039;sidebar&#039;, &#039;footer&#039;);</p>
<p>$config['themes']['classic']['page'] = array(&#039;header&#039;, &#039;content&#039;, &#039;footer&#039;);</p>
<blockquote><p>зен гарден</p></blockquote>
<p>Идеальный вариант. Очень высокие требования к разметке, но оно того стоит.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: VasiaVC</title>
		<link>http://www.simplecoding.org/poddershka-tem-v-codeigniter.html/comment-page-1#comment-2357</link>
		<dc:creator>VasiaVC</dc:creator>
		<pubDate>Mon, 08 Sep 2008 09:58:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.simplecoding.org/?p=470#comment-2357</guid>
		<description>А мне все таки больше Kohana понравилась, производная CodeIgniter. Не сложилось у меня с ним.</description>
		<content:encoded><![CDATA[<p>А мне все таки больше Kohana понравилась, производная CodeIgniter. Не сложилось у меня с ним.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MAX</title>
		<link>http://www.simplecoding.org/poddershka-tem-v-codeigniter.html/comment-page-1#comment-2354</link>
		<dc:creator>MAX</dc:creator>
		<pubDate>Sun, 07 Sep 2008 18:54:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.simplecoding.org/?p=470#comment-2354</guid>
		<description>Отличный теоретический материал! :)

А вот с практической точки зрения здесь всё не так просто. Если контролер данные подготавливает всегда, то это накладывает очень жесткие ограничения на файлы шаблона. Данные которые они выводят также будут строго предопределены. 

Я когда начинал делать свою MaxSite CMS, то столкнулся с подобной проблемой, и по этой причине ввел понятие типа данных. То есть в вашем примере, получая данные из базы, система определяет тип данных и по этому типу и выполняется подключение конкретного файла шаблона.

Но вообще такая поддержка шаблонов всё-таки тянет на CMS. CodeIgniter в исходном виде, да еще из-за своей MVC просто не имеет готовых решений. В частности получение данных обязательно должно переноситься во вьювер. (Как у меня.) Ну а это для «фанатов» MVC просто не допустимо. :)

Пример с WordPress не совсем некорректный. Я бы даже сказал, что все как раз наоборот: WordPress вначале получает данные (аналог контролера), а уже потом можно «перебить» их в шаблоне (аналог вьювер). (Если совсем строго, то можно сразу перехватить начальные запросы с помощью плагина и хука на init.) Именно из-за такой архитектуры WordPress столь ресурсоемкий и негибкий.

Да и еще. На мой взгляд именно такая схема шаблона не очень удачна. Просто из-за фиксированных php-файлов во вьювере теряется смысл шаблонов как таковых. Но, зато можно продумать эти файлы так, чтобы при одной html-разметке можно было бы подключать разные css-файлы. В этом случае достаточно только ввести один параметр - имя css, а разработка самого шаблона по сути сведется к css-верстке. Тогда можно не заботиться о программировании. Из подобных разработок могу упомянуть зен гарден. Да и у любого верстальщика в загашнике всегда есть свои аналогичные решения. ;)</description>
		<content:encoded><![CDATA[<p>Отличный теоретический материал! <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>А вот с практической точки зрения здесь всё не так просто. Если контролер данные подготавливает всегда, то это накладывает очень жесткие ограничения на файлы шаблона. Данные которые они выводят также будут строго предопределены. </p>
<p>Я когда начинал делать свою MaxSite CMS, то столкнулся с подобной проблемой, и по этой причине ввел понятие типа данных. То есть в вашем примере, получая данные из базы, система определяет тип данных и по этому типу и выполняется подключение конкретного файла шаблона.</p>
<p>Но вообще такая поддержка шаблонов всё-таки тянет на CMS. CodeIgniter в исходном виде, да еще из-за своей MVC просто не имеет готовых решений. В частности получение данных обязательно должно переноситься во вьювер. (Как у меня.) Ну а это для «фанатов» MVC просто не допустимо. <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Пример с WordPress не совсем некорректный. Я бы даже сказал, что все как раз наоборот: WordPress вначале получает данные (аналог контролера), а уже потом можно «перебить» их в шаблоне (аналог вьювер). (Если совсем строго, то можно сразу перехватить начальные запросы с помощью плагина и хука на init.) Именно из-за такой архитектуры WordPress столь ресурсоемкий и негибкий.</p>
<p>Да и еще. На мой взгляд именно такая схема шаблона не очень удачна. Просто из-за фиксированных php-файлов во вьювере теряется смысл шаблонов как таковых. Но, зато можно продумать эти файлы так, чтобы при одной html-разметке можно было бы подключать разные css-файлы. В этом случае достаточно только ввести один параметр - имя css, а разработка самого шаблона по сути сведется к css-верстке. Тогда можно не заботиться о программировании. Из подобных разработок могу упомянуть зен гарден. Да и у любого верстальщика в загашнике всегда есть свои аналогичные решения. <img src='http://www.simplecoding.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>
