<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Интернет-агентство «Ситко.ру» &#187; программинг</title>
	<atom:link href="http://blog.sitko.ru/tag/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d0%bd%d0%b3/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sitko.ru</link>
	<description></description>
	<lastBuildDate>Tue, 07 Sep 2010 05:33:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Прикручиваем Smarty к Wordpress&#8217;у</title>
		<link>http://blog.sitko.ru/2009/04/15/275/</link>
		<comments>http://blog.sitko.ru/2009/04/15/275/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 14:42:21 +0000</pubDate>
		<dc:creator>Константин Косматов</dc:creator>
				<category><![CDATA[Техотдел]]></category>
		<category><![CDATA[программинг]]></category>

		<guid isPermaLink="false">http://blog.sitko.ru/?p=275</guid>
		<description><![CDATA[Очень удобно разделять логику от представления, согласитесь, однако, разработчики известного движка Wordpress об этом почему-то не подумали. Может быть, у них не было времени или желания, а может быть, они решили оставить поле для творчества другим разработчикам ))

Итак, имеем:

WordPress is a state-of-the-art publishing platform with a focus on aesthetics, web standards, and usability. WordPress is [...]]]></description>
			<content:encoded><![CDATA[<p>Очень удобно разделять логику от представления, согласитесь, однако, разработчики известного движка Wordpress об этом почему-то не подумали. Может быть, у них не было времени или желания, а может быть, они решили оставить поле для творчества другим разработчикам ))</p>
<p><span id="more-275"></span></p>
<p>Итак, имеем:</p>
<ul>
<li><strong>WordPress</strong> is a state-of-the-art publishing platform with a focus on aesthetics, web standards, and usability. WordPress is both free and priceless at the same time.</li>
</ul>
<ul>
<li><strong>Smarty</strong> is a template engine for PHP. More specifically, it facilitates a    manageable way to separate application logic and content from its    presentation.</li>
</ul>
<p>В Wordpess интересная система поддержки плагинов, мне она чем-то напоминает знаменитый netgraph в ОС FreeBSD. Есть некие действия или этапы выполнения сценариев в Wordpress, имеющие так называемые <em>хуки</em> (англ. <strong>hook</strong> &#8211; крючок), к которым можно &#8220;прицепить&#8221; новые действия, реализуемые плагинами.</p>
<p>Для реализации поддержки Smarty мы как раз и воспользуемся одним из таких крючков, к которому прицепим объект WP_Smarty из созданного нами одноименного плагина.</p>
<p><strong>Начнем.</strong></p>
<p>Первый этап разработки плагина для Wordpress &#8211; это описание его свойств, помещаемое комментарием в заголовок одноименного сценария<br />
<code><br />
<img class="alignnone size-full wp-image-293" title="Своййства плагина" src="http://blog.sitko.ru/wp-content/uploads/2009/04/1.png" alt="Своййства плагина" width="280" height="125" /><br />
</code></p>
<p>Теперь собственно код сценария. Первым делом подключаем Smarty, который лежит тут же, в папке нашего плагина<br />
<code><br />
<img class="alignnone size-full wp-image-294" title="Подключаем" src="http://blog.sitko.ru/wp-content/uploads/2009/04/2.png" alt="Подключаем" width="449" height="37" /><br />
</code></p>
<p>Объект smarty я сделал глобальным, чтобы его в последствии можно было использовать в других плагинах.<br />
Далее пишем класс, который инициализирует Smarty, берет из базы данных нужную нам информацию, передаёт её шаблонизатору и в конце выводит результат обработки шаблона</p>
<p><code><img class="alignnone size-full wp-image-295" title="Класс" src="http://blog.sitko.ru/wp-content/uploads/2009/04/3.png" alt="Класс" width="636" height="232" /><br />
</code><br />
Почему я создаю ссылки вместо того, чтобы использовать глобальные переменные напрямую? Хз&#8230; в универе научили без необходимости не использовать глобальные переменные и инструкцию &#8220;пшел на&#8230;&#8221; (goto) :D А может от того, что вызов глобальной переменной в PHP &#8211; операция ресурсоемкая&#8230; хотя пользователь врядли оценит сэкономленные милисекунды.</p>
<p>Достаем тему оформления и устанавливаем для Smarty пути к директори<strong>ям</strong> с шаблонами. У Smarty две директории шаблонов &#8211; во-первых, это шаблоны, которые мы сверстаем, и во-вторых, скомпилированные в php-код шаблоны, которые Smarty лепит из того, что мы ему предложили.<br />
<code><br />
<img class="alignnone size-full wp-image-296" title="Темы оформления, шаблоны" src="http://blog.sitko.ru/wp-content/uploads/2009/04/4.png" alt="Темы оформления, шаблоны" width="683" height="113" /><br />
</code><br />
Заодно добавили путь к теме, ибо там у нас будет лежат CSS, картинки и js-скрипты.<br />
Теперь определимся, чего хочет пользователь:<br />
<code><br />
<img class="alignnone size-full wp-image-297" title="Разбираем запрос" src="http://blog.sitko.ru/wp-content/uploads/2009/04/5.png" alt="Разбираем запрос" width="606" height="43" /><br />
</code></p>
<p>Инициализация прошла успешно )<br />
Поехали</p>
<p><img class="alignnone size-full wp-image-298" title="6" src="http://blog.sitko.ru/wp-content/uploads/2009/04/6.png" alt="6" width="409" height="244" /></p>
<p>Назначили шаблон, забрали данные, сгенерировали html-страничку.<br />
Данные забираем, например, так</p>
<p><code><img class="alignnone size-full wp-image-317" title="Берем данные" src="http://blog.sitko.ru/wp-content/uploads/2009/04/71.png" alt="Берем данные" width="631" height="290" /></code><code><br />
</code></p>
<p>Ну и в таком же духе, как в голову взбредет&#8230; дизайнеру ;)<br />
С классом закончили, осталось всё вышеописанное прикрутитить легально к Wordpress&#8217;у, для чего напишем функцию инициализации нашего плагина</p>
<p><code><img class="alignnone size-full wp-image-300" title="8" src="http://blog.sitko.ru/wp-content/uploads/2009/04/8.png" alt="8" width="525" height="200" /></code><code><br />
</code></p>
<p>И &#8220;прицепим&#8221; наш WP_Smarty куда надо &#8211; к hook&#8217;у &#8216;plugins_loaded&#8217;, чтобы он начинал работать только после того, как загрузятся все другие плагины, иначе они никогда не загрузятся ))</p>
<p><code><img class="alignnone size-full wp-image-301" title="9" src="http://blog.sitko.ru/wp-content/uploads/2009/04/9.png" alt="9" width="415" height="22" /></code></p>
<p>Это простейший пример плагина для Wordpress, далее можно изголяться сколько угодно, писать плагины к плагинам и т.п. ))</p>
<p>В общем, удачи ;)
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.sitko.ru%2F2009%2F04%2F15%2F275%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.sitko.ru%2F2009%2F04%2F15%2F275%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
Similar Posts:<ul><li><a href="http://blog.sitko.ru/2010/06/03/1186/" rel="bookmark" title="03.06.2010">Как стать нашим верстальщиком</a></li>

<li><a href="http://blog.sitko.ru/2010/04/13/1137/" rel="bookmark" title="13.04.2010">Как помочь человеку гордиться своей работой</a></li>
</ul><!-- Similar Posts took 3.923 ms -->]]></content:encoded>
			<wfw:commentRss>http://blog.sitko.ru/2009/04/15/275/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>
