<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Блоговод</title>
	
	<link>http://blogcoding.ru</link>
	<description>Блоговодство и блоговедение</description>
	<lastBuildDate>Mon, 30 Aug 2010 17:12:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/minimus" /><feedburner:info uri="minimus" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>minimus</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Я вернулся!</title>
		<link>http://feedproxy.google.com/~r/minimus/~3/mzgmzqZdYd8/</link>
		<comments>http://blogcoding.ru/?p=1920#comments</comments>
		<pubDate>Wed, 14 Jul 2010 10:09:27 +0000</pubDate>
		<dc:creator>minimus</dc:creator>
				<category><![CDATA[Блоггинг]]></category>
		<category><![CDATA[отдых]]></category>
		<category><![CDATA[отпуск]]></category>

		<guid isPermaLink="false">http://blogcoding.ru/?p=1920</guid>
		<description><![CDATA[Вот и закончился мой краткосрочный отпуск! Свежий и отдохнувший я готов к работе. Одно огорчает: мозги не сразу переходят в рабочий режим. Видимо требуется постотпускной период восстановления А в остальном, всё отлично, жизнь хороша! Несколько отпускных фотографий: &#169; 2010, minimus. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна. ПостовойОтовсюду обо всём. [...]


Нет похожих статей.]]></description>
			<content:encoded><![CDATA[
<p>Вот и закончился мой краткосрочный отпуск! Свежий и отдохнувший я готов к работе. Одно огорчает: мозги не сразу переходят в рабочий режим. Видимо требуется постотпускной период восстановления <img src='http://blogcoding.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  А в остальном, всё отлично, жизнь хороша!<br />
<span id="more-1920"></span><br />
Несколько отпускных фотографий:</p>
<p style="text-align:center"><a href='http://blogcoding.ru/wp-content/sv-galleries/a2010-1.jpg' class='floatbox' rev='group: G8-2963 caption:`Отель` caption2:`Отпуск`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/a2010-1-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/a2010-2.jpg' class='floatbox' rev='group: G8-2963 caption:`Бассейн отеля` caption2:`Отпуск`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/a2010-2-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/a2010-3.jpg' class='floatbox' rev='group: G8-2963 caption:`Водные горки отеля` caption2:`Отпуск`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/a2010-3-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/a2010-4.jpg' class='floatbox' rev='group: G8-2963 caption:`Пляж отеля` caption2:`Отпуск`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/a2010-4-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/a2010-5.jpg' class='floatbox' rev='group: G8-2963 caption:`Турецкие бананы` caption2:`Отпуск`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/a2010-5-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/a2010-6.jpg' class='floatbox' rev='group: G8-2963 caption:`Посёлок аборигенов` caption2:`Отпуск`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/a2010-6-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/a2010-7.jpg' class='floatbox' rev='group: G8-2963 caption:`Море` caption2:`Отпуск`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/a2010-7-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a></p>
<p style='text-align:left'>&copy; 2010, <a href='http://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>

<div><h3>Постовой</h3><ul><li>Отовсюду обо всём. Интересные статьи на <a href="http://neoantox.ru" onclick="pageTracker._trackPageview('/outgoing/neoantox.ru?referer=');">NeoAntoX.ru</a></li><li>Надоело расчитывать выплаты по ипотеке? Скачай <a href="http://alterprogs.ru/ipotechnyj-kalkulyator.html" onclick="pageTracker._trackPageview('/outgoing/alterprogs.ru/ipotechnyj-kalkulyator.html?referer=');">ипотечный калькулятор</a> абсолютно бесплатно.</li><li><a href="http://stavkisport.ru/" onclick="pageTracker._trackPageview('/outgoing/stavkisport.ru/?referer=');">Спорт-прогнозы</a> на сервисе спортивных ставок!</li><li>Хотите купить недвижимость на Тенерифе? Вам на <a href="http://www.actualproperties.com/" onclick="pageTracker._trackPageview('/outgoing/www.actualproperties.com/?referer=');">Villa Spain</a>!</li></ul></div>
 
<img src="http://blogcoding.ru/?ak_action=api_record_view&id=1920&type=feed" alt="" />

<p>Нет похожих статей.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/ZUHUWQAso6wQHEz13khlDLSmUHs/0/da"><img src="http://feedads.g.doubleclick.net/~a/ZUHUWQAso6wQHEz13khlDLSmUHs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ZUHUWQAso6wQHEz13khlDLSmUHs/1/da"><img src="http://feedads.g.doubleclick.net/~a/ZUHUWQAso6wQHEz13khlDLSmUHs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/minimus/~4/mzgmzqZdYd8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogcoding.ru/?feed=rss2&amp;p=1920</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blogcoding.ru/?p=1920</feedburner:origLink></item>
		<item>
		<title>Почта для блога</title>
		<link>http://feedproxy.google.com/~r/minimus/~3/R4KSUbePP34/</link>
		<comments>http://blogcoding.ru/?p=1894#comments</comments>
		<pubDate>Sat, 05 Jun 2010 17:31:27 +0000</pubDate>
		<dc:creator>minimus</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Блоггинг]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[почта]]></category>
		<category><![CDATA[Яндекс]]></category>

		<guid isPermaLink="false">http://blogcoding.ru/?p=1894</guid>
		<description><![CDATA[Блоггеры, пользующиеся коммерческим хостингом и доменом, прекрасно знают как неудобен почтовый сервис, предоставляемый хостером.


Нет похожих статей.]]></description>
			<content:encoded><![CDATA[
<p><img class="alignleft" src="http://blogcoding.ru/images/posts/envelope-mail-2.jpg" alt="Почта" width="143" height="125" />Блоггеры, пользующиеся коммерческим хостингом и доменом, прекрасно знают как неудобен почтовый сервис, предоставляемый хостером. Если с протоколом POP ещё более менее (Вы можете получать почту аккаунта на почтовый клиент), то с протоколом SMTP обычно большие проблемы. Другими словами, для того, чтобы ответить на письмо, полученное на почтовый аккаунт домена, необходимо зайти на WebMail своего аккаунта, отправить ответ с помощью почтового клиента обычно невозможно. До тех пор пока почта на домен blogcoding.ru приходила в незначительных количествах, я мирился с этим неудобством, но время идёт, поток почты увеличивается и меня стала конкретно напрягать невозможность пользования почтовым клиентом. Захотелось, знаете-ли, полноценного почтового ящика на собственном домене &#8230;<br />
<span id="more-1894"></span><br />
Естественно, кто ищет, тот всегда найдёт! Поиск в сети дал следующую информацию: сервис <em>почты для домена</em> предоставляют <strong>Google</strong> (а как же без него) и <strong>Яндекс</strong>. Довольно странно, но Яндекс даёт больше возможностей, чем Google.</p>
<div id="stb-container" class="stb-container"><div class='stb-info-caption_box stb_caption' >Яндекс<div id="stb-tool" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://blogcoding.ru/wp-content/plugins/wp-special-textboxes/images/hide.png" title="Скрыть" /></div></div><div class='stb-info-body_box stb_body' ></p>
<p><a href="http://pdd.yandex.ru/domains_add/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pdd.yandex.ru/domains_add/?referer=');">Яндекс</a>:</p>
<ul>
<li>Красивый почтовый адрес с любым логином и адресом вашего домена.</li>
<li>1000 почтовых аккаунтов, которые вы сможете раздать своим друзьям,  родственникам и знакомым.</li>
</ul>
<p>А также</p>
<ul>
<li>Неограниченный объём почтового ящика.</li>
<li>Надёжная система защиты от спама и вирусов.</li>
<li>Девять цветовых схем интерфейса.</li>
<li>Доступ к почте по протоколам POP3/IMAP.</li>
<li>Удобные инструменты работы с письмами в веб-интерфейсе (скачивание  всех вложенных файлов одним архивом, прослушивание приложенных  mp3-файлов, метки популярных социальных сетей и многое другое).</li>
</ul>
<p></div></div>
<div id="stb-container" class="stb-container"><div class='stb-info-caption_box stb_caption' >Google Apps<div id="stb-tool" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://blogcoding.ru/wp-content/plugins/wp-special-textboxes/images/hide.png" title="Скрыть" /></div></div><div class='stb-info-body_box stb_body' ></p>
<p><a href="http://www.google.com/apps/intl/ru/group/index.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.google.com/apps/intl/ru/group/index.html?referer=');">Google</a> (базовый пакет):</p>
<ul>
<li><strong>Gmail</strong><br />
Заведите персонализированный адрес электронной почты, например  hikingfan@your-group.com. Общий объём дискового пространства 7Gb.</li>
<li><strong>Календарь Google</strong><br />
Составляйте свое расписание и  создавайте общие мероприятия<br />
с друзьями.</li>
<li><strong>Сайты Google</strong><br />
Создавайте веб-сайты и викистраницы  групп.</li>
<li><strong>Документы Google</strong><br />
Совместное использование  документов, презентаций и электронных таблиц в Интернете</li>
</ul>
<p></div></div>
<p>Тем не менее, поскольку мне больше нравится Gmail, я выбрал для себя <a href="http://www.google.com/apps/intl/ru/group/index.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.google.com/apps/intl/ru/group/index.html?referer=');">Google Apps</a>. Вы делайте выбор сами.</p>
<p>Проседура установки довольно проста, но требует некоторого времени, т.к. включает в себя процесс проверки <strong>прав на домен</strong> и проверки изменённых <strong>записей MX</strong> домена.</p>
<p>Первым делом необходимо зарегистрироваться на <a href="http://www.google.com/apps/intl/ru/group/index.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.google.com/apps/intl/ru/group/index.html?referer=');">Google Apps</a>.</p>
<p style="text-align:center"><a href='http://blogcoding.ru/wp-content/sv-galleries/gm-1.jpg' class='floatbox' rev='group: G5-1886 caption:`Начало регистрации` caption2:`Почта для домена`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/gm-1-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/gm-2.jpg' class='floatbox' rev='group: G5-1886 caption:`Выбор домена` caption2:`Почта для домена`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/gm-2-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/gm-3.jpg' class='floatbox' rev='group: G5-1886 caption:`Регистрация` caption2:`Почта для домена`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/gm-3-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/gm-4.jpg' class='floatbox' rev='group: G5-1886 caption:`Завершение регистрации` caption2:`Почта для домена`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/gm-4-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a></p>
<p>Сразу после регистрации, Вы попадёте в панель управления аккаунта Google Apps.</p>
<p style="text-align:center"><a href='http://blogcoding.ru/wp-content/sv-galleries/gm-5.jpg' class='floatbox' rev='group: G6-8931 caption:`Пока не работает` caption2:`Панель управления`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/gm-5-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/gm-6.jpg' class='floatbox' rev='group: G6-8931 caption:`Право на владение подтверждено. Проверка записей MX.` caption2:`Панель управления`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/gm-6-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/gm-7.jpg' class='floatbox' rev='group: G6-8931 caption:`Записи MX проверены. Обновление серверов Google.` caption2:`Панель управления`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/gm-7-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/gm-8.jpg' class='floatbox' rev='group: G6-8931 caption:`Все проверки завершены. Всё работает, всё стреляет.` caption2:`Панель управления`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/gm-8-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a></p>
<p>Вам необходимо подтвердить право владением домена. Для этого есть два способа, которые будут Вам предложены.</p>
<ol>
<li>С помощью записи CNAME &#8211; добавьте запись CNAME в DNS вашего домена. Это можно сделать в панели управления DNS Вашего хостера (блог на коммерческом хостинге) или из панели управления DNS регистратора (домен припаркован или обслуживает бесплатный хостинг, например blogspot.com). Данные для CNAME будут предоставлены при выборе способа подтверждения.</li>
<li>C помощью файла. Файл необходимо закачать в корень Вашего блога. Имя файла и его содержимое будут предоставлены при выборе способа подтверждения.</li>
</ol>
<p>После выполнения действий необходимых для подтверждения права владения доменом нажмите кнопку &laquo;я выполнил запрошенные действия&raquo;. Проверка прав на владение доменом может длиться до двух суток, в моём случае она длилась 3 минуты.</p>
<p>После подтверждения прав на домен необходимо добавить записи MX DNS. Записи добавляются там же где менялась запись CNAME. Необходимо добавить 7 записей:</p>
<table style="margin-left: 10px; margin-right: 10px;" border="0" cellspacing="1" cellpadding="1" width="90%">
<tbody>
<tr bgcolor="#c3e1f7">
<td height="24">
<div><strong>Имя</strong></div>
</td>
<td>
<div><strong>Тип </strong></div>
</td>
<td>
<div><strong>Адрес</strong></div>
</td>
<td>
<div><strong>Приоритет</strong></div>
</td>
</tr>
<tr bgcolor="#e6e6e6">
<td height="23">domen.ru.</td>
<td>MX</td>
<td>ASPMX.L.GOOGLE.COM.</td>
<td>
<div>10</div>
</td>
</tr>
<tr>
<td height="23">domen.ru.</td>
<td>MX</td>
<td>ALT1.ASPMX.L.GOOGLE.COM.</td>
<td>
<div>20</div>
</td>
</tr>
<tr bgcolor="#e6e6e6">
<td height="23">domen.ru.</td>
<td>MX</td>
<td>ALT2.ASPMX.L.GOOGLE.COM.</td>
<td>
<div>20</div>
</td>
</tr>
<tr>
<td height="23">domen.ru.</td>
<td>MX</td>
<td>ASPMX2.GOOGLEMAIL.COM.</td>
<td>
<div>30</div>
</td>
</tr>
<tr bgcolor="#e6e6e6">
<td height="23">domen.ru.</td>
<td>MX</td>
<td>ASPMX3.GOOGLEMAIL.COM.</td>
<td>
<div>30</div>
</td>
</tr>
<tr>
<td height="23">domen.ru.</td>
<td>MX</td>
<td>ASPMX4.GOOGLEMAIL.COM.</td>
<td>
<div>30</div>
</td>
</tr>
<tr bgcolor="#e6e6e6">
<td height="23">domen.ru.</td>
<td>MX</td>
<td>ASPMX5.GOOGLEMAIL.COM.</td>
<td>
<div>30</div>
</td>
</tr>
</tbody>
</table>
<p>Имя записи не имеет значения &#8211; можно вообще не вводить.</p>
<p>После ввода записей MX нажмите соответствующую кнопку на странице где представлены значения записей (моя таблица приведена лишь для примера) для инициации процедуры проверки MX записей Вашего домена. Сама процедура может занимать до двух суток, но в реальности занимает 5..7 минут.</p>
<p>После завершения процедуры проверки понадобится ещё около часа для обновления серверов Google. Как только сервера обновят свои данные, можно считать, что всё готово к нормальной работе. Можно заходить в web-интерфейс (в него можно заходить уже после подтверждения прав на домен) или настраивать почтовый клиент.</p>
<p style="text-align:center"><a href='http://blogcoding.ru/wp-content/sv-galleries/gm-mail.jpg' class='floatbox' rev='group: G7-3527 caption:`Web-интерфейс почты домена` caption2:`Почта домена`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/gm-mail-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/gm-props.jpg' class='floatbox' rev='group: G7-3527 caption:`Настройки почтового клиента` caption2:`Почта домена`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/gm-props-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a></p>
<p>Не знаю как Вам, а мне этот сервис очень понравился &#8230; <img src='http://blogcoding.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style='text-align:left'>&copy; 2010, <a href='http://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>

<div><h3>Постовой</h3><ul><li>Имею слабость к вкусным овощным салатикам, особенно мне нравятся <a href="http://sallaty.ru/category/konservirovannye-salaty" onclick="pageTracker._trackPageview('/outgoing/sallaty.ru/category/konservirovannye-salaty?referer=');">консервированные салаты</a>. Посетите сайт где можно найти всевозможные рецепты этого явства! Обязательно посетите!</li></ul></div>
 
<img src="http://blogcoding.ru/?ak_action=api_record_view&id=1894&type=feed" alt="" />

<p>Нет похожих статей.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/xWHRuBaZv5fVnMNQ5Gys2wCgbTE/0/da"><img src="http://feedads.g.doubleclick.net/~a/xWHRuBaZv5fVnMNQ5Gys2wCgbTE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/xWHRuBaZv5fVnMNQ5Gys2wCgbTE/1/da"><img src="http://feedads.g.doubleclick.net/~a/xWHRuBaZv5fVnMNQ5Gys2wCgbTE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/minimus/~4/R4KSUbePP34" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogcoding.ru/?feed=rss2&amp;p=1894</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blogcoding.ru/?p=1894</feedburner:origLink></item>
		<item>
		<title>Анатомия плагина WordPress. Часть 2.</title>
		<link>http://feedproxy.google.com/~r/minimus/~3/N1c-N8l_OGE/</link>
		<comments>http://blogcoding.ru/?p=1886#comments</comments>
		<pubDate>Mon, 31 May 2010 10:03:46 +0000</pubDate>
		<dc:creator>minimus</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://blogcoding.ru/?p=1886</guid>
		<description><![CDATA[В первой части статьи мы говорили об actions и их применении. Пора поговорить о фильтрах (filters).


Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=1882' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Часть 1.'>Анатомия плагина WordPress. Часть 1.</a></li>
<li><a href='http://blogcoding.ru/?p=1870' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Введение.'>Анатомия плагина WordPress. Введение.</a></li>
<li><a href='http://blogcoding.ru/?p=962' rel='bookmark' title='Permanent Link: WordPress плагин Multilingual Comments Number'>WordPress плагин Multilingual Comments Number</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<p><img class="alignleft" style="margin: 5px 10px;" src="http://blogcoding.ru/images/posts/wp-plugin-2.jpg" alt="wp plugin" width="150" height="100" />В <a href="http://blogcoding.ru/?p=1882" target="_self">первой части статьи</a> мы говорили об <strong>actions</strong> и их применении. Пора поговорить о <strong>фильтрах</strong> (filters).</p>
<p>Фильтры WordPress применяются для изменения результата исполнения функций как входящих в базовый пакет CMS, так и  написанных сторонними разработчиками (при условии, что эти функции поддерживают наложение фильтра путём использования функции <strong>apply_filters</strong>). В рассматриваемом плагине фильтр накладывается на результат выполнения функции <strong>comments_number</strong>.<br />
<span id="more-1886"></span><br />
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Нажмите, чтобы показать или скрыть блок кода">Наложение фильтра comments_number</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="php">add_filter<span class="br0">&#40;</span> <span class="st_h">'comments_number'</span><span class="sy0">,</span> <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span> <span class="sy0">&amp;</span><span class="re0">$this</span><span class="sy0">,</span> <span class="st_h">'commentsNumber'</span> <span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">9999</span><span class="sy0">,</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></p>
<p>Прежде чем установить фильтр для какой-либо функции неплохо было бы обратиться к документации, а если таковой не найдётся, к исходному коду функции. Поскольку документация отсутствует взглянем на исходник <strong>comments_number</strong>:</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Нажмите, чтобы показать или скрыть блок кода">Код comments_number</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="kw2">function</span> comments_number<span class="br0">&#40;</span> <span class="re0">$zero</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="sy0">,</span> <span class="re0">$one</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="sy0">,</span> <span class="re0">$more</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="sy0">,</span> <span class="re0">$deprecated</span> <span class="sy0">=</span> <span class="st_h">''</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
  <span class="kw2">global</span> <span class="re0">$id</span><span class="sy0">;</span>
  <span class="re0">$number</span> <span class="sy0">=</span> get_comments_number<span class="br0">&#40;</span><span class="re0">$id</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
  <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="re0">$number</span> <span class="sy0">&gt;</span> <span class="nu0">1</span> <span class="br0">&#41;</span>
    <span class="re0">$output</span> <span class="sy0">=</span> <a href="http://www.php.net/str_replace" onclick="pageTracker._trackPageview('/outgoing/www.php.net/str_replace?referer=');"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="st_h">'%'</span><span class="sy0">,</span> number_format_i18n<span class="br0">&#40;</span><span class="re0">$number</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="br0">&#40;</span> <span class="kw4">false</span> <span class="sy0">===</span> <span class="re0">$more</span> <span class="br0">&#41;</span> ? __<span class="br0">&#40;</span><span class="st_h">'% Comments'</span><span class="br0">&#41;</span> <span class="sy0">:</span> <span class="re0">$more</span><span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="kw1">elseif</span> <span class="br0">&#40;</span> <span class="re0">$number</span> <span class="sy0">==</span> <span class="nu0">0</span> <span class="br0">&#41;</span>
    <span class="re0">$output</span> <span class="sy0">=</span> <span class="br0">&#40;</span> <span class="kw4">false</span> <span class="sy0">===</span> <span class="re0">$zero</span> <span class="br0">&#41;</span> ? __<span class="br0">&#40;</span><span class="st_h">'No Comments'</span><span class="br0">&#41;</span> <span class="sy0">:</span> <span class="re0">$zero</span><span class="sy0">;</span>
  <span class="kw1">else</span> <span class="co1">// must be one</span>
    <span class="re0">$output</span> <span class="sy0">=</span> <span class="br0">&#40;</span> <span class="kw4">false</span> <span class="sy0">===</span> <span class="re0">$one</span> <span class="br0">&#41;</span> ? __<span class="br0">&#40;</span><span class="st_h">'1 Comment'</span><span class="br0">&#41;</span> <span class="sy0">:</span> <span class="re0">$one</span><span class="sy0">;</span>
&nbsp;
  <span class="kw1">echo</span> apply_filters<span class="br0">&#40;</span><span class="st_h">'comments_number'</span><span class="sy0">,</span> <span class="re0">$output</span><span class="sy0">,</span> <span class="re0">$number</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Глядя на исходный код мы можем сделать следующие выводы:</p>
<ul>
<li>функция может возвращать как простую строку, так и HTML-теги</li>
<li>в налагаемый фильтр передаётся два параметра: строка количества комментариев и количество комментариев в формате integer</li>
</ul>
<p>Исходя из этого следует (в рамках изучаемого плагина), что, с одной стороны, есть необходимость попытаться сохранить передаваемый HTML-код, а с другой стороны, нет необходимости получать количество комментариев для каждой статьи, т.к. мы и так его получим через параметры фильтра. Вместе с тем, нам <strong>необходимо обеспечить</strong> прием обоих параметров, т.к. по умолчанию фильтр WordPress принимает только один параметр.</p>
<p>Возвращаясь к используемой нами в конструкторе плагина функции <strong>add_filter</strong>, хочу описать что именно мы сделали (какие параметры использовали):</p>
<ul>
<li>первый параметр &#8211; имя функции на которую накладываем фильтр</li>
<li>второй параметр &#8211; функция обработчик фильтра. Поскольку является методом класса мы не можем передать только имя обработчика, поэтому передаем в виде массива.</li>
<li>третий параметр &#8211; приоритет исполнения. Установив в значение 9999, пытаемся сделать так, чтобы наш фильтр, при наличие других фильтров для comments_number, выполнился последним.</li>
<li>четвёртый параметр &#8211; задаём количество входящих параметров. Как мы уже выяснили выше, параметров два, поэтому устанавливаем в 2.</li>
</ul>
<p>В качестве обработчика фильтра мы задали метод класса нашего плагина <strong>commentsNumber</strong>, который собственно говоря и является ядром создаваемого (в данном случае) плагина. Поэтому перейдём к его рассмотрению.</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Нажмите, чтобы показать или скрыть блок кода">Код метода commentsNumber</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="kw2">function</span> commentsNumber<span class="br0">&#40;</span> <span class="re0">$output</span><span class="sy0">,</span> <span class="re0">$number</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
  <span class="re0">$mcnOptions</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getOptions</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="re0">$text</span> <span class="sy0">=</span> <a href="http://www.php.net/strip_tags" onclick="pageTracker._trackPageview('/outgoing/www.php.net/strip_tags?referer=');"><span class="kw3">strip_tags</span></a><span class="br0">&#40;</span> <span class="re0">$output</span> <span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="re0">$filterNeeded</span> <span class="sy0">=</span> <span class="sy0">!</span><a href="http://www.php.net/ctype_digit" onclick="pageTracker._trackPageview('/outgoing/www.php.net/ctype_digit?referer=');"><span class="kw3">ctype_digit</span></a><span class="br0">&#40;</span> <span class="re0">$text</span> <span class="br0">&#41;</span><span class="sy0">;</span> 
&nbsp;
  <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="re0">$filterNeeded</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">switch</span> <span class="br0">&#40;</span> <span class="re0">$number</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
      <span class="kw1">case</span> <span class="nu0">0</span><span class="sy0">:</span> <span class="re0">$mcnOutput</span> <span class="sy0">=</span> <a href="http://www.php.net/str_replace" onclick="pageTracker._trackPageview('/outgoing/www.php.net/str_replace?referer=');"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span> <span class="re0">$text</span><span class="sy0">,</span> <span class="re0">$mcnOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringZero'</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re0">$output</span> <span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="kw1">break</span><span class="sy0">;</span>
&nbsp;
      <span class="kw1">case</span> <span class="nu0">1</span><span class="sy0">:</span> <span class="re0">$mcnOutput</span> <span class="sy0">=</span> <a href="http://www.php.net/str_replace" onclick="pageTracker._trackPageview('/outgoing/www.php.net/str_replace?referer=');"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span> <span class="re0">$text</span><span class="sy0">,</span> <span class="re0">$mcnOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringOne'</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re0">$output</span> <span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="kw1">break</span><span class="sy0">;</span>
&nbsp;
      <span class="kw1">default</span><span class="sy0">:</span> <span class="re0">$mcnOutput</span> <span class="sy0">=</span> <a href="http://www.php.net/str_replace" onclick="pageTracker._trackPageview('/outgoing/www.php.net/str_replace?referer=');"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span> <span class="re0">$text</span><span class="sy0">,</span> <a href="http://www.php.net/sprintf" onclick="pageTracker._trackPageview('/outgoing/www.php.net/sprintf?referer=');"><span class="kw3">sprintf</span></a><span class="br0">&#40;</span> __ngettext<span class="br0">&#40;</span> <span class="st0">&quot;<span class="es6">%d</span> Comment&quot;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es6">%d</span> Comments&quot;</span><span class="sy0">,</span> <span class="re0">$number</span><span class="sy0">,</span> <span class="st0">&quot;multilingual-comments-number&quot;</span> <span class="br0">&#41;</span><span class="sy0">,</span> <span class="re0">$number</span> <span class="br0">&#41;</span><span class="sy0">,</span> <span class="re0">$output</span> <span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="kw1">break</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
    <span class="kw1">echo</span> <span class="re0">$mcnOutput</span><span class="sy0">;</span>
  <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="kw1">echo</span> <span class="re0">$output</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Первым делом получаем заданные пользователем параметры плагина (об этом поговорим чуть позже).</p>
<p>Затем в переменную <strong>$text</strong> записываем значение входящей строки количества комментариев, убрав из неё все HTML-теги. Таким образом мы получаем только строку количества комментариев и ничего более.</p>
<p>Проверяем полученную строку количества комментариев на наличие в ней буквенных литер. Если ДА &#8211; строка содержит слова и требуется фильтрация, если НЕТ &#8211; фильтрация не требуется, т.к. мы имеем дело с передачей строки количества комментариев в виде строки цифр, не требуещей перевода.</p>
<p>Если фильтрация требуется, формируем собственную строку вывода, если нет, возвращаем полученную строку количества комментариев КАК ЕСТЬ.</p>
<p>При формировании строки вывода мы используем полученные параметры, заданные пользователем для количества комментариев равных 0 и 1 (кто-то любит писать &laquo;Нет комментариев&raquo;, а кто-то &laquo;Оставьте комментарий&raquo;). Во всех остальных случаях мы используем возможности PHP GetText применяя конструкцию <strong>__ngettext &#8211; sprintf</strong>. Для правильного употребления форм множественного числа в локализованных версиях, команда разработчиков WordPress рекомендует использовать именно эту конструкцию.</p>
<p>Естественно, заменяя во входящей строке количества комментариев только ту часть которая не является HTML-тегами, то что мы экстрактировали в переменную $text, мы полностью сохраняем оригинальные HTML-теги. Для чего это нужно? Это не только желание получить валидный код, но и насущная необходимость. Вот пример использования плагина не сохраняющего HTML-теги (не буду говорить какого) и пример вывода с помощью <strong>Multilingual Comments Number</strong> на странице редактирования комментариев:</p>
<p style="text-align:center"><a href='http://blogcoding.ru/wp-content/sv-galleries/rcn-comm.jpg' class='floatbox' rev='group: G4-5604 caption:`Без сохранения HTML-тегов` caption2:`Админ панель`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/rcn-comm-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/mcn-comm.jpg' class='floatbox' rev='group: G4-5604 caption:`С сохранением HTML-тегов` caption2:`Админ панель`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/mcn-comm-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a></p>
<p>На сегодня, пожалуй всё &#8230; В следующей статье мы поговорим о параметрах плагина и способах построения страницы параметров плагина.</p>
<p>Продолжение следует &#8230;</p>
<p style='text-align:left'>&copy; 2010, <a href='http://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>

<img src="http://blogcoding.ru/?ak_action=api_record_view&id=1886&type=feed" alt="" />

<p>Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=1882' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Часть 1.'>Анатомия плагина WordPress. Часть 1.</a></li>
<li><a href='http://blogcoding.ru/?p=1870' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Введение.'>Анатомия плагина WordPress. Введение.</a></li>
<li><a href='http://blogcoding.ru/?p=962' rel='bookmark' title='Permanent Link: WordPress плагин Multilingual Comments Number'>WordPress плагин Multilingual Comments Number</a></li>
</ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/4vtic-jrjbs5TMtuXcOE4EaPjAA/0/da"><img src="http://feedads.g.doubleclick.net/~a/4vtic-jrjbs5TMtuXcOE4EaPjAA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/4vtic-jrjbs5TMtuXcOE4EaPjAA/1/da"><img src="http://feedads.g.doubleclick.net/~a/4vtic-jrjbs5TMtuXcOE4EaPjAA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/minimus/~4/N1c-N8l_OGE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogcoding.ru/?feed=rss2&amp;p=1886</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blogcoding.ru/?p=1886</feedburner:origLink></item>
		<item>
		<title>Анатомия плагина WordPress. Часть 1.</title>
		<link>http://feedproxy.google.com/~r/minimus/~3/-ikcB7GWEG8/</link>
		<comments>http://blogcoding.ru/?p=1882#comments</comments>
		<pubDate>Sun, 30 May 2010 10:03:28 +0000</pubDate>
		<dc:creator>minimus</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://blogcoding.ru/?p=1882</guid>
		<description><![CDATA[В прошлой статье я говорил об идее и плане. Поэтому обсудим идею и план, и только после этого перейдём непосредственно к реализации ...


Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=1886' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Часть 2.'>Анатомия плагина WordPress. Часть 2.</a></li>
<li><a href='http://blogcoding.ru/?p=1870' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Введение.'>Анатомия плагина WordPress. Введение.</a></li>
<li><a href='http://blogcoding.ru/?p=531' rel='bookmark' title='Permanent Link: Ещё один WordPress антиспам плагин (YAWASP)'>Ещё один WordPress антиспам плагин (YAWASP)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<p><img class="alignleft" src="http://blogcoding.ru/images/featured/wp-logo-2.jpg" alt="Wordpress plugin" width="150" height="154" />В прошлой <a href="http://blogcoding.ru/?p=1870">статье</a> я говорил об <strong>идее</strong> и <strong>плане</strong>. Поэтому обсудим <strong>идею</strong> и <strong>план</strong>, и только после этого перейдём непосредственно к <strong>реализации</strong> &#8230;</p>
<p>Начнём с <strong>идеи</strong>.</p>
<p>В <strong>WordPress</strong> существует функция шаблона <strong>comments_number</strong>, которая выводит количество комментариев для каждой статьи, а также используется в функции <strong>comments_popup_link</strong> для тех же самых целей. Не вдаваясь в технические подробности, можно сказать, что функция эта расчитана исключительно на англо-саксонские языки, имеющие лишь две формы числительного: один и много. Другие языки, имеющие большее количество форм числительных, данная функция обслуживает некорректно. Этот недостаток мы исправим с помощью небольшого плагина, а заодно, разберём как это делается. Это и есть <strong>идея</strong>, идея моего плагина <a href="http://blogcoding.ru/?p=962" target="_self"><strong>Multilingual Comments Number</strong></a>.<br />
<span id="more-1882"></span><br />
Перейдём к <strong>плану</strong>.</p>
<p>Во-первых, мы должны решить какой метод программирования мы изберём. Лично я являюсь сторонником современных методов программирования и поэтому, обычно, выбираю <strong>ООП</strong>. Боюсь, что для Вас, уважаемый читатель, этот довод не является исчерпывающим, поэтому приведу иные доводы.</p>
<div class='stb-info_box' ></p>
<p><strong><span style="font-size: xx-small; line-height: 12px;">Небольшой экскурс в историю вопроса</span></strong></p>
<p><span style="font-size: xx-small; line-height: 12px;">Первоначально, на заре программирования, программисты использовали линейный метод программирования. Т.е. данные и коды хранились в одной куче, а программный код исполнялся от первой команды до последней (STOP) линейно. При этом одинаковые фрагменты кода банально переписывались столько раз, сколько это было нужно.</span></p>
<p><span style="font-size: xx-small; line-height: 12px;">Затем, с развитием процессорных команд, а именно команд перехода, умные головы придумали хранить данные и части кода в разных областях памяти и подгружать их по мере необходимости. Так появилось процедурное программирование.</span></p>
<p><span style="font-size: xx-small; line-height: 12px;">Широкое использование разнотипных данных в одном массиве данных (структурах, struct) привело к их естественному развитию &#8211; хранению в структуре не только данных, но и процедур. Добавив в этот коктейль некоторые другие нововведения (полиморфизм, инкапсуляция и наследование), не менее умные головы получили ООП &#8211; объектно ориентированное программирование.</span></p>
<p></div>
<p>WordPress, несмотря на тяжёлое наследие прошлого (довольно большая часть написана методами процедурного программирования), постепенно выбирается в сторону полностью ООП-продукта. К примеру, совсем недавно был введён новый механизм написания и обслуживания виджетов &#8211; <strong>WordPress Widget Factory</strong>. Ещё одним доводом побуждающим программистов использовать ООП является огромное количество плагинов накопившихся в репозитарии WordPress. При таком обилии плагинов становится всё труднее давать имена функциям, которые не конфликтовали бы с уже имеющимися. В случае ООП реализации данная проблема снимается сама-собой. Обращать внимание необходимо лишь на название класса и переменной его представляющей. Что касается названий функций, то они становятся стандартными и внятными. Я в своих плагинах использую стандартные названия. Надеюсь этих доводов достаточно, чтобы запланировать написание плагина с помощью ООП.</p>
<p>А что у нас во-вторых? Во-вторых у нас ответ на самый главный вопрос планирования: <strong>Как?</strong> Как именно мы будем реализовывать нужную функциональность? Разумеется есть варианты. Например можно было бы перехватывать вывод функции <strong>comments_number</strong> своими средствами или написать заменяющую функцию. Однако, имеющийся механизм фильтров <strong>WordPress</strong> позволяет легко решить эту задачу, а возможности функций <strong>PHP Gettext</strong> дают возможность решить задачу для любого языка, а не только для русского, что весьма актуально в свете &laquo;парада суверенитетов&raquo; стран СНГ. Дело в том, что в механизм Gettext заложена не просто замена базовых фраз на локальные, но и учёт количества форм числительных. Таким образом, мы можем не просто не заботиться о количестве этих форм, но и переложить часть функциональности плагина на файлы локализации.</p>
<p>Ну вот, <strong>план</strong> составлен. Пора переходить к <strong>реализации</strong> плагина.</p>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Нажмите, чтобы показать или скрыть блок кода">Код плагина</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="kw2">&lt;?php</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/class_exists" onclick="pageTracker._trackPageview('/outgoing/www.php.net/class_exists?referer=');"><span class="kw3">class_exists</span></a><span class="br0">&#40;</span><span class="st_h">'MultilingualCommentsNumber'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="kw2">class</span> MultilingualCommentsNumber <span class="br0">&#123;</span>
		<span class="kw2">var</span> <span class="re0">$adminOptionsName</span> <span class="sy0">=</span> <span class="st0">&quot;MultilingualCommentsNumberAdminOptions&quot;</span><span class="sy0">;</span>
		<span class="kw2">var</span> <span class="re0">$mcnInitOptions</span> <span class="sy0">=</span> <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'commentStringZero'</span> <span class="sy0">=&gt;</span> <span class="st_h">''</span><span class="sy0">,</span> <span class="st_h">'commentStringOne'</span> <span class="sy0">=&gt;</span> <span class="st_h">''</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
		<span class="kw2">function</span> MultilingualCommentsNumber<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
			<span class="co1">//load language</span>
			<span class="re0">$plugin_dir</span> <span class="sy0">=</span> <a href="http://www.php.net/basename" onclick="pageTracker._trackPageview('/outgoing/www.php.net/basename?referer=');"><span class="kw3">basename</span></a><span class="br0">&#40;</span> <a href="http://www.php.net/dirname" onclick="pageTracker._trackPageview('/outgoing/www.php.net/dirname?referer=');"><span class="kw3">dirname</span></a><span class="br0">&#40;</span> <span class="kw4">__FILE__</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/function_exists" onclick="pageTracker._trackPageview('/outgoing/www.php.net/function_exists?referer=');"><span class="kw3">function_exists</span></a><span class="br0">&#40;</span> <span class="st_h">'load_plugin_textdomain'</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span>
				load_plugin_textdomain<span class="br0">&#40;</span> <span class="st_h">'multilingual-comments-number'</span><span class="sy0">,</span> <span class="kw4">false</span><span class="sy0">,</span> <span class="re0">$plugin_dir</span> <span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
			<span class="co1">//Actions and Filters</span>
			add_action<span class="br0">&#40;</span><span class="st_h">'admin_menu'</span><span class="sy0">,</span> <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="sy0">&amp;</span><span class="re0">$this</span><span class="sy0">,</span> <span class="st_h">'onAdminPage'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			add_action<span class="br0">&#40;</span><span class="st_h">'activate_multilingual-comments-number/multilingual-comments-number.php'</span><span class="sy0">,</span>  <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="sy0">&amp;</span><span class="re0">$this</span><span class="sy0">,</span> <span class="st_h">'onActivate'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			add_action<span class="br0">&#40;</span><span class="st_h">'deactivate_multilingual-comments-number/multilingual-comments-number.php'</span><span class="sy0">,</span>  <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="sy0">&amp;</span><span class="re0">$this</span><span class="sy0">,</span> <span class="st_h">'onDeactivate'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			add_filter<span class="br0">&#40;</span> <span class="st_h">'comments_number'</span><span class="sy0">,</span> <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span> <span class="sy0">&amp;</span><span class="re0">$this</span><span class="sy0">,</span> <span class="st_h">'commentsNumber'</span> <span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">8</span><span class="sy0">,</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
&nbsp;
		<span class="kw2">function</span> onActivate<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
			<span class="re0">$mcnAdminOptions</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getOptions</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			update_option<span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">adminOptionsName</span><span class="sy0">,</span> <span class="re0">$mcnAdminOptions</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
&nbsp;
		<span class="kw2">function</span> onDeactivate<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
			delete_option<span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">adminOptionsName</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
&nbsp;
		<span class="kw2">function</span> getOptions<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
			<span class="re0">$mcnAdminOptions</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">mcnInitOptions</span><span class="sy0">;</span>
			<span class="re0">$mcnOptions</span> <span class="sy0">=</span> get_option<span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">adminOptionsName</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty" onclick="pageTracker._trackPageview('/outgoing/www.php.net/empty?referer=');"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$mcnOptions</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
				<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$mcnOptions</span> <span class="kw1">as</span> <span class="re0">$key</span> <span class="sy0">=&gt;</span> <span class="re0">$option</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
					<span class="re0">$mcnAdminOptions</span><span class="br0">&#91;</span><span class="re0">$key</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$option</span><span class="sy0">;</span>
				<span class="br0">&#125;</span>
			<span class="br0">&#125;</span>
			<span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$mcnAdminOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringZero'</span><span class="br0">&#93;</span> <span class="sy0">===</span> <span class="st_h">''</span><span class="br0">&#41;</span>
				<span class="re0">$mcnAdminOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringZero'</span><span class="br0">&#93;</span> <span class="sy0">=</span> __<span class="br0">&#40;</span> <span class="st_h">'There are no comments'</span><span class="sy0">,</span> <span class="st_h">'multilingual-comments-number'</span> <span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$mcnAdminOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringOne'</span><span class="br0">&#93;</span> <span class="sy0">===</span> <span class="st_h">''</span><span class="br0">&#41;</span>
				<span class="re0">$mcnAdminOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringOne'</span><span class="br0">&#93;</span> <span class="sy0">=</span> __<span class="br0">&#40;</span> <span class="st_h">'One Comment'</span><span class="sy0">,</span> <span class="st_h">'multilingual-comments-number'</span> <span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="kw1">return</span> <span class="re0">$mcnAdminOptions</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
&nbsp;
		<span class="kw2">function</span> onAdminPage<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
			<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/function_exists" onclick="pageTracker._trackPageview('/outgoing/www.php.net/function_exists?referer=');"><span class="kw3">function_exists</span></a><span class="br0">&#40;</span><span class="st_h">'add_options_page'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
				<span class="re0">$plugin_page</span> <span class="sy0">=</span> add_options_page<span class="br0">&#40;</span>__<span class="br0">&#40;</span><span class="st_h">'Comments Numbering'</span><span class="sy0">,</span> <span class="st_h">'multilingual-comments-number'</span><span class="br0">&#41;</span><span class="sy0">,</span> __<span class="br0">&#40;</span><span class="st_h">'Comments Numbering'</span><span class="sy0">,</span> <span class="st_h">'multilingual-comments-number'</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">8</span><span class="sy0">,</span> <a href="http://www.php.net/basename" onclick="pageTracker._trackPageview('/outgoing/www.php.net/basename?referer=');"><span class="kw3">basename</span></a><span class="br0">&#40;</span><span class="kw4">__FILE__</span><span class="br0">&#41;</span><span class="sy0">,</span> <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="sy0">&amp;</span><span class="re0">$this</span><span class="sy0">,</span> <span class="st_h">'printAdminPage'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
&nbsp;
		<span class="kw2">function</span> printAdminPage<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
			<span class="re0">$mcnOptions</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getOptions</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="re0">$options</span> <span class="sy0">=</span> <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span>
				<a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span>
					<span class="st0">&quot;name&quot;</span> <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st_h">'General Settings'</span><span class="sy0">,</span> <span class="st_h">'multilingual-comments-number'</span><span class="br0">&#41;</span><span class="sy0">,</span>
					<span class="st0">&quot;disp&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;startSection&quot;</span> <span class="br0">&#41;</span><span class="sy0">,</span>
&nbsp;
				<a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span>
					<span class="st0">&quot;name&quot;</span> <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st0">&quot;Define empty comments string&quot;</span><span class="sy0">,</span> <span class="st0">&quot;multilingual-comments-number&quot;</span><span class="br0">&#41;</span><span class="sy0">,</span>
					<span class="st0">&quot;desc&quot;</span> <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st0">&quot;This is phrase for posts without comments.&quot;</span><span class="sy0">,</span> <span class="st_h">'multilingual-comments-number'</span><span class="br0">&#41;</span><span class="sy0">,</span>
					<span class="st0">&quot;id&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;commentStringZero&quot;</span><span class="sy0">,</span>
					<span class="st0">&quot;disp&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;text&quot;</span><span class="sy0">,</span>
					<span class="st0">&quot;textLength&quot;</span> <span class="sy0">=&gt;</span> <span class="st_h">'250'</span><span class="br0">&#41;</span><span class="sy0">,</span>
&nbsp;
				<a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span>
					<span class="st0">&quot;name&quot;</span> <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st0">&quot;Define one comment string&quot;</span><span class="sy0">,</span> <span class="st0">&quot;multilingual-comments-number&quot;</span><span class="br0">&#41;</span><span class="sy0">,</span>
					<span class="st0">&quot;desc&quot;</span> <span class="sy0">=&gt;</span> __<span class="br0">&#40;</span><span class="st0">&quot;This is phrase for posts with one comment.&quot;</span><span class="sy0">,</span> <span class="st_h">'multilingual-comments-number'</span><span class="br0">&#41;</span><span class="sy0">,</span>
					<span class="st0">&quot;id&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;commentStringOne&quot;</span><span class="sy0">,</span>
					<span class="st0">&quot;disp&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;text&quot;</span><span class="sy0">,</span>
					<span class="st0">&quot;textLength&quot;</span> <span class="sy0">=&gt;</span> <span class="st_h">'250'</span><span class="br0">&#41;</span><span class="sy0">,</span>
&nbsp;
				<a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span>
					<span class="st0">&quot;disp&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;endSection&quot;</span> <span class="br0">&#41;</span>
			<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
			<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/isset" onclick="pageTracker._trackPageview('/outgoing/www.php.net/isset?referer=');"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st_h">'update_multilingualCommentsNumberSettings'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
				<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$options</span> <span class="kw1">as</span> <span class="re0">$value</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
					<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/isset" onclick="pageTracker._trackPageview('/outgoing/www.php.net/isset?referer=');"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$_POST</span><span class="br0">&#91;</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
						<span class="re0">$mcnOptions</span><span class="br0">&#91;</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$_POST</span><span class="br0">&#91;</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="sy0">;</span>
				<span class="br0">&#125;</span>
				update_option<span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">adminOptionsName</span><span class="sy0">,</span> <span class="re0">$mcnOptions</span><span class="br0">&#41;</span><span class="sy0">;</span>
				<span class="sy1">?&gt;</span>
&lt;div class=&quot;updated&quot;&gt;&lt;p&gt;&lt;strong&gt;<span class="kw2">&lt;?php</span> _e<span class="br0">&#40;</span><span class="st0">&quot;Multilingual Comments Number Settings Updated.&quot;</span><span class="sy0">,</span> <span class="st0">&quot;multilingual-comments-number&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="sy1">?&gt;</span>&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
				<span class="kw2">&lt;?php</span>
			<span class="br0">&#125;</span>
			 <span class="sy1">?&gt;</span>
&lt;div class=wrap&gt;
&lt;form method=&quot;post&quot; action=&quot;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&quot;REQUEST_URI&quot;</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&quot;&gt;
&lt;div id=&quot;icon-options-general&quot; class=&quot;icon32&quot;&gt;&lt;/div&gt;
&lt;h2&gt;<span class="kw2">&lt;?php</span> _e<span class="br0">&#40;</span><span class="st0">&quot;Multilingual Comments Number Settings&quot;</span><span class="sy0">,</span> <span class="st0">&quot;multilingual-comments-number&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/h2&gt;
&nbsp;
			<span class="kw2">&lt;?php</span> <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$options</span> <span class="kw1">as</span> <span class="re0">$value</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
				<span class="kw1">switch</span> <span class="br0">&#40;</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'disp'</span><span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
					<span class="kw1">case</span> <span class="st_h">'startSection'</span><span class="sy0">:</span>
						<span class="sy1">?&gt;</span>
&lt;div id=&quot;poststuff&quot; class=&quot;ui-sortable&quot;&gt;
&lt;div class=&quot;postbox opened&quot;&gt;
&lt;h3&gt;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'name'</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/h3&gt;
	&lt;div class=&quot;inside&quot;&gt;
						<span class="kw2">&lt;?php</span>
						<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/is_null" onclick="pageTracker._trackPageview('/outgoing/www.php.net/is_null?referer=');"><span class="kw3">is_null</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'desc'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">echo</span> <span class="st_h">'&lt;p&gt;'</span><span class="sy0">.</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'desc'</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st_h">'&lt;/p&gt;'</span><span class="sy0">;</span>
						<span class="kw1">break</span><span class="sy0">;</span>
&nbsp;
					<span class="kw1">case</span> <span class="st_h">'endSection'</span><span class="sy0">:</span>
						<span class="sy1">?&gt;</span>
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
						<span class="kw2">&lt;?php</span>
						<span class="kw1">break</span><span class="sy0">;</span>
&nbsp;
					<span class="kw1">case</span> <span class="st_h">'text'</span><span class="sy0">:</span>
						<span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/is_null" onclick="pageTracker._trackPageview('/outgoing/www.php.net/is_null?referer=');"><span class="kw3">is_null</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'textLength'</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="re0">$textLengs</span> <span class="sy0">=</span> <span class="st_h">'55'</span><span class="sy0">;</span>
						<span class="kw1">else</span> <span class="re0">$textLengs</span> <span class="sy0">=</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'textLength'</span><span class="br0">&#93;</span><span class="sy0">;</span>
						<span class="sy1">?&gt;</span>
&lt;p&gt;&lt;strong&gt;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'name'</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/strong&gt;
&lt;br/&gt;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'desc'</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/p&gt;
&lt;p&gt;&lt;input type=&quot;text&quot; style=&quot;height: 22px; font-size: 11px; width: <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$textLengs</span><span class="sy0">;</span><span class="sy1">?&gt;</span>px&quot; value=&quot;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$mcnOptions</span><span class="br0">&#91;</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span><span class="br0">&#93;</span> <span class="sy1">?&gt;</span>&quot; name=&quot;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span> <span class="sy1">?&gt;</span>&quot; id=&quot;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span> <span class="sy1">?&gt;</span>&quot; /&gt;&lt;/p&gt;
						<span class="kw2">&lt;?php</span>
						<span class="kw1">break</span><span class="sy0">;</span>
&nbsp;
					<span class="kw1">case</span> <span class="st_h">'radio'</span><span class="sy0">:</span>
						<span class="sy1">?&gt;</span>
&lt;p&gt;&lt;strong&gt;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'name'</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/strong&gt;
&lt;br/&gt;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'desc'</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/p&gt;&lt;p&gt;
						<span class="kw2">&lt;?php</span>
						<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'options'</span><span class="br0">&#93;</span> <span class="kw1">as</span> <span class="re0">$key</span> <span class="sy0">=&gt;</span> <span class="re0">$option</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="sy1">?&gt;</span>
&lt;label for=&quot;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st_h">'_'</span><span class="sy0">.</span><span class="re0">$key</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&quot;&gt;&lt;input type=&quot;radio&quot; id=&quot;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st_h">'_'</span><span class="sy0">.</span><span class="re0">$key</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&quot; name=&quot;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&quot; value=&quot;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$key</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&quot; <span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$mcnOptions</span><span class="br0">&#91;</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="re0">$key</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">echo</span> <span class="st_h">'checked=&quot;checked&quot;'</span><span class="sy0">;</span> <span class="br0">&#125;</span><span class="sy1">?&gt;</span> /&gt; <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$option</span><span class="sy0">;</span><span class="sy1">?&gt;</span>&lt;/label&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
						<span class="kw2">&lt;?php</span> <span class="br0">&#125;</span>
						<span class="sy1">?&gt;</span>
&lt;/p&gt;
						<span class="kw2">&lt;?php</span>
						<span class="kw1">break</span><span class="sy0">;</span>
&nbsp;
					<span class="kw1">case</span> <span class="st_h">'select'</span><span class="sy0">:</span>
						<span class="sy1">?&gt;</span>
&lt;p&gt;&lt;strong&gt;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'name'</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/strong&gt;
&lt;br/&gt;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'desc'</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/p&gt;
&lt;p&gt;&lt;select name=&quot;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&quot; id=&quot;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&quot;&gt;
						<span class="kw2">&lt;?php</span> <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'options'</span><span class="br0">&#93;</span> <span class="kw1">as</span> <span class="re0">$option</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="sy1">?&gt;</span>
&lt;option value=&quot;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$option</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&quot; <span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="re0">$mcnOptions</span><span class="br0">&#91;</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="st_h">'id'</span><span class="br0">&#93;</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="re0">$option</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">echo</span> <span class="st_h">' selected=&quot;selected&quot;'</span><span class="sy0">;</span> <span class="br0">&#125;</span><span class="sy1">?&gt;</span> &gt;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$option</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/option&gt;
						<span class="kw2">&lt;?php</span> <span class="br0">&#125;</span> <span class="sy1">?&gt;</span>
&lt;/select&gt;&lt;/p&gt;
						<span class="kw2">&lt;?php</span>
						<span class="kw1">break</span><span class="sy0">;</span>
&nbsp;
					<span class="kw1">default</span><span class="sy0">:</span>
&nbsp;
						<span class="kw1">break</span><span class="sy0">;</span>
				<span class="br0">&#125;</span>
			<span class="br0">&#125;</span>
			<span class="sy1">?&gt;</span>
&nbsp;
&lt;div class=&quot;submit&quot;&gt;
	&lt;input type=&quot;submit&quot; class='button-primary' name=&quot;update_multilingualCommentsNumberSettings&quot; value=&quot;<span class="kw2">&lt;?php</span> _e<span class="br0">&#40;</span><span class="st_h">'Update Settings'</span><span class="sy0">,</span> <span class="st_h">'multilingual-comments-number'</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>&quot; /&gt;
&lt;/div&gt;
&lt;/form&gt;
&lt;/div&gt;
      <span class="kw2">&lt;?php</span>
		<span class="br0">&#125;</span>
&nbsp;
		<span class="kw2">function</span> commentsNumber<span class="br0">&#40;</span> <span class="re0">$output</span><span class="sy0">,</span> <span class="re0">$number</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
			<span class="re0">$mcnOptions</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getOptions</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="re0">$text</span> <span class="sy0">=</span> <a href="http://www.php.net/strip_tags" onclick="pageTracker._trackPageview('/outgoing/www.php.net/strip_tags?referer=');"><span class="kw3">strip_tags</span></a><span class="br0">&#40;</span> <span class="re0">$output</span> <span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="re0">$filterNeeded</span> <span class="sy0">=</span> <span class="sy0">!</span><a href="http://www.php.net/ctype_digit" onclick="pageTracker._trackPageview('/outgoing/www.php.net/ctype_digit?referer=');"><span class="kw3">ctype_digit</span></a><span class="br0">&#40;</span> <span class="re0">$text</span> <span class="br0">&#41;</span><span class="sy0">;</span> 
&nbsp;
			<span class="kw1">if</span> <span class="br0">&#40;</span> <span class="re0">$filterNeeded</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
				<span class="kw1">switch</span> <span class="br0">&#40;</span> <span class="re0">$number</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
					<span class="kw1">case</span> <span class="nu0">0</span><span class="sy0">:</span> <span class="re0">$mcnOutput</span> <span class="sy0">=</span> <a href="http://www.php.net/str_replace" onclick="pageTracker._trackPageview('/outgoing/www.php.net/str_replace?referer=');"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span> <span class="re0">$text</span><span class="sy0">,</span> <span class="re0">$mcnOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringZero'</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re0">$output</span> <span class="br0">&#41;</span><span class="sy0">;</span>
					<span class="kw1">break</span><span class="sy0">;</span>
&nbsp;
					<span class="kw1">case</span> <span class="nu0">1</span><span class="sy0">:</span> <span class="re0">$mcnOutput</span> <span class="sy0">=</span> <a href="http://www.php.net/str_replace" onclick="pageTracker._trackPageview('/outgoing/www.php.net/str_replace?referer=');"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span> <span class="re0">$text</span><span class="sy0">,</span> <span class="re0">$mcnOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringOne'</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re0">$output</span> <span class="br0">&#41;</span><span class="sy0">;</span>
					<span class="kw1">break</span><span class="sy0">;</span>
&nbsp;
					<span class="kw1">default</span><span class="sy0">:</span> <span class="re0">$mcnOutput</span> <span class="sy0">=</span> <a href="http://www.php.net/str_replace" onclick="pageTracker._trackPageview('/outgoing/www.php.net/str_replace?referer=');"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span> <span class="re0">$text</span><span class="sy0">,</span> <a href="http://www.php.net/sprintf" onclick="pageTracker._trackPageview('/outgoing/www.php.net/sprintf?referer=');"><span class="kw3">sprintf</span></a><span class="br0">&#40;</span> __ngettext<span class="br0">&#40;</span> <span class="st0">&quot;<span class="es6">%d</span> Comment&quot;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es6">%d</span> Comments&quot;</span><span class="sy0">,</span> <span class="re0">$number</span><span class="sy0">,</span> <span class="st0">&quot;multilingual-comments-number&quot;</span> <span class="br0">&#41;</span><span class="sy0">,</span> <span class="re0">$number</span> <span class="br0">&#41;</span><span class="sy0">,</span> <span class="re0">$output</span> <span class="br0">&#41;</span><span class="sy0">;</span>
					<span class="kw1">break</span><span class="sy0">;</span>
				<span class="br0">&#125;</span>
				<span class="kw1">echo</span> <span class="re0">$mcnOutput</span><span class="sy0">;</span>
			<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="kw1">echo</span> <span class="re0">$output</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span>
<span class="br0">&#125;</span> 
&nbsp;
<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/class_exists" onclick="pageTracker._trackPageview('/outgoing/www.php.net/class_exists?referer=');"><span class="kw3">class_exists</span></a><span class="br0">&#40;</span><span class="st_h">'MultilingualCommentsNumber'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$minimus_comments_number</span> <span class="sy0">=</span> <span class="kw2">new</span> MultilingualCommentsNumber<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="sy1">?&gt;</span></pre></div></div>
<p>Итак, ООП. Создаём класс, естественно, предварительно проверив нет ли уже класса с таким же именем:</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Нажмите, чтобы показать или скрыть блок кода">Создание класса</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/class_exists" onclick="pageTracker._trackPageview('/outgoing/www.php.net/class_exists?referer=');"><span class="kw3">class_exists</span></a><span class="br0">&#40;</span><span class="st_h">'MultilingualCommentsNumber'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="kw2">class</span> MultilingualCommentsNumber <span class="br0">&#123;</span></pre></div></div>
<p>Затем создаем несколько переменных (в нашем случае две) и конструктор класса:</p>
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Нажмите, чтобы показать или скрыть блок кода">Конструктор</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="kw2">var</span> <span class="re0">$adminOptionsName</span> <span class="sy0">=</span> <span class="st0">&quot;MultilingualCommentsNumberAdminOptions&quot;</span><span class="sy0">;</span>
<span class="kw2">var</span> <span class="re0">$mcnInitOptions</span> <span class="sy0">=</span> <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'commentStringZero'</span> <span class="sy0">=&gt;</span> <span class="st_h">''</span><span class="sy0">,</span> <span class="st_h">'commentStringOne'</span> <span class="sy0">=&gt;</span> <span class="st_h">''</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw2">function</span> MultilingualCommentsNumber<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="co1">//load language</span>
	<span class="re0">$plugin_dir</span> <span class="sy0">=</span> <a href="http://www.php.net/basename" onclick="pageTracker._trackPageview('/outgoing/www.php.net/basename?referer=');"><span class="kw3">basename</span></a><span class="br0">&#40;</span> <a href="http://www.php.net/dirname" onclick="pageTracker._trackPageview('/outgoing/www.php.net/dirname?referer=');"><span class="kw3">dirname</span></a><span class="br0">&#40;</span> <span class="kw4">__FILE__</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/function_exists" onclick="pageTracker._trackPageview('/outgoing/www.php.net/function_exists?referer=');"><span class="kw3">function_exists</span></a><span class="br0">&#40;</span> <span class="st_h">'load_plugin_textdomain'</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span>
		load_plugin_textdomain<span class="br0">&#40;</span> <span class="st_h">'multilingual-comments-number'</span><span class="sy0">,</span> PLUGINDIR <span class="sy0">.</span> <span class="re0">$plugin_dir</span><span class="sy0">,</span> <span class="re0">$plugin_dir</span> <span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
	<span class="co1">//Actions and Filters</span>
	add_action<span class="br0">&#40;</span><span class="st_h">'admin_menu'</span><span class="sy0">,</span> <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="sy0">&amp;</span><span class="re0">$this</span><span class="sy0">,</span> <span class="st_h">'onAdminPage'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	add_action<span class="br0">&#40;</span><span class="st_h">'activate_multilingual-comments-number/multilingual-comments-number.php'</span><span class="sy0">,</span>  <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="sy0">&amp;</span><span class="re0">$this</span><span class="sy0">,</span> <span class="st_h">'onActivate'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	add_action<span class="br0">&#40;</span><span class="st_h">'deactivate_multilingual-comments-number/multilingual-comments-number.php'</span><span class="sy0">,</span>  <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="sy0">&amp;</span><span class="re0">$this</span><span class="sy0">,</span> <span class="st_h">'onDeactivate'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	add_filter<span class="br0">&#40;</span> <span class="st_h">'comments_number'</span><span class="sy0">,</span> <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span> <span class="sy0">&amp;</span><span class="re0">$this</span><span class="sy0">,</span> <span class="st_h">'commentsNumber'</span> <span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">8</span><span class="sy0">,</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Из двух созданных переменных, первая (<strong>$adminOptionsName</strong>) задаёт имя для массива параметров плагина, под которым он будет храниться в базе данных, а вторая (<strong>$mcnInitOptions</strong>) &#8211; массив значений параметров задаваемых по умолчанию. До недавнего времени программисты сохраняли параметры как отдельные переменные. Однако параметры лучше сохранять как массив данных. И вот почему: при хранении параметров по отдельности, получение каждого параметра требует отдельного SQL запроса к базе данных, что серьёзно увеличивает нагрузку как на базу данных, так и на процессор, кроме того, каждый параметр занимает одну запись в базе, увеличивая её размер. В случае хранения параметров в виде массива все параметры хранятся в одной записи базы данных и их получение требует одного SQL запроса.</p>
<p>Конструктор класса задан именем класса в стиле PHP4. В стиле PHP5 конструктор должен иметь зарезервированное имя <strong>_construct</strong>, однако, WordPress позиционируется как продукт для PHP4 и довольно много пользователей пользуются именно этой связкой. Если мы хотим чтобы нашим плагином пользовалось как можно больше блоггеров, необходимо придерживаться общих правил. Кроме того, нашему плагину не нужны расширенные возможности PHP5 и мы можем ими пренебречь.</p>
<div class='stb-info_box' ><span style="font-size: xx-small; line-height: 12px;">Конструктор &#8211; обработчик единственного события, а именно, создания объекта класса. Вызывается один раз оператором <strong>new</strong>. В конструктор класса помещаются действия, которые необходимо выполнить при создании объекта. Например, задать начальные значения переменным, назначить обработчики событий, загрузить TEXTDOMAIN.</span></div>
<p>Первым делом, в соответствии с рекомендациями разработчиков WordPress, загружаем TEXTDOMAIN, т.е. указываем WordPress, где и в каких файлах хранятся значения языково-зависимых строковых переменных.</p>
<p>Затем определяем обработчики событий: <strong>actions</strong> и <strong>filters</strong>. Определяются эти обработчики одинаково: <strong>actions</strong> с помощюю функции <a href="http://codex.wordpress.org/Function_Reference/add_action" target="_blank" onclick="pageTracker._trackPageview('/outgoing/codex.wordpress.org/Function_Reference/add_action?referer=');"><strong>add_action</strong></a> и <strong>filters</strong> с помощью функции <a href="http://codex.wordpress.org/Function_Reference/add_filter" target="_blank" onclick="pageTracker._trackPageview('/outgoing/codex.wordpress.org/Function_Reference/add_filter?referer=');"><strong>add_filter</strong></a>. Параметры обоих функций идентичны: &laquo;имя события&raquo;, &laquo;имя функции обработчика&raquo;, &laquo;приоритет выполнения&raquo;, &laquo;количество принимаемых параметров&raquo;.</p>
<p>Разница между этими обработчиками заключается в том, что <strong>actions</strong> определяют реакцию на системные события, а <strong>filters</strong> &#8211; на пользовательские. В нашем случае мы определяем реакцию на системное событие <strong>admin_menu</strong> (возникает при построении меню на административных страницах) и системные события возникающие при активации и деактивации нашего плагина.</p>
<p>О событии <strong>admin_menu</strong> мы поговорим в следующей части этой статьи. Сейчас же разберём события возникающие при активации и деактивации плагина. С деактивацией всё более или менее понятно:</p>
<div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Нажмите, чтобы показать или скрыть блок кода">Код onDeactivate</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="kw2">function</span> onDeactivate<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	delete_option<span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">adminOptionsName</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>При обработке этого события мы просто убираем мусор, ведь если пользователь деактивировал плагин, параметры плагина становятся мусором засоряющим базу данных.</p>
<p>Перейдём к обработке события <strong>activate</strong>.</p>
<div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Нажмите, чтобы показать или скрыть блок кода">Код onActivate</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="kw2">function</span> onActivate<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="re0">$mcnAdminOptions</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getOptions</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	update_option<span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">adminOptionsName</span><span class="sy0">,</span> <span class="re0">$mcnAdminOptions</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Обрабатывая событие <strong>activate</strong> мы записываем параметры в базу данных со значениями заданными по умолчанию. Для того чтобы получить заданные по умолчанию данные, мы вызываем функцию <strong>getOptions</strong>. На первый взгляд может показаться, что это довольно странный ход, что проще было бы записать в базу данных массив <strong>$mcnInitOptions</strong>, но не стоит торопиться с выводами. Для начала посмотрим код функции <strong>getOptions</strong>:</p>
<div id="wpshdo_9" class="wp-synhighlighter-outer"><div id="wpshdt_9" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_9"></a><a id="wpshat_9" class="wp-synhighlighter-title" href="#codesyntax_9"  onClick="javascript:wpsh_toggleBlock(9)" title="Нажмите, чтобы показать или скрыть блок кода">Код getOptions</a></td><td align="right"><a href="#codesyntax_9" onClick="javascript:wpsh_code(9)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_9" onClick="javascript:wpsh_print(9)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_9" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="kw2">function</span> getOptions<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="re0">$mcnAdminOptions</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">mcnInitOptions</span><span class="sy0">;</span>
	<span class="re0">$mcnOptions</span> <span class="sy0">=</span> get_option<span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">adminOptionsName</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty" onclick="pageTracker._trackPageview('/outgoing/www.php.net/empty?referer=');"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$mcnOptions</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$mcnOptions</span> <span class="kw1">as</span> <span class="re0">$key</span> <span class="sy0">=&gt;</span> <span class="re0">$option</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
			<span class="re0">$mcnAdminOptions</span><span class="br0">&#91;</span><span class="re0">$key</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$option</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span>
	<span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$mcnAdminOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringZero'</span><span class="br0">&#93;</span> <span class="sy0">===</span> <span class="st_h">''</span><span class="br0">&#41;</span>
		<span class="re0">$mcnAdminOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringZero'</span><span class="br0">&#93;</span> <span class="sy0">=</span> __<span class="br0">&#40;</span> <span class="st_h">'There are no comments'</span><span class="sy0">,</span> <span class="st_h">'multilingual-comments-number'</span> <span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$mcnAdminOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringOne'</span><span class="br0">&#93;</span> <span class="sy0">===</span> <span class="st_h">''</span><span class="br0">&#41;</span>
		<span class="re0">$mcnAdminOptions</span><span class="br0">&#91;</span><span class="st_h">'commentStringOne'</span><span class="br0">&#93;</span> <span class="sy0">=</span> __<span class="br0">&#40;</span> <span class="st_h">'One Comment'</span><span class="sy0">,</span> <span class="st_h">'multilingual-comments-number'</span> <span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="kw1">return</span> <span class="re0">$mcnAdminOptions</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Рассмотрим что делает эта функция.</p>
<p>Первым делом мы берём параметры заданные по умолчанию, затем загружаем параметры из базы данных и, если таковые имеются, записываем с помощью цикла в переменную с заданными по умолчанию параметрами. Затем проверяем по условию некоторые параметры (в данном случае все) и, если условие выполнено (в данном случае пустая строка), заменяем значение выбранных параметров на локализованную версию значения параметра по умолчанию. Другими словами, данная функция выполняет следующие задачи:</p>
<ul>
<li>первое и основное &#8211; получение массива сохранённых параметров из базы данных</li>
<li>второе &#8211; получение массива параметров заданных по умолчанию с учётом текущей локализации плагина при его первичной активации</li>
<li>третье &#8211; получение массива сохранённых параметров с расширением числа параметров (upgrade) при реактивации</li>
</ul>
<p>Поясню третий пункт. Любой плагин развивается функционально, а это может потребовать увеличения числа сохраняемых параметров. При автоматическом upgrade и уж тем более при ручном, событие <strong>deactivate</strong> не возникает (для того, чтобы параметры пользователя не были потеряны), поэтому, в случае увеличения числа параметров, мы не можем просто загрузить старые параметры, так как это приведёт к ошибке исполнения плагина. Загрузка параметров заданных по умолчанию приведёт к потере уже проведённых пользователем настроек. Именно поэтому приходится использовать компромисный вариант, который будет работать при любых условиях и именно поэтому я использую функцию <strong>getOptions</strong> при обработке события <strong>activate</strong>.</p>
<p>Завершая разговор об <strong>actions</strong>, хотелось бы обратить ваше внимание на весьма важную деталь: в качестве первого параметра функции <strong>add_action</strong> добавляющей обработчики событий <strong>activate</strong> и <strong>deactivate</strong> используется название событий с суффиксом, в качестве которого выступает имя папки и название основного файла активируемого/деактивируемого плагина.</p>
<p>Пожалуй на сегодня достаточно. В следующей статье мы рассмотрим фильтры и основную функцию плагина (ради которой и &laquo;городился огород&raquo;), а так же подключение страницы параметров плагина и её автоматическую генерацию.</p>
<p>Продолжение следует &#8230;</p>
<p style='text-align:left'>&copy; 2010, <a href='http://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>

<img src="http://blogcoding.ru/?ak_action=api_record_view&id=1882&type=feed" alt="" />

<p>Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=1886' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Часть 2.'>Анатомия плагина WordPress. Часть 2.</a></li>
<li><a href='http://blogcoding.ru/?p=1870' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Введение.'>Анатомия плагина WordPress. Введение.</a></li>
<li><a href='http://blogcoding.ru/?p=531' rel='bookmark' title='Permanent Link: Ещё один WordPress антиспам плагин (YAWASP)'>Ещё один WordPress антиспам плагин (YAWASP)</a></li>
</ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/bbR204_4lu494qiWujw_jfIqD9E/0/da"><img src="http://feedads.g.doubleclick.net/~a/bbR204_4lu494qiWujw_jfIqD9E/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bbR204_4lu494qiWujw_jfIqD9E/1/da"><img src="http://feedads.g.doubleclick.net/~a/bbR204_4lu494qiWujw_jfIqD9E/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/minimus/~4/-ikcB7GWEG8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogcoding.ru/?feed=rss2&amp;p=1882</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blogcoding.ru/?p=1882</feedburner:origLink></item>
		<item>
		<title>Анатомия плагина WordPress. Введение.</title>
		<link>http://feedproxy.google.com/~r/minimus/~3/JJZKUU_oY2U/</link>
		<comments>http://blogcoding.ru/?p=1870#comments</comments>
		<pubDate>Sat, 29 May 2010 12:44:54 +0000</pubDate>
		<dc:creator>minimus</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://blogcoding.ru/?p=1870</guid>
		<description><![CDATA[Довольно часто, особенно после выхода в свет Wordpress версии 2.7, встречаю в сети сетования на то, что глючит тот или иной плагин, что в прежних версиях (2.6 -) всё работало, а теперь ... Во всём виноваты разработчики Wordpress. И да, и нет.


Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=1882' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Часть 1.'>Анатомия плагина WordPress. Часть 1.</a></li>
<li><a href='http://blogcoding.ru/?p=1886' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Часть 2.'>Анатомия плагина WordPress. Часть 2.</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<p><img class="alignleft" style="margin: 5px;" src="http://blogcoding.ru/images/posts/wordpress-plugin.png" alt="WP" width="150" height="88" />К моему великому сожалению, мой второй блог по программированию в WordPress &laquo;накрылся медным тазом&raquo; ©, в основном, по техническим причинам. Те немногие читатели, которые пытались его читать, практически всегда сталкивались с сообщением &laquo;Сайт блокирован на 10 минут&raquo;. Не думаю, что это кому-то может нравиться. Поэтому я решил перенести статьи с блога <strong>SimpleLib.ru</strong> на этот блог. Надеюсь, что блог <strong>SimpleLib.ru</strong> через некоторое время возродится, а пока, читайте статьи о программировании в WordPress на этом блоге.<br />
<span id="more-1870"></span><br />
Довольно часто, особенно после выхода в свет WordPress версии 2.7, встречаю в сети сетования на то, что глючит тот или иной плагин, что в прежних версиях (2.6 -) всё работало, а теперь &#8230; Во всём виноваты разработчики WordPress. И да, и нет. Всё дело в том, что в версии 2.7+ изменилась политика вызова скриптов, да и сама политика построения плагинов претерпела некоторые изменения (поддержка плагинов старого типа осталась), что приводит к конфликтам между плагинами старого и нового типа. В частности, авторы плагинов <strong>2.6-</strong> использовали прямые вызовы таблиц стилей, скриптов и фреймворков, в <strong>2.7+</strong> предполагается предварительная регистрация в системе с помощью методов <strong>wp_register_script</strong> и <strong>wp_register_style</strong> и последующий вызов с помощью методов <strong>wp_enqueue_script</strong> и <strong>wp_enqueue_style</strong>. Изменились и предпочтительные <strong>actions</strong> для инициализации прочих вызовов. Во всём этом стоит разобраться, если Вы хотите написать современный, работающий без ошибок, плагин.</p>
<p>С чего начать? Разумеется с идеи! Со своей или чужой (Вами усовершенствованной), это неважно, лишь бы идея была. Без идеи не будет плагина.</p>
<p>Что дальше? План! Нам нужен план &#8230; Что мы собираемся делать? Плагин-обёртку (shell) для стороннего или своего скрипта PHP или javascript, полностью WordPress-плагин, комбинацию того и другого, или плагин работающий с БД? От этого зависит что и как мы будем использовать &#8211; только ресурсы WordPress или нам понадобится что-то ещё &#8230;</p>
<p>Планировать следует и то, каким методом программирования мы будем пользоваться: процедурным или ООП. Применительно к WordPress у обоих методов есть свои достоинства и недостатки &#8230;</p>
<p>Не стоит забывать и о <a href="http://codex.wordpress.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/codex.wordpress.org?referer=');">документации</a>. Половина, если не больше, успеха зависит от умения пользоваться документацией.</p>
<p>Ну вот, для введения, пожалуй, достаточно &#8230; В последующих статьях я постараюсь раскрыть, поставленные мною же, вопросы.</p>
<p>Продолжение следует &#8230;</p>
<p style='text-align:left'>&copy; 2010, <a href='http://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>

<img src="http://blogcoding.ru/?ak_action=api_record_view&id=1870&type=feed" alt="" />

<p>Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=1882' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Часть 1.'>Анатомия плагина WordPress. Часть 1.</a></li>
<li><a href='http://blogcoding.ru/?p=1886' rel='bookmark' title='Permanent Link: Анатомия плагина WordPress. Часть 2.'>Анатомия плагина WordPress. Часть 2.</a></li>
</ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/isM7wUujwIvRZMGtthfut4_HyBk/0/da"><img src="http://feedads.g.doubleclick.net/~a/isM7wUujwIvRZMGtthfut4_HyBk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/isM7wUujwIvRZMGtthfut4_HyBk/1/da"><img src="http://feedads.g.doubleclick.net/~a/isM7wUujwIvRZMGtthfut4_HyBk/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/minimus/~4/JJZKUU_oY2U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogcoding.ru/?feed=rss2&amp;p=1870</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blogcoding.ru/?p=1870</feedburner:origLink></item>
		<item>
		<title>Real-time статистика блога</title>
		<link>http://feedproxy.google.com/~r/minimus/~3/E5QeL1DtZrA/</link>
		<comments>http://blogcoding.ru/?p=1857#comments</comments>
		<pubDate>Tue, 25 May 2010 20:17:43 +0000</pubDate>
		<dc:creator>minimus</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Блоггинг]]></category>
		<category><![CDATA[блог]]></category>
		<category><![CDATA[статистика]]></category>

		<guid isPermaLink="false">http://blogcoding.ru/?p=1857</guid>
		<description><![CDATA[Конечно, статистика - магия больших чисел, я с этим абсолютно согласен. Но иногда хочется посмотреть, что же происходит на моём блоге прямо сейчас, и без перезагрузки страниц ...


Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=240' rel='bookmark' title='Permanent Link: OnLine статистика в реальном времени'>OnLine статистика в реальном времени</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<p><img class="alignleft" style="margin: 2px 5px;" src="http://blogcoding.ru/images/posts/pie.png" alt="Статистика" width="128" height="128" />Конечно, статистика &#8211; магия больших чисел, я с этим абсолютно согласен. Но иногда хочется посмотреть, что же происходит на моём блоге прямо сейчас, и без перезагрузки страниц &#8230;</p>
<p>Разумеется, спорить не стану, сегодня существует достаточно статистических ресурсов на любой вкус, способных удовлетворить любые потребности вебмастера. Тем не менее, смею предположить, что не все знают о ресурсе под названием <a href="http://www.woopra.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.woopra.com/?referer=');">Woopra</a>, предлагающем нечто большее, чем самый навороченный статистический сервер. Кроме обычного статистического набора информации для вашего ресурса, <strong>Woopra</strong> предлагает локальный клиент (Windows, Mac, Linux), который можно установить на своём компьютере и отслеживать работу своего блога в реальном времени!<br />
<span id="more-1857"></span><br />
<p style="text-align:center"><a href='http://blogcoding.ru/wp-content/sv-galleries/woopra.jpg' class='floatbox' rev='group: G3-3654 caption:`Консоль ресурса` caption2:`Woopra`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/woopra-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/woopra-live.jpg' class='floatbox' rev='group: G3-3654 caption:`Real-Time статистика` caption2:`Woopra`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/woopra-live-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/woopra-analitics.jpg' class='floatbox' rev='group: G3-3654 caption:`Анализ данных` caption2:`Woopra`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/woopra-analitics-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a><a href='http://blogcoding.ru/wp-content/sv-galleries/woopra-calendar.jpg' class='floatbox' rev='group: G3-3654 caption:`Календарь` caption2:`Woopra`' ><img src="http://blogcoding.ru/wp-content/sv-galleries/woopra-calendar-thumb.jpg" style="padding: 0px; margin: 5px; border: 1px solid #000000" /></a></p></p>
<p>Зарегистрироваться в Woopra так же несложно как и в прочих ресурсах подобного рода. Когда я регистрировался около года назад, требовалось ждать подтверждения около месяца, сейчас регистрация происходит немедленно. Однако стоит помнить, что кроме бесплатного аккаунта существуют ещё и <a href="http://www.woopra.com/plans/" onclick="pageTracker._trackPageview('/outgoing/www.woopra.com/plans/?referer=');">платные</a> (без рекламы и с меньшими ограничениями).</p>
<p>Зарегистрировавшись, добавьте свой ресурс или ресурсы в<strong> members area</strong> и приступайте к установке.</p>
<p>Для <strong>Blogger-блога</strong> придётся вставить полученный код скрипта в шаблон непосредственно перед завершающим тегом секции <strong>body</strong>, т.е. в самом конце текста шаблона.</p>
<p>Для WordPress-блога стоит установить плагин <a href="http://wordpress.org/extend/plugins/woopra/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wordpress.org/extend/plugins/woopra/?referer=');">Woopra Analytics</a> (внимание! тема должна использовать <strong>wp-footer</strong>). После активации плагина, введите свой <strong>Woopra API Key</strong> (доступен в <strong>members area</strong>) и произведите настройки сообразно Вашим запросам.</p>
<p>На сайте Woopra Вы сможете найти рекомендации по установке кода скрипта для большинства популярных CMS, форумов и других систем.</p>
<p>Только после установки кода скрипта на сайте можно устанавливать <strong>Woopra клиент</strong> (рекомендация Woopra). Скачайте и установите &#8230; <img src='http://blogcoding.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Если Вы выходите в интернет по лимитированному траффику (Ваш траффик, а не траффик Вашего блога), не держите клиент постоянно включенным, т.к. эта программа периодически и довольно часто опрашивает сервер статистики и, соответственно, потребляет Ваш траффик.</p>
<p><strong>Ограничения бесплатного аккаунта</strong>:</p>
<ul>
<li>Показ рекламных объявлений в клиенте</li>
<li>Учёт не более 30 000 показов страниц ресурса в месяц</li>
</ul>
<p><strong>P.S.</strong> Именно с помощью клиента Woopra я засёк взлом своего блога. Меня удивило внезапное нашествие турок с одинаковых компьютеров &#8230; В общем, вовремя спохватился благодаря этому клиенту.</p>
<p style='text-align:left'>&copy; 2010, <a href='http://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>

<div><h3>Постовой</h3><ul><li><strong>Cuberto</strong>: <a href="http://cuberto.ru/" onclick="pageTracker._trackPageview('/outgoing/cuberto.ru/?referer=');">дизайн интерфейса</a>.</li><li><a href="http://mango-city.by/" onclick="pageTracker._trackPageview('/outgoing/mango-city.by/?referer=');">Создание, разработка сайта</a> и его продвижение!</li></ul></div>
 
<img src="http://blogcoding.ru/?ak_action=api_record_view&id=1857&type=feed" alt="" />

<p>Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=240' rel='bookmark' title='Permanent Link: OnLine статистика в реальном времени'>OnLine статистика в реальном времени</a></li>
</ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/cxUKjVsdDOK-b4xwBzQVSytO8ic/0/da"><img src="http://feedads.g.doubleclick.net/~a/cxUKjVsdDOK-b4xwBzQVSytO8ic/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/cxUKjVsdDOK-b4xwBzQVSytO8ic/1/da"><img src="http://feedads.g.doubleclick.net/~a/cxUKjVsdDOK-b4xwBzQVSytO8ic/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/minimus/~4/E5QeL1DtZrA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogcoding.ru/?feed=rss2&amp;p=1857</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blogcoding.ru/?p=1857</feedburner:origLink></item>
		<item>
		<title>Мой блог взломали …</title>
		<link>http://feedproxy.google.com/~r/minimus/~3/hYkRE1rPVNI/</link>
		<comments>http://blogcoding.ru/?p=1840#comments</comments>
		<pubDate>Sun, 23 May 2010 09:37:39 +0000</pubDate>
		<dc:creator>minimus</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[блог]]></category>
		<category><![CDATA[хакеры]]></category>

		<guid isPermaLink="false">http://blogcoding.ru/?p=1840</guid>
		<description><![CDATA[Вчера (22.05.2010), приблизительно в 18:30 по среднеевропейскому времени, мой блог взломали ...


Нет похожих статей.]]></description>
			<content:encoded><![CDATA[
<p><img class="alignleft" style="margin: 2px 5px;" src="http://blogcoding.ru/images/posts/hack.jpg" alt="Турецкие хуцкеры" width="200" height="148" />Вчера (22.05.2010), приблизительно в 18:30 по среднеевропейскому времени, мой блог взломали. Взлом осуществили турецкие хуцкеры. Работали с двух &laquo;компов&raquo;, компы были практически идентичные, за исключением того, что один работал из под <strong>Windows XP</strong>, второй из под <strong>Windows 7</strong>. Жаль, не успел записать их IP.</p>
<p>Ублюдки изменили файлы <strong>header.php</strong> и <strong>index.php</strong> активной темы, а так же перехватили управление блогом, изменив <strong>административный пароль</strong> и <strong>e-mail admin</strong>&#8216;а. Восстановить работоспособность блога удалось достаточно быстро, а с восстановлением управления пришлось немного повозиться, т.к. я этой темой никогда ранее не занимался и этим вопросом никогда не интересовался. Тем не менее &#8230;<br />
<span id="more-1840"></span></p>
<h4>Как бороться</h4>
<p>Если с Вами случится нечто подобное, не стоит &laquo;посыпать голову пеплом&raquo; и &laquo;биться в истерике&raquo;. Немедленно принимайтесь за работу:</p>
<ul>
<li>Любым доступным Вам <strong>клиентом FTP</strong>, или <strong>on-line менеджером файлов</strong> проверьте даты создания всех Ваших файлов на сервере. Если даты совпадают со временем взлома, замените эти файлы на файлы Вашей локальной копии. Разумеется, стоит периодически сохранять файлы Вашего блога на локальном компьютере.</li>
<li>Если управление блогом утеряно и на запрос пароля WordPress сообщает, что пользователя с таким e-mail нет, воспользуйтесь <strong>phpMyAdmin</strong> или каким либо другим инструментом (я пользуюсь <a href="http://www.devart.com/ru/dbforge/mysql/studio/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.devart.com/ru/dbforge/mysql/studio/?referer=');"><strong>Devart dbForge Studio for MySQL</strong></a>). С помощью этого инструмента откройте таблицу <strong>wp_users</strong> базы данных Вашего блога и измените поле <strong>user_email</strong> на Ваш <strong>e-mail</strong> и сохраните данные. После этого на логин-странице блога запросите новый пароль (ссылка &laquo;потеряли пароль&raquo;). После получения нового сгенерированного пароля обязательно поменяйте пароль на новый!</li>
</ul>
<h4>Как предохраняться</h4>
<p>&laquo;Стопроцентную гарантию даёт только страховой полис&raquo; ©, но это не значит, что бороться не надо. Очень даже надо!</p>
<p>Методы борьбы:</p>
<ul>
<li>Периодически сохраняйте базу данных и файлы блога на локальном компьютере (backup)</li>
<li>Не пренебрегайте длинными, бессмысленными паролями. Чаще всего горе-хуцкеры пользуются методом подбора.</li>
<li>Установите какой-либо плагин, повышающий безопасность Вашего блога, выбор есть. Очень интересный плагин <a href="http://wordpress.org/extend/plugins/wp-secure-by-sitesecuritymonitorcom/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wordpress.org/extend/plugins/wp-secure-by-sitesecuritymonitorcom/?referer=');"><strong>wp secure</strong></a>. Установите его, если выходите в сеть со статическим IP. В противном случае (динамический IP) несколько важных функций защиты Вы не сможете задействовать.</li>
</ul>
<p>Обсудить эту проблему можно здесь (в комментариях) или на <a href="http://forum.blogcoding.ru/viewtopic.php?f=3&amp;t=7" onclick="pageTracker._trackPageview('/outgoing/forum.blogcoding.ru/viewtopic.php?f=3_amp_t=7&amp;referer=');">форуме</a> &#8230;</p>
<p>Вот, пожалуй, и всё. Будьте бдительны! <img src='http://blogcoding.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style='text-align:left'>&copy; 2010, <a href='http://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>

<div><h3>Постовой</h3><ul><li>Всё надоело? Отдохните, сыграйте в покер. Играйте и выигрывайте на <a href="http://www.holdemworld.ru/regsteps/120-partypoker-regsteps.html" onclick="pageTracker._trackPageview('/outgoing/www.holdemworld.ru/regsteps/120-partypoker-regsteps.html?referer=');">пати покер</a></li><li><a href="http://ezhelev.com/" onclick="pageTracker._trackPageview('/outgoing/ezhelev.com/?referer=');">Блог</a> человека работающего в интернете. Полезная информация.</li><li><a href="http://artimagine.com/" onclick="pageTracker._trackPageview('/outgoing/artimagine.com/?referer=');">Блог об интернет разработках</a> Александра Макушина - разработки, социальные сети, современный дизайн и кино.</li></ul></div>
 
<img src="http://blogcoding.ru/?ak_action=api_record_view&id=1840&type=feed" alt="" />

<p>Нет похожих статей.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/zbEDAPeiBJIXyCHcznDgdXXCz6U/0/da"><img src="http://feedads.g.doubleclick.net/~a/zbEDAPeiBJIXyCHcznDgdXXCz6U/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/zbEDAPeiBJIXyCHcznDgdXXCz6U/1/da"><img src="http://feedads.g.doubleclick.net/~a/zbEDAPeiBJIXyCHcznDgdXXCz6U/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/minimus/~4/hYkRE1rPVNI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogcoding.ru/?feed=rss2&amp;p=1840</wfw:commentRss>
		<slash:comments>15</slash:comments>
		<feedburner:origLink>http://blogcoding.ru/?p=1840</feedburner:origLink></item>
		<item>
		<title>Карусель в блоге. Часть 2.</title>
		<link>http://feedproxy.google.com/~r/minimus/~3/-_8sPJ8vSTM/</link>
		<comments>http://blogcoding.ru/?p=1715#comments</comments>
		<pubDate>Sun, 16 May 2010 14:28:25 +0000</pubDate>
		<dc:creator>minimus</dc:creator>
				<category><![CDATA[Блоггинг]]></category>
		<category><![CDATA[Виджеты (Blogger)]]></category>
		<category><![CDATA[Плагины]]></category>
		<category><![CDATA[Blogger]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[виджет]]></category>
		<category><![CDATA[карусель]]></category>
		<category><![CDATA[коды]]></category>
		<category><![CDATA[плагин]]></category>

		<guid isPermaLink="false">http://blogcoding.ru/?p=1715</guid>
		<description><![CDATA[В прошлой статье мы рассматривали карусель на базе Mootools. Пришло время познакомиться с вариантом карусели, использующем jQuery.


Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=1615' rel='bookmark' title='Permanent Link: Карусель в блоге. Часть 1.'>Карусель в блоге. Часть 1.</a></li>
<li><a href='http://blogcoding.ru/?p=233' rel='bookmark' title='Permanent Link: Подсветка кодов в блоге. Часть вторая.'>Подсветка кодов в блоге. Часть вторая.</a></li>
<li><a href='http://blogcoding.ru/?p=1788' rel='bookmark' title='Permanent Link: Просмотр объектов мультимедиа в Blogger-блоге'>Просмотр объектов мультимедиа в Blogger-блоге</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<p><img class="alignleft" style="margin: 5px;" src="http://blogcoding.ru/images/posts/carusel-post.jpg" alt="Карусель" width="240" height="120" />В <a href="http://blogcoding.ru/?p=1615">прошлой статье</a> мы рассматривали карусель на базе Mootools. Пришло время познакомиться с вариантом карусели, использующем jQuery. Основой этого варианта карусели является jQuery плагин <a href="http://jquery.malsup.com/cycle/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/jquery.malsup.com/cycle/?referer=');">Cycle</a>. Поскольку фреймворк jQuery является самым дружественным по отношению к другим фреймворкам, я предпочитаю именно этот вариант. Его использование страхует от неприятных сюрпризов при использовании в блоге других кодов, базирующихся на Mootools или Prototypes, что особенно актуально в WordPress-блогах. Мой блог использует именно этот вариант карусели, в чем Вы можете убедиться заглянув на <a href="http://blogcoding.ru" target="_blank">главную страницу блога</a>.<br />
<span id="more-1715"></span><br />
Перейдём непосредственно к реализации &#8230;</p>
<h4>WordPress</h4>
<p>В WordPress-блоге необходимо произвести некоторые манипуляции &#8230;</p>
<p>Поместите файлы <code>con_featured_post.php</code> и <code>thumb.php</code> в корень папки, активной темы блога. Файл <code>jquery.cycle.all.min.js</code> в папку <code>js</code> активной темы. Так же необходимо создать папку <code>cache</code> с правами доступа <strong>755</strong> или <strong>777</strong> в корне папки темы.</p>
<p>В файл темы <code>functions.php</code> поместите следующий код (в конец файла):</p>
<div id="wpshdo_10" class="wp-synhighlighter-outer"><div id="wpshdt_10" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_10"></a><a id="wpshat_10" class="wp-synhighlighter-title" href="#codesyntax_10"  onClick="javascript:wpsh_toggleBlock(10)" title="Нажмите, чтобы показать или скрыть блок кода">Код в functions.php</a></td><td align="right"><a href="#codesyntax_10" onClick="javascript:wpsh_code(10)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_10" onClick="javascript:wpsh_print(10)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_10" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="kw2">function</span> themeHeaderScripts<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
  <span class="re0">$themeUrl</span> <span class="sy0">=</span> get_bloginfo<span class="br0">&#40;</span>template_uri<span class="br0">&#41;</span><span class="sy0">;</span>
  wp_enqueue_script<span class="br0">&#40;</span><span class="st_h">'jquery'</span><span class="br0">&#41;</span><span class="sy0">;</span>
  wp_enqueue_script<span class="br0">&#40;</span><span class="st_h">'jqCycle'</span><span class="sy0">,</span> <span class="re0">$themeUrl</span><span class="sy0">.</span><span class="st_h">'/js/jquery.cycle.all.min.js'</span><span class="sy0">,</span> <a href="http://www.php.net/array" onclick="pageTracker._trackPageview('/outgoing/www.php.net/array?referer=');"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'jquery'</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="st_h">'2.63'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
add_action<span class="br0">&#40;</span><span class="st_h">'template_redirect'</span><span class="sy0">,</span> <span class="st_h">'themeHeaderScripts'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>
<p>В файл <code>styles.css</code> (в любом месте) вставьте следующий код:</p>
<div id="wpshdo_11" class="wp-synhighlighter-outer"><div id="wpshdt_11" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_11"></a><a id="wpshat_11" class="wp-synhighlighter-title" href="#codesyntax_11"  onClick="javascript:wpsh_toggleBlock(11)" title="Нажмите, чтобы показать или скрыть блок кода">Код в styles.css</a></td><td align="right"><a href="#codesyntax_11" onClick="javascript:wpsh_code(11)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_11" onClick="javascript:wpsh_print(11)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_11" class="wp-synhighlighter-inner" style="display: block;"><pre class="css"><span class="coMULTI">/************************************************
*	Content Gallery 		    	            *
************************************************/</span>
&nbsp;
<span class="re0">#featured-post-wrap</span> <span class="br0">&#123;</span>
<span class="kw1">background-color</span><span class="sy0">:</span><span class="re0">#212221</span><span class="sy0">;</span>
<span class="kw1">margin</span><span class="sy0">:</span><span class="nu0">0</span> <span class="kw2">auto</span><span class="sy0">;</span>
<span class="kw1">padding</span><span class="sy0">:</span><span class="re3">0px</span> <span class="nu0">0</span> <span class="re3">9px</span><span class="sy0">;</span>
<span class="kw1">width</span><span class="sy0">:</span><span class="re3">950px</span><span class="sy0">;</span>
<span class="kw1">height</span><span class="sy0">:</span><span class="re3">267px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#featured-post</span><span class="br0">&#123;</span>
<span class="kw1">height</span><span class="sy0">:</span><span class="re3">272px</span><span class="sy0">;</span>
<span class="kw1">margin</span><span class="sy0">:</span><span class="re3">0px</span> <span class="nu0">0</span> <span class="re3">0px</span> <span class="re3">5px</span><span class="sy0">;</span>
<span class="kw1">overflow</span><span class="sy0">:</span><span class="kw2">hidden</span><span class="sy0">;</span>
<span class="kw1">position</span><span class="sy0">:</span><span class="kw2">relative</span><span class="sy0">;</span>
<span class="kw1">width</span><span class="sy0">:</span><span class="re3">580px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
.featured-post-item<span class="br0">&#123;</span>
<span class="kw1">background</span><span class="sy0">:</span><span class="re0">#171717</span> <span class="kw2">none</span> <span class="kw2">repeat</span> <span class="kw2">scroll</span> <span class="nu0">0</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw1">border</span><span class="sy0">:</span><span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#2B2B2B</span><span class="sy0">;</span>
<span class="kw1">color</span><span class="sy0">:</span><span class="re0">#555555</span><span class="sy0">;</span>
<span class="kw1">float</span><span class="sy0">:</span><span class="kw1">left</span><span class="sy0">;</span>
<span class="kw1">height</span><span class="sy0">:</span><span class="re3">252px</span><span class="sy0">;</span>
<span class="kw1">margin-top</span><span class="sy0">:</span><span class="re3">7px</span><span class="sy0">;</span>
<span class="kw1">overflow</span><span class="sy0">:</span><span class="kw2">hidden</span><span class="sy0">;</span>
<span class="kw1">padding</span><span class="sy0">:</span><span class="re3">5px</span><span class="sy0">;</span>
<span class="kw1">position</span><span class="sy0">:</span><span class="kw2">absolute</span><span class="sy0">;</span>
<span class="kw1">width</span><span class="sy0">:</span><span class="re3">568px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.featured-post-item</span> .post<span class="br0">&#123;</span>
<span class="kw1">background</span><span class="sy0">:</span><span class="kw2">transparent</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="co2">images/fe_bg.png</span><span class="br0">&#41;</span> <span class="kw2">repeat</span> <span class="kw2">scroll</span> <span class="nu0">0</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw1">height</span><span class="sy0">:</span><span class="re3">86px</span><span class="sy0">;</span>
<span class="kw1">position</span><span class="sy0">:</span><span class="kw2">absolute</span><span class="sy0">;</span>
<span class="kw1">top</span><span class="sy0">:</span><span class="re3">170px</span><span class="sy0">;</span>
<span class="kw1">width</span><span class="sy0">:</span><span class="re3">568px</span><span class="sy0">;</span>
<span class="kw1">z-index</span><span class="sy0">:</span><span class="nu0">100</span><span class="sy0">;</span>
<span class="kw1">overflow</span><span class="sy0">:</span><span class="kw2">hidden</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.featured-post-item</span> <span class="re1">.post</span><span class="re2">:hover </span>a<span class="sy0">,</span><span class="re1">.featured-post-item</span>  <span class="re1">.post</span><span class="re2">:hover </span>a<span class="re2">:hover</span><span class="br0">&#123;</span>
<span class="kw1">color</span><span class="sy0">:</span><span class="re0">#fff</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.featured-post-item</span> <span class="re1">.post</span><span class="re2">:hover</span><span class="br0">&#123;</span>
<span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="co2">images/fe_bg_h.png</span><span class="br0">&#41;</span> <span class="kw2">repeat</span><span class="sy0">;</span>
<span class="kw1">color</span><span class="sy0">:</span><span class="re0">#FFF</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.featured-post-item</span> <span class="re1">.post</span> h2<span class="br0">&#123;</span>
<span class="kw1">margin</span><span class="sy0">:</span><span class="re3">0px</span> <span class="re3">0px</span> <span class="re3">0px</span> <span class="re3">0px</span><span class="sy0">;</span>
<span class="kw1">padding</span><span class="sy0">:</span><span class="re3">5px</span> <span class="re3">5px</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw1">font-weight</span><span class="sy0">:</span><span class="kw2">bold</span><span class="sy0">;</span>
<span class="kw1">font-family</span><span class="sy0">:</span> <span class="st0">&quot;Myriad Pro&quot;</span><span class="sy0">,</span>verdana<span class="sy0">,</span> helvetica<span class="sy0">,</span>arial<span class="sy0">;</span>
<span class="kw1">border-bottom</span><span class="sy0">:</span><span class="kw2">none</span>!important<span class="sy0">;</span>
<span class="kw1">font-size</span><span class="sy0">:</span><span class="re3">1.2em</span>!important<span class="sy0">;</span>
<span class="kw1">line-height</span><span class="sy0">:</span><span class="re3">19px</span>!important<span class="sy0">;</span>
<span class="kw1">padding-bottom</span><span class="sy0">:</span><span class="re3">0px</span>!important<span class="sy0">;</span>
<span class="kw1">padding-top</span><span class="sy0">:</span><span class="re3">5px</span>!important<span class="sy0">;</span>
&nbsp;
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.featured-post-item</span> <span class="re1">.post</span> h2 a<span class="re2">:link</span><span class="sy0">,</span><span class="re1">.featured-post-item</span> <span class="re1">.post</span> h2 a<span class="re2">:visited</span><span class="br0">&#123;</span>
<span class="kw1">font-size</span><span class="sy0">:</span><span class="re3">1.2em</span> !important<span class="sy0">;</span>
<span class="kw1">line-height</span><span class="sy0">:</span><span class="re3">19px</span> !important<span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.featured-post-item</span> <span class="re1">.post</span> p<span class="br0">&#123;</span>
<span class="kw1">margin</span><span class="sy0">:</span><span class="re3">0px</span> <span class="re3">0px</span> <span class="re3">0px</span> <span class="re3">0px</span><span class="sy0">;</span>
<span class="kw1">padding</span><span class="sy0">:</span><span class="re3">2px</span> <span class="re3">6px</span> <span class="re3">5px</span><span class="sy0">;</span>
<span class="kw1">line-height</span><span class="sy0">:</span><span class="re3">16px</span><span class="sy0">;</span>
<span class="kw1">overflow</span><span class="sy0">:</span><span class="kw2">hidden</span><span class="sy0">;</span>
<span class="kw1">font-family</span><span class="sy0">:</span> <span class="st0">&quot;Myriad Pro&quot;</span><span class="sy0">,</span> verdana<span class="sy0">,</span> tahoma<span class="sy0">,</span> <span class="kw2">sans-serif</span><span class="sy0">;</span>
<span class="br0">&#125;</span>	
&nbsp;
<span class="re1">.featured-post-item</span> <span class="re1">.post</span> a<span class="br0">&#123;</span>
<span class="kw1">color</span><span class="sy0">:</span><span class="re0">#B2B2B2</span><span class="sy0">;</span>
<span class="kw1">font-size</span><span class="sy0">:</span><span class="re3">1.0em</span><span class="sy0">;</span>
<span class="kw1">line-height</span><span class="sy0">:</span><span class="re3">17px</span><span class="sy0">;</span>
<span class="kw1">text-decoration</span><span class="sy0">:</span> <span class="kw2">none</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#fm_fec_wrap</span><span class="br0">&#123;</span>
<span class="kw1">height</span><span class="sy0">:</span><span class="re3">285px</span><span class="sy0">;</span>
<span class="kw1">position</span><span class="sy0">:</span><span class="kw2">relative</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.read-more</span> <span class="br0">&#123;</span>
<span class="kw1">background</span><span class="sy0">:</span><span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'images/f_read-more.png'</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span><span class="sy0">;</span>
<span class="kw1">display</span><span class="sy0">:</span><span class="kw2">block</span><span class="sy0">;</span>
<span class="kw1">float</span><span class="sy0">:</span><span class="kw1">right</span><span class="sy0">;</span>
<span class="kw1">height</span><span class="sy0">:</span><span class="re3">32px</span><span class="sy0">;</span>
<span class="kw1">width</span><span class="sy0">:</span><span class="re3">136px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.read-more</span> a <span class="br0">&#123;</span>
<span class="kw1">color</span><span class="sy0">:</span><span class="re0">#8b847c</span><span class="sy0">;</span>
<span class="kw1">font-size</span><span class="sy0">:</span><span class="re3">0.6em</span><span class="sy0">;</span>
<span class="kw1">padding-left</span><span class="sy0">:</span><span class="re3">25px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.read-more</span> a<span class="re2">:hover </span><span class="br0">&#123;</span>
<span class="kw1">color</span><span class="sy0">:</span><span class="re0">#fff</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re1">.date-post</span> <span class="br0">&#123;</span>
<span class="kw1">color</span><span class="sy0">:</span><span class="re0">#FFFFFF</span><span class="sy0">;</span>
<span class="kw1">float</span><span class="sy0">:</span><span class="kw1">right</span><span class="sy0">;</span>
<span class="kw1">font-size</span><span class="sy0">:</span><span class="re3">0.56em</span><span class="sy0">;</span>
<span class="kw1">padding-right</span><span class="sy0">:</span><span class="re3">6px</span><span class="sy0">;</span>
<span class="kw1">text-align</span><span class="sy0">:</span><span class="kw1">right</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#feature-nav</span> <span class="br0">&#123;</span>
<span class="kw1">height</span><span class="sy0">:</span><span class="re3">40px</span><span class="sy0">;</span>
<span class="kw1">width</span><span class="sy0">:</span><span class="re3">620px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#feature-nav-r</span> <span class="br0">&#123;</span>
<span class="kw1">background</span><span class="sy0">:</span><span class="re0">#000</span><span class="sy0">;</span>
<span class="kw1">float</span><span class="sy0">:</span><span class="kw1">right</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#feature-nav-w</span> <span class="br0">&#123;</span>
<span class="kw1">background</span><span class="sy0">:</span><span class="re0">#0c0804</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'images/f-nav-bg.gif'</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span><span class="sy0">;</span>
<span class="kw1">border-top</span><span class="sy0">:</span><span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#21170d</span><span class="sy0">;</span>
<span class="kw1">margin</span><span class="sy0">:</span><span class="nu0">0</span> <span class="kw2">auto</span><span class="sy0">;</span>
<span class="kw1">height</span><span class="sy0">:</span><span class="re3">35px</span><span class="sy0">;</span>
<span class="kw1">width</span><span class="sy0">:</span><span class="re3">950px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#featured-next</span> <span class="br0">&#123;</span>
<span class="kw1">background</span><span class="sy0">:</span><span class="kw2">transparent</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="co2">images/fe_imG.png</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span> <span class="kw2">scroll</span> <span class="re3">-77px</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw1">float</span><span class="sy0">:</span><span class="kw1">right</span><span class="sy0">;</span>
<span class="kw1">margin-right</span><span class="sy0">:</span><span class="re3">10px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#featured-prev</span> <span class="br0">&#123;</span>
<span class="kw1">background</span><span class="sy0">:</span><span class="kw2">transparent</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="co2">images/fe_imG.png</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span> <span class="kw2">scroll</span> <span class="nu0">0</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw1">float</span><span class="sy0">:</span><span class="kw1">left</span><span class="sy0">;</span>
<span class="kw1">margin-left</span><span class="sy0">:</span><span class="re3">10px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#featured-prev</span><span class="sy0">,</span><span class="re0">#featured-next</span> <span class="br0">&#123;</span>
<span class="kw1">cursor</span><span class="sy0">:</span><span class="kw2">pointer</span><span class="sy0">;</span>
<span class="kw1">height</span><span class="sy0">:</span><span class="re3">30px</span><span class="sy0">;</span>
<span class="kw1">margin-top</span><span class="sy0">:</span><span class="re3">4px</span><span class="sy0">;</span>
<span class="kw1">text-indent</span><span class="sy0">:</span><span class="re3">-9999px</span><span class="sy0">;</span>
<span class="kw1">top</span><span class="sy0">:</span><span class="nu0">0</span><span class="sy0">;</span>
<span class="kw1">width</span><span class="sy0">:</span><span class="re3">78px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#con_fea_navwrap</span><span class="br0">&#123;</span>
<span class="kw1">background</span><span class="sy0">:</span><span class="re0">#171717</span><span class="sy0">;</span>
<span class="kw1">height</span><span class="sy0">:</span><span class="re3">23px</span><span class="sy0">;</span>
<span class="kw1">margin-left</span><span class="sy0">:</span><span class="re3">5px</span><span class="sy0">;</span>
<span class="kw1">padding-left</span><span class="sy0">:</span><span class="re3">13px</span><span class="sy0">;</span>
<span class="kw1">padding-right</span><span class="sy0">:</span><span class="re3">13px</span><span class="sy0">;</span>
<span class="kw1">padding-top</span><span class="sy0">:</span><span class="re3">3px</span><span class="sy0">;</span>
<span class="kw1">text-indent</span><span class="sy0">:</span><span class="re3">-9999px</span><span class="sy0">;</span>
<span class="kw1">display</span><span class="sy0">:</span><span class="kw2">block</span><span class="sy0">;</span>
<span class="kw1">width</span><span class="sy0">:</span><span class="re3">554px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#con_featured-next</span><span class="br0">&#123;</span>
<span class="kw1">background</span><span class="sy0">:</span><span class="kw2">transparent</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="co2">images/con_n.png</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span> <span class="kw2">scroll</span> <span class="nu0">0</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw1">float</span><span class="sy0">:</span><span class="kw1">right</span><span class="sy0">;</span>
<span class="kw1">margin-right</span><span class="sy0">:</span><span class="re3">10px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#con_featured-prev</span> <span class="br0">&#123;</span>
<span class="kw1">background</span><span class="sy0">:</span><span class="kw2">transparent</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="co2">images/con_n.png</span><span class="br0">&#41;</span> <span class="kw2">no-repeat</span> <span class="kw2">scroll</span> <span class="re3">-25px</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw1">float</span><span class="sy0">:</span><span class="kw1">left</span><span class="sy0">;</span>
<span class="kw1">margin-left</span><span class="sy0">:</span><span class="re3">10px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="re0">#con_featured-prev</span><span class="sy0">,</span><span class="re0">#con_featured-next</span> <span class="br0">&#123;</span>
<span class="kw1">cursor</span><span class="sy0">:</span><span class="kw2">pointer</span><span class="sy0">;</span>
<span class="kw1">height</span><span class="sy0">:</span><span class="re3">23px</span><span class="sy0">;</span>
<span class="kw1">margin-top</span><span class="sy0">:</span><span class="re3">0px</span><span class="sy0">;</span>
<span class="kw1">text-indent</span><span class="sy0">:</span><span class="re3">-9999px</span><span class="sy0">;</span>
<span class="kw1">top</span><span class="sy0">:</span><span class="nu0">0</span><span class="sy0">;</span>
<span class="kw1">width</span><span class="sy0">:</span><span class="re3">25px</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Для вывода карусели на главной странице блога поместите в файл index.php или home.php (это зависит от темы) следующий код:</p>
<div id="wpshdo_12" class="wp-synhighlighter-outer"><div id="wpshdt_12" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_12"></a><a id="wpshat_12" class="wp-synhighlighter-title" href="#codesyntax_12"  onClick="javascript:wpsh_toggleBlock(12)" title="Нажмите, чтобы показать или скрыть блок кода">Код вывода карусели</a></td><td align="right"><a href="#codesyntax_12" onClick="javascript:wpsh_code(12)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_12" onClick="javascript:wpsh_print(12)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_12" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="kw2">&lt;?php</span> <span class="kw1">include</span> <span class="br0">&#40;</span>TEMPLATEPATH <span class="sy0">.</span> <span class="st_h">'/con_featured_post.php'</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div>
<p>Для того чтобы задать данному коду галереи изображения статей добавьте к нужным статьям, по одному на каждую статью, произвольные поля с именем <strong>articleimg</strong>, а в качестве значения поля задайте URL изображения. Размер выводимого изображения <strong>561х257</strong> пиксел, но Вы можете указывать URL изображения любого размера &#8211; изображение автоматически будет приведено к нужному размеру и полученная копия будет сохранена в папке <strong>cache</strong>.</p>
<p>Количество анонсируемых статей по умолчанию равно 3-м, а рубрика вывода &laquo;wordpress&raquo;. Если Вы хотите изменить эти значения, откройте файл <code>con_featured_post.php</code>, и найдите в нём следующий код:</p>
<div id="wpshdo_13" class="wp-synhighlighter-outer"><div id="wpshdt_13" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_13"></a><a id="wpshat_13" class="wp-synhighlighter-title" href="#codesyntax_13"  onClick="javascript:wpsh_toggleBlock(13)" title="Нажмите, чтобы показать или скрыть блок кода">Параметры вывода карусели</a></td><td align="right"><a href="#codesyntax_13" onClick="javascript:wpsh_code(13)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_13" onClick="javascript:wpsh_print(13)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_13" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="re0">$featurecat</span> <span class="sy0">=</span> <span class="st_h">'wordpress'</span><span class="sy0">;</span>
<span class="re0">$featurenum</span> <span class="sy0">=</span> <span class="st_h">'3'</span><span class="sy0">;</span></pre></div></div>
<ul>
<li><strong>$featurecat</strong> &#8211; имя рубрики из которой берутся изображения анонсов. <strong>$featurecat8</strong> не актуально, т.к. используется для устранения проблем WordPress <strong>версии 2.8</strong>.</li>
<li><strong>$featurenum</strong> &#8211; количество выводимых анонсов</li>
</ul>
<p>В качестве текста анонса берётся заголовок статьи и анонс (цитата) статьи (по версии <strong>get_the_excerpt()</strong>)</p>
<div class='stb-download_box' >Note: There is a file embedded within this post, please visit this post to download the file.</div>
<h4>Blogger</h4>
<p>Честно говоря, идея использования этой карусели в Blogger-блогах не является разумной. Невозможность использования скриптов PHP в Blogger сводит на нет преимущество авто-подгонки размера изображений, а невозможность привязки крупных изображений к статьям не позволяет использовать авто-вывод анонсов последних статей.</p>
<p>Впрочем, если Blogger-блоггерам эта карусель интересна, я могу что-нибудь придумать (в индивидуальном порядке $).</p>
<p>Если Вы хотите подискутировать на тему этой или иных каруселей в Blogger-блогах, прошу <a href="http://forum.blogcoding.ru/viewtopic.php?f=8&amp;t=6" onclick="pageTracker._trackPageview('/outgoing/forum.blogcoding.ru/viewtopic.php?f=8_amp_t=6&amp;referer=');">на форум поддержки</a>.</p>
<p style='text-align:left'>&copy; 2010, <a href='http://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>

<div><h3>Постовой</h3><ul><li><a href="http://ezhelev.com/" onclick="pageTracker._trackPageview('/outgoing/ezhelev.com/?referer=');">Блог</a> человека, работающего в интернете. Почитайте, это может быть интересно.</li></ul></div>
 
<img src="http://blogcoding.ru/?ak_action=api_record_view&id=1715&type=feed" alt="" />

<p>Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=1615' rel='bookmark' title='Permanent Link: Карусель в блоге. Часть 1.'>Карусель в блоге. Часть 1.</a></li>
<li><a href='http://blogcoding.ru/?p=233' rel='bookmark' title='Permanent Link: Подсветка кодов в блоге. Часть вторая.'>Подсветка кодов в блоге. Часть вторая.</a></li>
<li><a href='http://blogcoding.ru/?p=1788' rel='bookmark' title='Permanent Link: Просмотр объектов мультимедиа в Blogger-блоге'>Просмотр объектов мультимедиа в Blogger-блоге</a></li>
</ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/vWCSXFnnC1HfVks33_msbNDOXjs/0/da"><img src="http://feedads.g.doubleclick.net/~a/vWCSXFnnC1HfVks33_msbNDOXjs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/vWCSXFnnC1HfVks33_msbNDOXjs/1/da"><img src="http://feedads.g.doubleclick.net/~a/vWCSXFnnC1HfVks33_msbNDOXjs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/minimus/~4/-_8sPJ8vSTM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogcoding.ru/?feed=rss2&amp;p=1715</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blogcoding.ru/?p=1715</feedburner:origLink></item>
		<item>
		<title>Просмотр объектов мультимедиа в Blogger-блоге</title>
		<link>http://feedproxy.google.com/~r/minimus/~3/KsTCPkqzmCo/</link>
		<comments>http://blogcoding.ru/?p=1788#comments</comments>
		<pubDate>Tue, 11 May 2010 20:04:39 +0000</pubDate>
		<dc:creator>minimus</dc:creator>
				<category><![CDATA[Виджеты (Blogger)]]></category>
		<category><![CDATA[Blogger]]></category>
		<category><![CDATA[виджет]]></category>
		<category><![CDATA[коды]]></category>

		<guid isPermaLink="false">http://blogcoding.ru/?p=1788</guid>
		<description><![CDATA[Современный продвинутый блог редко обходится без использования кодов, позволяющих пользователю просматривать изображения и видео не уходя со страницы.


Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=230' rel='bookmark' title='Permanent Link: Виджет Top Commentators (Лучшие Комментаторы) для Blogger'>Виджет Top Commentators (Лучшие Комментаторы) для Blogger</a></li>
<li><a href='http://blogcoding.ru/?p=1615' rel='bookmark' title='Permanent Link: Карусель в блоге. Часть 1.'>Карусель в блоге. Часть 1.</a></li>
<li><a href='http://blogcoding.ru/?p=233' rel='bookmark' title='Permanent Link: Подсветка кодов в блоге. Часть вторая.'>Подсветка кодов в блоге. Часть вторая.</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<p>Современный продвинутый блог редко обходится без использования кодов, позволяющих пользователю просматривать изображения и видео не уходя со страницы. Если для <strong>WordPress-блогов</strong> таких плагинов написано немало (например мой плагин <a href="http://blogcoding.ru/?p=1627"><strong>Simple View</strong></a>), то для <strong>Blogger-блогов</strong> я таких кодов почти не встречал (возможно плохо искал <img src='http://blogcoding.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p>Я хочу рассмотреть в этой статье способы подключения к <strong>Blogger-блогу</strong> таких популярных библиотек как <a href="http://www.lokeshdhakar.com/projects/lightbox2/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.lokeshdhakar.com/projects/lightbox2/?referer=');"><strong>Lightbox</strong></a>, <a href="http://randomous.com/floatbox/home" target="_blank" onclick="pageTracker._trackPageview('/outgoing/randomous.com/floatbox/home?referer=');"><strong>FloatBox</strong></a> и <a href="http://www.shadowbox-js.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.shadowbox-js.com/?referer=');"><strong>Shadowbox</strong></a>.<br />
<span id="more-1788"></span></p>
<h4>Lightbox</h4>
<p>Lightbox является, пожалуй, самой популярной библиотекой для просмотра изображений, т.к. была написана одной из первых. Несмотря на явный минимализм и почтенный возраст по прежнему остаётся лидером среди блоггеров. К недостаткам можно отнести то, что библиотека использует фреймворки (<em>framework</em>) <strong>Prototypes</strong> и <strong>Scriptaculous</strong>, а это делает библиотеку уязвимой в плане совместимости с другими фреймворками (например с <strong>Mootools</strong>).</p>
<p>И тем не менее &#8230;</p>
<p>Вставьте следующий код в секцию <strong>head</strong>, желательно ближе к началу секции &#8211; если Вы используете <strong>jQuery</strong>, это позволит избежать конфликта (пресловутая совместимость фреймворков) пространства имён.</p>
<div id="wpshdo_14" class="wp-synhighlighter-outer"><div id="wpshdt_14" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_14"></a><a id="wpshat_14" class="wp-synhighlighter-title" href="#codesyntax_14"  onClick="javascript:wpsh_toggleBlock(14)" title="Нажмите, чтобы показать или скрыть блок кода">Код в секции head</a></td><td align="right"><a href="#codesyntax_14" onClick="javascript:wpsh_code(14)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_14" onClick="javascript:wpsh_print(14)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_14" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml"><span class="sc3"><span class="re1">&lt;style<span class="re2">&gt;</span></span></span>
#lightbox{    position: absolute;    left: 0; width: 100%; z-index: 100; text-align: center; line-height: 0;}
#lightbox img{ width: auto; height: auto;}
#lightbox a img{ border: none; }
&nbsp;
#outerImageContainer{ position: relative; background-color: #fff; width: 250px; height: 250px; margin: 0 auto; }
#imageContainer{ padding: 10px; }
&nbsp;
#loading{ position: absolute; top: 40%; left: 0%; height: 25%; width: 100%; text-align: center; line-height: 0; }
#hoverNav{ position: absolute; top: 0; left: 0; height: 100%; width: 100%; z-index: 10; }
#imageContainer<span class="sc1">&amp;gt;</span>#hoverNav{ left: 0;}
#hoverNav a{ outline: none;}
&nbsp;
#prevLink, #nextLink{ width: 49%; height: 100%; background-image: url(data:image/gif;base64,AAAA); /* Trick IE into showing hover */ display: block; }
#prevLink { left: 0; float: left;}
#nextLink { right: 0; float: right;}
#prevLink:hover, #prevLink:visited:hover { background: url(http://lh5.ggpht.com/_u4gySN2ZgqE/SnWk89-4azI/AAAAAAAAAj8/hM0MqnVouCQ/prevlabel%5B3%5D.gif) left 15% no-repeat; }
#nextLink:hover, #nextLink:visited:hover { background: url(http://lh6.ggpht.com/_u4gySN2ZgqE/SnWk9-mNiQI/AAAAAAAAAkA/Zg1jXV9xnQM/nextlabel%5B6%5D.gif) right 15% no-repeat; }
&nbsp;
#imageDataContainer{ font: 10px Verdana, Helvetica, sans-serif; background-color: #fff; margin: 0 auto; line-height: 1.4em; overflow: auto; width: 100%    ; }
&nbsp;
#imageData{ padding:0 10px; color: #666; }
#imageData #imageDetails{ width: 70%; float: left; text-align: left; }
#imageData #caption{ font-weight: bold;    }
#imageData #numberDisplay{ display: block; clear: left; padding-bottom: 1.0em;    }
#imageData #bottomNavClose{ width: 66px; float: right;  padding-bottom: 0.7em; outline: none;}      
&nbsp;
#overlay{ position: absolute; top: 0; left: 0; z-index: 90; width: 100%; height: 500px; background-color: #000; }
round-color: #000; }
lute; top: 0; left: 0; z-index: 90; width: 100%; height: 500px; background-color: #000; }
round-color: #000; }
<span class="sc3"><span class="re1">&lt;/style<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;script</span> <span class="re0">src</span>=<span class="st0">'http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js'</span> <span class="re0">type</span>=<span class="st0">'text/javascript'</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;script</span> <span class="re0">src</span>=<span class="st0">'http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/scriptaculous.js'</span> <span class="re0">type</span>=<span class="st0">'text/javascript'</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;script</span> <span class="re0">src</span>=<span class="st0">'http://blogergadgets.googlecode.com/files/lightbox.js'</span> <span class="re0">type</span>=<span class="st0">'text/javascript'</span><span class="re2">/&gt;</span></span></pre></div></div>
<p>Теперь, если в теле статьи мы поместим ссылку следующего вида:</p>
<div id="wpshdo_15" class="wp-synhighlighter-outer"><div id="wpshdt_15" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_15"></a><a id="wpshat_15" class="wp-synhighlighter-title" href="#codesyntax_15"  onClick="javascript:wpsh_toggleBlock(15)" title="Нажмите, чтобы показать или скрыть блок кода">Код в статье</a></td><td align="right"><a href="#codesyntax_15" onClick="javascript:wpsh_code(15)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_15" onClick="javascript:wpsh_print(15)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_15" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml"><span class="sc3"><span class="re1">&lt;a</span> <span class="re0">href</span>=<span class="st0">&quot;http://YOUR_HOST/fullimage.jpg&quot;</span> <span class="re0">rel</span>=<span class="st0">&quot;lightbox&quot;</span> <span class="re0">title</span>=<span class="st0">&quot;Моя картинка в полный рост&quot;</span><span class="re2">&gt;</span><span class="re1">&lt;img</span> <span class="re0">src</span>=<span class="st0">&quot;http://YOUR_HOST/thumbnail.jpg&quot;</span> <span class="re2">/&gt;</span><span class="re1">&lt;/a<span class="re2">&gt;</span></span></span>
<span class="sc-1">&lt;!-- или, для группировки изображений по галереям --&gt;</span>
<span class="sc3"><span class="re1">&lt;a</span> <span class="re0">href</span>=<span class="st0">&quot;http://YOUR_HOST/fullimage.jpg&quot;</span> <span class="re0">rel</span>=<span class="st0">&quot;lightbox[gname]&quot;</span> <span class="re0">title</span>=<span class="st0">&quot;Моя картинка в полный рост&quot;</span><span class="re2">&gt;</span><span class="re1">&lt;img</span> <span class="re0">src</span>=<span class="st0">&quot;http://YOUR_HOST/thumbnail.jpg&quot;</span> <span class="re2">/&gt;</span><span class="re1">&lt;/a<span class="re2">&gt;</span></span></span></pre></div></div>
<p>получим именно то, что нам и надо &#8211; вывод полноразмерного изображения при клике на миниатюре в окне Lightbox.</p>
<ul>
<li><strong>fullimage.jpg</strong> &#8211; адрес полноразмерного изображения, не обязательно JPEG</li>
<li><strong>thumbnail.jpg</strong> &#8211; адрес миниатюры, не обязательно JPEG</li>
<li><strong>gname</strong> &#8211; любое имя галереи для объединения нескольких изображений в галерею</li>
</ul>
<h4>Shadowbox</h4>
<p>Эта библиотека написана на &laquo;чистом&raquo; javascript и потому не испытывает проблем с совместимостью с популярными фреймворками. Кроме того, эта библиотека позволяет выводить в своём окне не только изображения но и видеоклипы.</p>
<p>Поместите в секцию head следующий код:</p>
<div id="wpshdo_16" class="wp-synhighlighter-outer"><div id="wpshdt_16" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_16"></a><a id="wpshat_16" class="wp-synhighlighter-title" href="#codesyntax_16"  onClick="javascript:wpsh_toggleBlock(16)" title="Нажмите, чтобы показать или скрыть блок кода">Код в секции head</a></td><td align="right"><a href="#codesyntax_16" onClick="javascript:wpsh_code(16)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_16" onClick="javascript:wpsh_print(16)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_16" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml"><span class="sc3"><span class="re1">&lt;link</span> <span class="re0">rel</span>=<span class="st0">&quot;stylesheet&quot;</span> <span class="re0">type</span>=<span class="st0">&quot;text/css&quot;</span> <span class="re0">href</span>=<span class="st0">&quot;http://YOUR_HOST/shadowbox.css&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;script</span> <span class="re0">type</span>=<span class="st0">&quot;text/javascript&quot;</span> <span class="re0">src</span>=<span class="st0">&quot;http://YOUR_HOST/shadowbox.js&quot;</span><span class="re2">&gt;</span><span class="re1">&lt;/script<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;script</span> <span class="re0">type</span>=<span class="st0">&quot;text/javascript&quot;</span><span class="re2">&gt;</span></span>
Shadowbox.init();
<span class="sc3"><span class="re1">&lt;/script<span class="re2">&gt;</span></span></span></pre></div></div>
<p>Shadowbox.init может содержать параметр:</p>
<div id="wpshdo_17" class="wp-synhighlighter-outer"><div id="wpshdt_17" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_17"></a><a id="wpshat_17" class="wp-synhighlighter-title" href="#codesyntax_17"  onClick="javascript:wpsh_toggleBlock(17)" title="Нажмите, чтобы показать или скрыть блок кода">параметры init</a></td><td align="right"><a href="#codesyntax_17" onClick="javascript:wpsh_code(17)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_17" onClick="javascript:wpsh_print(17)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_17" class="wp-synhighlighter-inner" style="display: block;"><pre class="javascript">Shadowbox.<span class="me1">init</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
    handleOversize<span class="sy0">:</span> <span class="st0">&quot;drag&quot;</span><span class="sy0">,</span>
    modal<span class="sy0">:</span> <span class="kw2">true</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>
<p>Подробнее о параметрах Shadowbox можно почитать <a href="http://www.shadowbox-js.com/options.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.shadowbox-js.com/options.html?referer=');">здесь</a>.</p>
<p>В теле поста используйте коды такого вида:</p>
<div id="wpshdo_18" class="wp-synhighlighter-outer"><div id="wpshdt_18" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_18"></a><a id="wpshat_18" class="wp-synhighlighter-title" href="#codesyntax_18"  onClick="javascript:wpsh_toggleBlock(18)" title="Нажмите, чтобы показать или скрыть блок кода">Код в статьях</a></td><td align="right"><a href="#codesyntax_18" onClick="javascript:wpsh_code(18)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_18" onClick="javascript:wpsh_print(18)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_18" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml"><span class="sc3"><span class="re1">&lt;a</span> <span class="re0">href</span>=<span class="st0">&quot;http://YOUR_HOST/myimage.jpg&quot;</span> <span class="re0">rel</span>=<span class="st0">&quot;shadowbox&quot;</span> <span class="re0">title</span>=<span class="st0">&quot;Моя картинка в полный рост&quot;</span><span class="re2">&gt;</span><span class="re1">&lt;img</span> <span class="re0">src</span>=<span class="st0">&quot;http://YOUR_HOST/thumbnail.jpg&quot;</span> <span class="re2">/&gt;</span><span class="re1">&lt;/a<span class="re2">&gt;</span></span></span></pre></div></div>
<p>Добавляя <strong>rel=&raquo;shadowbox&raquo;</strong> в код линка Вы информируете Shadowbox, что это &laquo;его клиент&raquo;.</p>
<h4>Floatbox</h4>
<p>Floatbox в чём-то похож на Shadowbox, но обладает большей функциональностью и большим количеством настроек. Кроме того, это единственная библиотека позволяющая включить предварительную авто-загрузку изображений, т.е. пока читатель &laquo;соображает что к чему&raquo;, изображения тихо подгружаются и когда он кликает на миниатюре, получает изображение немедленно (если это не гига-изображение, разумеется <img src='http://blogcoding.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p>В секцию head вставить следующий код:</p>
<div id="wpshdo_19" class="wp-synhighlighter-outer"><div id="wpshdt_19" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_19"></a><a id="wpshat_19" class="wp-synhighlighter-title" href="#codesyntax_19"  onClick="javascript:wpsh_toggleBlock(19)" title="Нажмите, чтобы показать или скрыть блок кода">Код в секции head</a></td><td align="right"><a href="#codesyntax_19" onClick="javascript:wpsh_code(19)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_19" onClick="javascript:wpsh_print(19)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_19" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml"><span class="sc3"><span class="re1">&lt;link</span> <span class="re0">type</span>=<span class="st0">&quot;text/css&quot;</span> <span class="re0">rel</span>=<span class="st0">&quot;stylesheet&quot;</span> <span class="re0">href</span>=<span class="st0">&quot;http://YOUR_HOST/floatbox/floatbox.css&quot;</span> <span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;script</span> <span class="re0">type</span>=<span class="st0">&quot;text/javascript&quot;</span> <span class="re0">src</span>=<span class="st0">&quot;http://YOUR_HOST/floatbox/floatbox.js&quot;</span><span class="re2">&gt;</span><span class="re1">&lt;/script<span class="re2">&gt;</span></span></span></pre></div></div>
<p>В теле статьи можно использовать следующий код:</p>
<div id="wpshdo_20" class="wp-synhighlighter-outer"><div id="wpshdt_20" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_20"></a><a id="wpshat_20" class="wp-synhighlighter-title" href="#codesyntax_20"  onClick="javascript:wpsh_toggleBlock(20)" title="Нажмите, чтобы показать или скрыть блок кода">Код в статье</a></td><td align="right"><a href="#codesyntax_20" onClick="javascript:wpsh_code(20)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_20" onClick="javascript:wpsh_print(20)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_20" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml"><span class="sc3"><span class="re1">&lt;a</span> <span class="re0">href</span>=<span class="st0">&quot;http://YOUR_HOST/fullimage.jpg&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;floatbox&quot;</span><span class="re2">&gt;</span><span class="re1">&lt;img</span> <span class="re0">src</span>=<span class="st0">&quot;http://YOUR_HOST/tumbnail.jpg&quot;</span> <span class="re2">/&gt;</span><span class="re1">&lt;/a<span class="re2">&gt;</span></span></span>
<span class="sc-1">&lt;!-- или с заголовками  --&gt;</span>
<span class="sc3"><span class="re1">&lt;a</span> <span class="re0">href</span>=<span class="st0">&quot;http://YOUR_HOST/fullimage.jpg&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;floatbox&quot;</span> <span class="re0">rev</span>=<span class="st0">&quot;caption:`Моя картинка в полный рост` caption2:`Большая картинка`&quot;</span><span class="re2">&gt;</span><span class="re1">&lt;img</span> <span class="re0">src</span>=<span class="st0">&quot;http://YOUR_HOST/tumbnail.jpg&quot;</span> <span class="re2">/&gt;</span><span class="re1">&lt;/a<span class="re2">&gt;</span></span></span></pre></div></div>
<p>можно и так:</p>
<div id="wpshdo_21" class="wp-synhighlighter-outer"><div id="wpshdt_21" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_21"></a><a id="wpshat_21" class="wp-synhighlighter-title" href="#codesyntax_21"  onClick="javascript:wpsh_toggleBlock(21)" title="Нажмите, чтобы показать или скрыть блок кода">Код в статье</a></td><td align="right"><a href="#codesyntax_21" onClick="javascript:wpsh_code(21)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_21" onClick="javascript:wpsh_print(21)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://blogcoding.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.png" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_21" class="wp-synhighlighter-inner" style="display: block;"><pre class="php"><span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;floatbox&quot;</span><span class="sy0">&gt;</span>
  <span class="sy0">&lt;</span>a href<span class="sy0">=</span><span class="st0">&quot;http://YOUR_HOST/fullimage.jpg&quot;</span><span class="sy0">&gt;&lt;</span>img src<span class="sy0">=</span><span class="st0">&quot;http://YOUR_HOST/tumbnail.jpg&quot;</span> <span class="sy0">/&gt;&lt;/</span>a<span class="sy0">&gt;</span>
  <span class="sy0">&lt;</span>a href<span class="sy0">=</span><span class="st0">&quot;http://YOUR_HOST/fullimage2.jpg&quot;</span><span class="sy0">&gt;&lt;</span>img src<span class="sy0">=</span><span class="st0">&quot;http://YOUR_HOST/tumbnail2.jpg&quot;</span> <span class="sy0">/&gt;&lt;/</span>a<span class="sy0">&gt;</span>
  <span class="sy0">&lt;</span>a href<span class="sy0">=</span><span class="st0">&quot;http://YOUR_HOST/fullimage3.jpg&quot;</span><span class="sy0">&gt;&lt;</span>img src<span class="sy0">=</span><span class="st0">&quot;http://YOUR_HOST/tumbnail3.jpg&quot;</span> <span class="sy0">/&gt;&lt;/</span>a<span class="sy0">&gt;</span>
<span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span></pre></div></div>
<p>в этом случае объекты будут объеденены в группу (галрею). В первом варианте, для объединения в группу добавьте в аттрибут rev параметр <strong>group</strong> (например: <strong>group: gname</strong>).</p>
<p>Более подробно об обширных возможностях <strong>Floatbox</strong> можно прочитать <a href="http://randomous.com/floatbox/instructions" target="_blank" onclick="pageTracker._trackPageview('/outgoing/randomous.com/floatbox/instructions?referer=');">здесь</a>.</p>
<p>Единственным недостатком библиотеки является необходимость её лицензирования (платного или бесплатного &#8211; это как повезёт). Впрочем, и без лицензии библиотека работает. Периодически выбрасывает окно предупреждения о необходимости лицензирования, но работает &#8230; Если это напрягает, используйте версию 3.50</p>
<p>Вот, пожалуй, и всё!</p>
<p style='text-align:left'>&copy; 2010, <a href='http://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>

<img src="http://blogcoding.ru/?ak_action=api_record_view&id=1788&type=feed" alt="" />

<p>Похожие статьи:<ol><li><a href='http://blogcoding.ru/?p=230' rel='bookmark' title='Permanent Link: Виджет Top Commentators (Лучшие Комментаторы) для Blogger'>Виджет Top Commentators (Лучшие Комментаторы) для Blogger</a></li>
<li><a href='http://blogcoding.ru/?p=1615' rel='bookmark' title='Permanent Link: Карусель в блоге. Часть 1.'>Карусель в блоге. Часть 1.</a></li>
<li><a href='http://blogcoding.ru/?p=233' rel='bookmark' title='Permanent Link: Подсветка кодов в блоге. Часть вторая.'>Подсветка кодов в блоге. Часть вторая.</a></li>
</ol></p>
<p><a href="http://feedads.g.doubleclick.net/~a/8bND4D4ws_ozqwHzRovGCiuS4Bc/0/da"><img src="http://feedads.g.doubleclick.net/~a/8bND4D4ws_ozqwHzRovGCiuS4Bc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/8bND4D4ws_ozqwHzRovGCiuS4Bc/1/da"><img src="http://feedads.g.doubleclick.net/~a/8bND4D4ws_ozqwHzRovGCiuS4Bc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/minimus/~4/KsTCPkqzmCo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogcoding.ru/?feed=rss2&amp;p=1788</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://blogcoding.ru/?p=1788</feedburner:origLink></item>
		<item>
		<title>Форум поддержки</title>
		<link>http://feedproxy.google.com/~r/minimus/~3/lL6-C3eJtSU/</link>
		<comments>http://blogcoding.ru/?p=1785#comments</comments>
		<pubDate>Wed, 05 May 2010 18:39:51 +0000</pubDate>
		<dc:creator>minimus</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Блоггинг]]></category>
		<category><![CDATA[виджет]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[форум]]></category>

		<guid isPermaLink="false">http://blogcoding.ru/?p=1785</guid>
		<description><![CDATA[Так уж повелось, что в блогах читатели задают вопросы автору блога и ожидают ответов именно от него.


Нет похожих статей.]]></description>
			<content:encoded><![CDATA[
<p>Так уж повелось, что в блогах, читатели задают вопросы автору блога и ожидают ответов именно от него. Чтобы дать возможность своим читателям обащаться между собой и, возможно, давать более подробные ответы и рекоммендации, я решил создать <a href="http://forum.blogcoding.ru" onclick="pageTracker._trackPageview('/outgoing/forum.blogcoding.ru?referer=');">форум поддержки</a> этого блога.</p>
<p>На форуме можно будет обсудить достоинства и недостатки моих плагинов и прочих статей, получить квалифицированную помощь и т.д. и т.п. &#8230; <img src='http://blogcoding.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Вопросы общего характера и/или не относящиеся к темам статей прошу так же оставлять на форуме. Там Вы получите ответы на Ваши вопросы не только от меня, но и от постоянных читателей блога.</p>
<p>Добро пожаловать на <a href="http://forum.blogcoding.ru" onclick="pageTracker._trackPageview('/outgoing/forum.blogcoding.ru?referer=');">форум</a>!</p>
<p style='text-align:left'>&copy; 2010, <a href='http://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>

<div><h3>Постовой</h3><ul><li>Блог о заработке в сети: <a href="http://blogwork.ru/" onclick="pageTracker._trackPageview('/outgoing/blogwork.ru/?referer=');">Интернет работа</a></li></ul></div>
 
<img src="http://blogcoding.ru/?ak_action=api_record_view&id=1785&type=feed" alt="" />

<p>Нет похожих статей.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/4L8pidMvL9J0Pc991_207JCyoYc/0/da"><img src="http://feedads.g.doubleclick.net/~a/4L8pidMvL9J0Pc991_207JCyoYc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/4L8pidMvL9J0Pc991_207JCyoYc/1/da"><img src="http://feedads.g.doubleclick.net/~a/4L8pidMvL9J0Pc991_207JCyoYc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/minimus/~4/lL6-C3eJtSU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogcoding.ru/?feed=rss2&amp;p=1785</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blogcoding.ru/?p=1785</feedburner:origLink></item>
	</channel>
</rss>
