<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Paradigm.ru &#187; wordpress</title>
	<atom:link href="http://paradigm.ru/tag/wordpress/feed" rel="self" type="application/rss+xml" />
	<link>http://paradigm.ru</link>
	<description>Блог Александра Мусаева</description>
	<lastBuildDate>Sat, 08 May 2010 16:13:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>WP Flipper&#160;&#8212; стрелочная навигация для блога</title>
		<link>http://paradigm.ru/2008/05/wp-flipper-announce</link>
		<comments>http://paradigm.ru/2008/05/wp-flipper-announce#comments</comments>
		<pubDate>Fri, 23 May 2008 09:00:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[горячие клавиши]]></category>
		<category><![CDATA[плагины]]></category>

		<guid isPermaLink="false">http://paradigm.ru/?p=343</guid>
		<description><![CDATA[Теперь страницы Paradigm.ru можно листать с помощью Ctrl-left и Ctrl-right. Идея написать такой плагин для WordPress витала в воздухе уже давно и, в итоге, материализовалась. По сравнению с предыдущим, плагин получился довольно простой, не требующий никаких настроек в контрольной панели. Достаточно включить и все заработает. Ссылка на архив: http://things.paradigm.ru/wp-flipper.zip Более подробное описание находится на странице [...]]]></description>
			<content:encoded><![CDATA[<p>Теперь страницы Paradigm.ru можно листать с помощью Ctrl-left и Ctrl-right. Идея написать такой плагин для WordPress витала в воздухе уже давно и, в итоге, материализовалась. По сравнению с <a href="http://paradigm.ru/wp-postlist/">предыдущим</a>, плагин получился довольно простой, не требующий никаких настроек в контрольной панели. Достаточно включить и все заработает. Ссылка на архив:</p>
<div align="center"><a href="http://things.paradigm.ru/wp-flipper.zip">http://things.paradigm.ru/wp-flipper.zip</a></div>
<p>Более подробное описание находится на <strong><a href="/wp-flipper/">странице плагина</a></strong>, а пока вкратце расскажу о технической стороне вопроса для тех, кому интересно.</p>
<p>В принципе, сам процесс «отлавливания» нажатий на горячие клавиши довольно прост. Уже давно в <a href="http://www.artlebedev.ru/tools/technogrette/" rel="nofollow">Техногрете</a> на эту тему была опубликована статья с примером. Код на JavaScript выглядит следующим образом:</p>
<pre><code class="js">function NavigateThrough (event)
{
  switch (event.keyCode ? event.keyCode : event.which ? event.which : null)
  {
    case 0x25:
      link = document.getElementById ('PrevLink');
      break;
    case 0x27:
      link = document.getElementById ('NextLink');
      break;
  }
  if (link &#038;&#038; link.href) document.location = link.href;
}</code></pre>
<p>Для того, чтобы функция срабатывала, необходимо зарегистрировать обработчик на событие <code>document.onkeydown</code> и прописать соответствующие id у навигационных ссылок (тех, которым соответствует «лево» и «право»). Либо просто вставить внутрь кода URL правой и левой страниц, как я и сделал.</p>
<p>При наличии возможности динамически генерировать JavaScript на серверной стороне, так же может быть полезно убирать из блока switch первый или второй case, когда в них нет необходимости, т.&nbsp;к. на крайних страницах переход может быть только в одну из двух сторон. В плагине все происходит именно так, и лишний обработчик автоматически убирается.</p>
<p>JS-листалка работает в Firefox и, после небольшой модификации, в IE7<sup>*</sup>.</p>
<p style="color:gray;"><sup>*</sup> Установленный у меня IE8b (работающий в режиме IE7) говорит, что объект event не существует и прекращает исполнение скрипта при первом обращении к функции. Чтобы все заработало, необходимо добавить в функцию первую строку: <code>if(!event) event = window.event;</code>.</p>
<p>Что же касется Оперы, процитирую статью Андрея Шитова:</p>
<blockquote><p>Опера — исключение. Этот браузер передает управление обработчику события после того, как выполнит действие по умолчанию (комбинация Ctrl + стрелка в ней уже занята). Поэтому в Опере приходится нажимать не только Ctrl, но и Shift — такая трехклавишная комбинация соответствует навигации по ссылкам из тегов.</p></blockquote>
<p>Я проверял код в Opera 9.50 build 9945, все обстоит именно так. Кстати, помимо приведенного выше, я пробовал использовать другой очень похожий <a href="http://b23.ru/ynj">вариант скрипта</a>. По непонятной причине он обрушивал Оперу насмерть. Это явный баг и в релизе, вероятно, он будет исправлен.</p>
<p>Для того, чтобы не плодить <a href="/2008/05/11/circumventing-browser-connection-limits/">лишние соединения с сервером</a>, плагин вставляет JavaScript прямо в код страницы (он совсем небольшой, поэтому такой метод подключения предпочтителен). Вставка происходит по хуку wp_footer, так что если вдруг код на странице не появляется, причина, скорее всего, в том, что в вашей теме нет вызова <code>wp_footer()</code>. Такое иногда бывает, т.&nbsp;к. сам по себе этот вызов не критичен. На стандартной теме Кубрик все работает, проверено.</p>
<p><strong>Важный PS:</strong> некоторое время назад я зарегистрировался в Plugin Directory на wordpress.org, с целью добавить туда <a href="/wp-postlist/">другой свой плагин</a>. По неясной причине, SVN говорит об ошибке 403 и не хочет всасывать файлы. Пробовал через консольный клиент и Tortoise.</p>
<p>На их форуме обсуждалась эта проблема (как я понял, она часто встречается), но решения я не нашел. Если кто-то имел дело с репозиторием WP и может помочь, буду благодарен. Использование Plugin Directory позволит автоматически обновлять плагины <em>одним кликом</em>. Ради этого все и делается, в основном.</p>
<h3>Ссылки по теме</h3>
<ul>
<li><a href="http://paradigm.ru/wp-flipper/">Страница плагина</a> WP Flipper.</li>
<li><a href="http://www.artlebedev.ru/tools/technogrette/" rel="nofollow">Статья Андрея Шитова</a> о стрелочной навигации на Техногрете.</li>
</ul>
<p><!-- toodoo-key: XXC9BpSUcb4spNxvb2QZS --></p>
]]></content:encoded>
			<wfw:commentRss>http://paradigm.ru/2008/05/wp-flipper-announce/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Дропдаун меню для контрольной панели WordPress</title>
		<link>http://paradigm.ru/2008/05/lighter-menus-wordpress-plugin</link>
		<comments>http://paradigm.ru/2008/05/lighter-menus-wordpress-plugin#comments</comments>
		<pubDate>Sat, 10 May 2008 08:40:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[плагины]]></category>
		<category><![CDATA[эффективность]]></category>

		<guid isPermaLink="false">http://paradigm.ru/?p=319</guid>
		<description><![CDATA[Как-то раз я&#160;уже высказывал в&#160;блоге свое мнение о&#160;выпадающих меню, тем не&#160;менее, бывают случаи, когда их&#160;применение становится оправдано. Один такой случай демонстрирует плагин Lighter Menus, который видоизменяет меню административного интерфейса WP: Зачем нужно менять круглое на&#160;полосатое? По&#160;очень простой причине. Динамическое меню сокращает расстояние между основными страницами CP&#160;до&#160;одного клика. Т.е. почти вдвое уменьшает количество обращений к&#160;серверу, необходимых [...]]]></description>
			<content:encoded><![CDATA[<p>Как-то раз я&nbsp;уже высказывал в&nbsp;блоге <a href="/2008/03/31/delicious-previe/">свое мнение о&nbsp;выпадающих меню</a>, тем не&nbsp;менее, бывают случаи, когда их&nbsp;применение становится оправдано. Один такой случай демонстрирует плагин <a href="http://b23.ru/pqt">Lighter Menus</a>, который видоизменяет меню административного интерфейса WP:</p>
<div class="i"><img src="http://paradigm.ru/;-)/2008/05/lighter-admin-drop-menus.png" alt="" title="Дропдаун меню для админки WordPress" width="451" height="385" /></div>
<p>Зачем нужно менять круглое на&nbsp;полосатое? По&nbsp;очень простой причине. Динамическое меню сокращает расстояние между основными страницами CP&nbsp;до&nbsp;одного клика. Т.е. почти вдвое уменьшает количество обращений к&nbsp;серверу, необходимых для доступа к&nbsp;различным частям панели управления. Вместе с&nbsp;этим сокращается затрачиваемое время. Ведь ни&nbsp;для кого не&nbsp;новость неторопливая работа WP,&nbsp;заметная даже при локальной установке.</p>
<h3>Ссылки по&nbsp;теме</h3>
<ul>
<li><a href="http://b23.ru/pqt">Lighter Menus</a> @ Plugin Directory</li>
<li><a href="http://b23.ru/pqo">Admin Drop Down Menu</a>&nbsp;&#8212; аналогичный плагин, работающий еще и&nbsp;с&nbsp;<a href="/2008/03/21/wp25-admin-color-schemes/">Fluency</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://paradigm.ru/2008/05/lighter-menus-wordpress-plugin/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Иерархия темплейтов WordPress</title>
		<link>http://paradigm.ru/2008/05/wordpress-template-diagram</link>
		<comments>http://paradigm.ru/2008/05/wordpress-template-diagram#comments</comments>
		<pubDate>Fri, 02 May 2008 18:08:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[веб-разработка]]></category>
		<category><![CDATA[инфографика]]></category>
		<category><![CDATA[шаблоны]]></category>

		<guid isPermaLink="false">http://paradigm.ru/?p=303</guid>
		<description><![CDATA[На&#160;блоге WPCandy опубликована классная схема шаблонных файлов WordPress, дающая очень ясное и&#160;наглядное представление об&#160;алгоритме выбора шаблона и&#160;том, какие вообще шаблоны бывают. Такая диаграмма может быть весьма полезна при создании своей собственной темы оформления для WP&#160;или оптимизации уже существующей. Даже странно, что в&#160;официальной документации не&#160;сделали графического представления. (клик ту&#160;зум) Уже четвертый пост подряд про WordPress. Надо [...]]]></description>
			<content:encoded><![CDATA[<p>На&nbsp;блоге <a href="http://wpcandy.com/" ref="nofollow">WPCandy</a> опубликована классная схема шаблонных файлов WordPress, дающая очень ясное и&nbsp;наглядное представление об&nbsp;алгоритме выбора шаблона и&nbsp;том, какие вообще шаблоны бывают. Такая диаграмма может быть весьма полезна при создании своей собственной темы оформления для WP&nbsp;или оптимизации уже существующей.</p>
<p>Даже странно, что в&nbsp;официальной документации не&nbsp;сделали графического представления.</p>
<div class="i"><a href='http://wpcandy.com/mint/pepper/orderedlist/downloads/download.php?file=http%3A//wpcandy.com/wp-content/uploads/2008/04/wp-diagram.jpg' rel="nofollow"><img src="http://paradigm.ru/;-)/2008/05/wp-diagram-preview.jpg" alt="" title="wp-diagram-preview" width="600" height="240" /></a><br />(клик ту&nbsp;зум)</div>
<p>Уже четвертый пост подряд про WordPress. Надо что-то менять.</p>
]]></content:encoded>
			<wfw:commentRss>http://paradigm.ru/2008/05/wordpress-template-diagram/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress Post List plugin 1.1</title>
		<link>http://paradigm.ru/2008/05/wordpress-post-list-plugin-11</link>
		<comments>http://paradigm.ru/2008/05/wordpress-post-list-plugin-11#comments</comments>
		<pubDate>Fri, 02 May 2008 15:30:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp-postlist]]></category>
		<category><![CDATA[плагины]]></category>

		<guid isPermaLink="false">http://paradigm.ru/?p=302</guid>
		<description><![CDATA[Обновился плагин WP&#160;Post List. В&#160;новой версии я&#160;добавил возможность сокращать списки выводимых постов и&#160;размер облака тагов. При желании теперь в&#160;контрольной панели можно задать максимальные значения, и&#160;списки будут автоматически сокращаться. При этом в&#160;облако будут попадать только самые популярные таги, а&#160;в&#160;списки архив&#160;&#8212; самые свежие посты. В&#160;конце сокращенных списков и&#160;облака добавляется ссылка &#171;разворачивания&#187;. Дозагрузка сделана на&#160;AJAX и&#160;обновления страницы не&#160;требует. [...]]]></description>
			<content:encoded><![CDATA[<p>Обновился плагин WP&nbsp;Post List. В&nbsp;новой версии я&nbsp;добавил возможность сокращать списки выводимых постов и&nbsp;размер облака тагов. При желании теперь в&nbsp;контрольной панели можно задать максимальные значения, и&nbsp;списки будут автоматически сокращаться. При этом в&nbsp;облако будут попадать только самые популярные таги, а&nbsp;в&nbsp;списки архив&nbsp;&#8212; самые свежие посты.</p>
<div class="i"><img src="http://paradigm.ru/;-)/2008/05/screenshot-1.png" alt="" title="WordPress Post List plugin" width="600" height="638" /></div>
<p>В&nbsp;конце сокращенных списков и&nbsp;облака добавляется ссылка &laquo;разворачивания&raquo;. Дозагрузка сделана на&nbsp;AJAX и&nbsp;обновления страницы не&nbsp;требует.</p>
<div class="i"><img src="http://paradigm.ru/;-)/2008/05/screenshot-3.png" alt="" title="screenshot-3" width="552" height="299" /></div>
<p>Посмотреть, как все работает, можно <a href="http://paradigm.ru/archive/">в&nbsp;архиве моего блога</a>. Скачать&nbsp;&#8212; на&nbsp;<a href="http://paradigm.ru/wp-postlist/">странице плагина</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://paradigm.ru/2008/05/wordpress-post-list-plugin-11/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Удобный архив постов для WordPress</title>
		<link>http://paradigm.ru/2008/04/wp-postlist-plugin</link>
		<comments>http://paradigm.ru/2008/04/wp-postlist-plugin#comments</comments>
		<pubDate>Wed, 30 Apr 2008 15:24:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wppl]]></category>
		<category><![CDATA[плагины]]></category>

		<guid isPermaLink="false">http://paradigm.ru/?p=293</guid>
		<description><![CDATA[Решил развить тему предыдущего поста, раз уж&#160;она вызвала интерес. Идея переписать представление архива для WordPress пришла потому, что стандартные средства меня не&#160;устраивали. В&#160;понимании WP,&#160;архивом называется обычная лента постов, дефрагментированная по&#160;месяцам. Искать по&#160;ней довольно неудобно, потому что на&#160;одной странице помещается только небольшой фрагмент хронологии и&#160;требуется много листать. Да&#160;и&#160;само использование даты публикации для организации архива может быть [...]]]></description>
			<content:encoded><![CDATA[<p>Решил развить тему <a href="http://paradigm.ru/2008/04/29/archive-updat/">предыдущего поста</a>, раз уж&nbsp;она вызвала интерес.</p>
<p>Идея переписать представление архива для WordPress пришла потому, что стандартные средства меня не&nbsp;устраивали. В&nbsp;понимании WP,&nbsp;архивом называется обычная лента постов, дефрагментированная по&nbsp;месяцам. Искать по&nbsp;ней довольно неудобно, потому что на&nbsp;одной странице помещается только небольшой фрагмент хронологии и&nbsp;требуется много листать. Да&nbsp;и&nbsp;само использование даты публикации для организации архива может быть полезно разве что автору, который помнит, когда и&nbsp;что писал, но&nbsp;никак не&nbsp;посетителю.</p>
<p>Изначально я&nbsp;написал специальный шаблон страницы, который вместо контента выводил разделенный по&nbsp;категориям список постов. Подумав, добавил внутристраничную навигацию с&nbsp;красивым скроллингом и&nbsp;полное облако тагов в&nbsp;начало страницы. Ну&nbsp;а&nbsp;в&nbsp;итоге оформил код в&nbsp;виде плагина.</p>
<p>Кстати, плагин для WordPress писал в&nbsp;первый раз, используя в&nbsp;качестве примера похожий по&nbsp;функциональности <a href="http://b23.ru/pvb">WP&nbsp;Simple Sitemap</a> (тоже генерирует список постов, но&nbsp;более простой, хотя и&nbsp;с&nbsp;разбиением на&nbsp;страницы).</p>
<p>Учитывая тематическую ориентацию блога, приведу сначала фрагмент кода, генерирующий список с&nbsp;&laquo;якорями&raquo; и&nbsp;датами:</p>
<pre><code class="php">$cats = get_categories();
$uncategorized = array_shift($cats);
array_push($cats, $uncategorized);

$contents = array();
$catList = array();

foreach($cats as $cat) {
	$posts = get_posts('numberposts=0&amp;orderby=post_date&amp;'.
		'order =ASC&amp;category='.$cat-&gt;cat_ID);
	$postList = array();
	foreach($posts as $post) {
		$postList[] = date('(Y/m/d) ', strtotime($post-&gt;post_date)).
			'&lt;a href="'.$post-&gt;guid.'"&gt;'.$post-&gt;post_title.'&lt;/a&gt;';
	}

	$catId = 'cat_'.($cat-&gt;cat_ID);
	$cnt = ' ('.$cat-&gt;count.')';
	$contents[] = '&lt;a href="#'.$catId.'"&gt;'.$cat-&gt;name.'&lt;/a&gt;'.$cnt;
	$catList[] = '&lt;h3&gt;&lt;a href="" id="'.$catId.'"&gt;&lt;/a&gt;'.
		$cat-&gt;name.$cnt.' &lt;a href="#postlist_top"&gt;&uarr;&lt;/a&gt;&lt;/h3&gt;'.
		'&lt;ul&gt;&lt;li&gt;'.implode('&lt;/li&gt;&lt;li&gt;', $postList).'&lt;/li&gt;&lt;/ul&gt;';
}

echo '&lt;p&gt;&lt;a href="" id="postlist_top"&gt;&lt;/a&gt;'.
	implode(', ', $contents).'&lt;/p&gt;'.implode("\n", $catList);</code></pre>
<p>В&nbsp;программе используются функции WP&nbsp;API <code>get_categories()</code> и&nbsp;<code>get_posts()</code>, извлекающие из&nbsp;базы списки категрий и&nbsp;постов соответственно. Далее на&nbsp;их&nbsp;основе генерируется HTML.</p>
<p>Вывод облака тегов выполняется вообще в&nbsp;три строчки:</p>
<pre><code class="php">$settings = get_option('wp_postlist_array');
$tags = wp_tag_cloud('number=0&#038;format=array'); // WP 2.5+
echo '&lt;p class="pl_cloud"&gt;'.implode(' ', $tags).'&lt;/p&gt;';</code></pre>
<p>Функция <code>wp_tag_cloud()</code> выдает список линкованных тагов для облака. До&nbsp;версии 2.5, она сразу выводила свой результат в&nbsp;stdout, что на&nbsp;мой взгляд неправильный подход (то&nbsp;же относится ко&nbsp;многим другим функциям WP). Но&nbsp;с&nbsp;недавних пор появилось новое значение параметра <code>format</code>&nbsp;&#8212; <code>array</code>, благодаря которому результат может быть возвращен обычным образом.</p>
<p>Непосредственная вставка кода в&nbsp;нужный шаблон страницы может привести к&nbsp;неудобствам при модификации темы или переносе блога. Поэтому я&nbsp;и&nbsp;сделал в&nbsp;итоге плагин.</p>
<p>Этот плагин ищет в&nbsp;тексте страниц два предопределенных ключевых слова и&nbsp;вставляет на&nbsp;их&nbsp;место список постов и&nbsp;облако тагов соответственно. Благодаря такому подходу обеспечивается полная независимость от&nbsp;темы и&nbsp;гибкость в&nbsp;отношении оформления. Сгенерированный плагином список может получиться довольно длинным, поэтому я&nbsp;бы рекомендовал размещать его на&nbsp;специально-предназначенной странице, не&nbsp;заполненной другим контентом.</p>
<p>Пример использования: <a href="http://paradigm.ru/archive">http://paradigm.ru/archive</a>.<br />
Страница плагина: <a href="http://paradigm.ru/wp-postlist">http://paradigm.ru/wp-postlist</a>.<br />
Архив для скачивания: <a href="http://things.paradigm.ru/wp-postlist.zip">http://things.paradigm.ru/wp-postlist.zip</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://paradigm.ru/2008/04/wp-postlist-plugin/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->