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

<channel>
	<title>Решительный шаг вперед &#187; Технологии</title>
	<atom:link href="http://grandiz.com/ru/blog/category/%d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8/feed/" rel="self" type="application/rss+xml" />
	<link>http://grandiz.com/ru</link>
	<description>Создание качественных, социально полезных и информативных сайтов</description>
	<lastBuildDate>Tue, 07 Jun 2011 13:32:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Мини-посты и ничего лишнего</title>
		<link>http://grandiz.com/ru/blog/%d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8/mini-posts/</link>
		<comments>http://grandiz.com/ru/blog/%d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8/mini-posts/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 16:20:17 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Технологии]]></category>
		<category><![CDATA[технологии wordpress микроблоггинг плагины]]></category>

		<guid isPermaLink="false">http://grandiz.com/ru/%d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8/mini-posts/</guid>
		<description><![CDATA[Совсем недавно мне был необходим интерфейс для публикации на блог кратких новостей. Новости должны составляться в админке и отображаться в отдельно выделенном блоке на домашней странице блога.]]></description>
			<content:encoded><![CDATA[<p>Ситуация:</p>
<p>Уходишь с  утра из дому,  умылся, поел, уже оделся, в куртке стоишь, тут вспоминаешь, что забыл что-то сделать (закрыть окно, кому-то позвонить, что-то купить, покормить собаку, &#8230;). Решаешь оставить записку жене, или сестре, или дом. работнице, или ещё кому-либо. Записка сама небольшая, нужно передать 1-2 мысли,  но оставить записку нужно быстро и на видном месте. Берёшь стикер, пишешь 3 слова, цепляешь на зеркало в коридор  &#8211; и вперёд!</p>
<p><span id="more-1"></span>Думаю, многие не раз бывали в аналогичной ситуации.</p>
<p>Теперь представим, что дом &#8211; это Ваш блог, жена и сестра &#8211; это гости Вашего блога, а зеркало в коридоре &#8211; это боковая колонка блога, тогда вот этот кусочек стикера будет мини-постом.</p>
<p>В моём понимании, мини-пост &#8211; маленькая заметка, пара слов, возможно предложений,  которые автор хочет оставить для кого-либо быстро и удобно. Чаще всего на видном месте.</p>
<p>Совсем недавно мне был необходим интерфейс для публикации на блог кратких новостей. Новости должны составляться в админке и отображаться в отдельно выделенном блоке на домашней странице блога.</p>
<p>Задача осложнялась тем, что для публикации новостей нельзя было использовать стандартный интерфейс добавления постов WP. Было ясно, что нужен отдельный, пусть хоть и маленький, но раздел админки.</p>
<p>Около часа я подбирал возможные подходы к решению данной задачи. Пришёл к выбору из 3 вариантов.</p>
<p>Вариант 1:</p>
<ol>
<li>Создаём категорию &#8220;Новости&#8221;</li>
<li>Создаём дубликат стандартного интерфейса написания постов WP (post-new.php и post.php).. например, news-new.php и news.php, убираем из этих темплейтов всё лишнее, добавляем их в меню и надеемся, что результат работы будет работать.</li>
<li>Работаем с новостями через новый интерфейс</li>
<li>На страницах блога цепляем заглушки, чтобы предотвратить отображение постов из нашей категории вместе с остальными постами.</li>
<li>В необходимом месте руками выбираем посты из нашей категории и отображаем.</li>
</ol>
<p>Вариант 2:</p>
<ol>
<li>Используем плагин &#8220;<a href="http://www.piepalace.ca/blog/projects/miniposts">Miniposts2</a>&#8221; &#8211; выглядит живым, но, к моему сожалению, использует стандартный интерфейс WP.</li>
<li>Приходим к необходимости опять же создания дубликатов стандартных страниц WP.</li>
</ol>
<p>Вариант 3:</p>
<ol>
<li>Используем плагин <a href="http://www.nmyworld.com/wordpress/archives/2005/03/miniblog-plugin-01-for-wordpress-15-58/">Miniblog</a>, о котором <a href="http://www.blogerstyle.com/wordpress/miniblog-v-wordpress.html">писал Delchyve</a>. Плагин был задуман неплохо, имел отдельную страницу для добавления и редактирования постов, посты удобно извлекались в темплейты, даже умел генерировать RSS ленту&#8230;</li>
<li>Но после установки и запуска на WP 2.2.3 стало очевидно, что плагин не поддерживается и попросту не работает на новых версиях WP.</li>
</ol>
<p>Варианты 1 и 2 я отсёк, как громоздкие и ненадёжные. Не было никакой уверенности,  что дубликаты страниц post-new и post админки WP продолжат успешно работать. Принял решение привести плагин Miniblog в чувства и использовать.</p>
<p>Процесс оказался не сложным.  Ставил я его на WP 2.2.3, с локализацией от <a href="http://mywordpress.ru">mywordpress.ru</a>.</p>
<p>Опишу действия:</p>
<ol>
<li>Во-первых, в плагине  повсюду использовалась локализация, через локализацию проходили даже данные мини-постов и внутренние переменные. Скорее всего, если использовать стандартную, не локализованную версию WP &#8211; проблем не будет заметно,  но  с  русской локализацией плагин начинал выдавать баги.<br />
В проблемных местах я менял вывод типа:<br />
<code>&lt;?php _e($_alt); ?&gt;<br />
На:<br />
&lt;?=$_alt; ?&gt;</code></li>
<li>Во-вторых, ссылки и actions в плагине указывали на файл post.php, функционал которого, видимо, изменился со времен WP 1.5, и теперь плагин этим файлом просто не запускался.<br />
Я заменил все ссылки и actions на post-new.php. Заработало.</li>
<li>Изменил кодировку таблицы, которую создал плагин в БД на кодировку остальных таблиц моего блога utf8_general_ci. В большинстве случаев это не потребуется, но, если кириллица в постах не сохраняется &#8211; проблема именно здесь.На этом этапе плагин ожил и багов я уже не замечал.  Но решил пойти дальше и внести некоторые изменения, дабы расширить функциональность интерфейса.</li>
<li>Подключил TinyMCE:<br />
Закомментировал поле ввода поста в плагине, вместо этого сделал вызов<br />
<code>the_editor($post_text);</code><br />
Добавил инициализацию JS файлов TinyMCE, подключеним к hook-у вызова:<br />
<code>wp_enqueue_script('wp_tiny_mce');</code></li>
<li>Заставил плагин учитывать настройку временных поясов при сохранении поста:<br />
<code>$time_adj = time() + (get_option( 'gmt_offset' ) * 3600 );<br />
$posttime=gmdate('Y-m-d H:i:s',$time_adj);</code></li>
<li>Добавил стандартный интерфейс заливки файлов WP:<br />
<code>&lt;?<br />
$temp_ID=-1 * time();<br />
$uploading_iframe_ID = $temp_ID;<br />
$uploading_iframe_src = wp_nonce_url("upload.php?style=inline&amp;tab=upload&amp;post_id=$uploading_iframe_ID", 'inlineuploading');<br />
$uploading_iframe_src = apply_filters('uploading_iframe_src', $uploading_iframe_src);<br />
if ( false != $uploading_iframe_src )<br />
echo '&lt;iframe id="uploading" frameborder="0" src="' . $uploading_iframe_src . '"&gt;' . __('This feature requires iframe support.') . '&lt;/iframe&gt;';<br />
?&gt;</code><br />
К сожалению, в данной реализации залитые файлы не привязываются к определенному мини-посту. Складываются все в одну кучу, но это не мешает их успешно использовать в мини-постах.<br />
Если кто-то решит эту проблему &#8211; буду  рад об этом узнать <img src='http://grandiz.com/ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Закомментировал поля &#8220;Blog ID&#8221; и &#8220;URL&#8221; при добавлении мини-поста.<br />
Просто посчитал их не нужными.</li>
</ol>
<p>В результате получилась сыроватая, но работающая версия плагина Miniblog. На идеальность кода и алгоритмов не претендую, некоторые решения могут показаться грубоватыми <img src='http://grandiz.com/ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>В добавок, скажу, что извлечение мини-постов в нужное место темплейтов &#8211; процесс очень простой и удобный.<br />
Вот такой код:<br />
<code>&lt;?<br />
// NEWS BLOCK<br />
$news=miniblog_return_entries();<br />
if (count($news)&gt;0):<br />
?&gt;<br />
&lt;div class="post_meta" id="post-news"&gt;<br />
&lt;div class="post_top"&gt;&lt;/div&gt;<br />
&lt;div class="post_index"&gt;<br />
&lt;div class="post_title"&gt;<br />
&lt;div class="post_info"&gt;<br />
&lt;h1&gt;&lt;a href="&lt;?=get_bloginfo('wpurl') ?&gt;/news" rel="bookmark" title="Новости"&gt;Последние Новости&lt;/a&gt;&lt;/h1&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div class="post_content newsBlock"&gt;<br />
&lt;?<br />
foreach ($news as $item){<br />
echo '&lt;h2&gt;'.$item-&gt;title.'&lt;span class="newsDate"&gt;Опубликовано '.mysql2date("j F Y",$item-&gt;date)($item-&gt;date).'&lt;/span&gt;&lt;/h2&gt;'."\n";<br />
echo $item-&gt;text;<br />
echo "\n&lt;hr /&gt;\n";<br />
}<br />
?&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div class="post_bottom"&gt;&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div class="clear_content"&gt;&lt;/div&gt;<br />
&lt;?<br />
endif;   // END NEWS BLOCK<br />
?&gt;<br />
</code><br />
Привел меня к вот такому результату:</p>
<p><img src="http://grandiz.com/ru/wp-content/uploads/2007/11/demo_miniblog.jpg" alt="Новости с помощью Miniblog" /></p>
<p>Перед написанием статьи, протестировал плагин на WP  2.4-bleeding. Всё в порядке.  На WP 2.3.1 проблем быть не должно.</p>
<p>Код результата работы можно забрать здесь: <a href="http://grandiz.com/ru/wp-content/uploads/2007/11/miniblog.zip" title="Измененный плагин Miniblog">Измененный плагин Miniblog</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://grandiz.com/ru/blog/%d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8/mini-posts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

