<?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"?><!-- generator="wordpress/8478" --><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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">

<channel>
	<title>Свобода слова вебмастерского</title>
	<link>http://dimox.name</link>
	<description>CSS-верстка, веб-мастеринг, интернет-технологии, манимейкинг</description>
	<pubDate>Fri, 05 Feb 2010 07:56:52 +0000</pubDate>
	<generator>http://wordpress.org/?v=8478</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Dimox" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="dimox" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/</creativeCommons:license><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">Dimox</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>“Хлебные крошки” для WordPress без использования плагина</title>
		<link>http://dimox.name/wordpress-breadcrumbs-without-a-plugin/</link>
		<comments>http://dimox.name/wordpress-breadcrumbs-without-a-plugin/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 13:16:16 +0000</pubDate>
		<dc:creator>Dimox</dc:creator>
		
		<category><![CDATA[WordPress]]></category>

		<category><![CDATA[breadcrumbs]]></category>

		<category><![CDATA[Хлебные крошки]]></category>

		<guid isPermaLink="false">http://dimox.name/wordpress-breadcrumbs-without-a-plugin/</guid>
		<description><![CDATA[&#8220;Хлебные крошки&#8221; - это важный элемент навигации веб-сайта, который повышает его юзабилити. Особенно это касается сайтов со сложной структурой. Я, к сожалению (а, может, и не к сожалению), не использую их на большинстве своих сайтов, возможно, потому, что у них слишком простая структура (для такого сайта, как этот, они, вроде бы, и не нужны).
Когда я [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Хлебные крошки&#8221; - это важный элемент навигации веб-сайта, который повышает его юзабилити. Особенно это касается сайтов со сложной структурой. Я, к сожалению (а, может, и не к сожалению), не использую их на большинстве своих сайтов, возможно, потому, что у них слишком простая структура (для такого сайта, как этот, они, вроде бы, и не нужны).</p>
<p>Когда я решаю какую-либо задачу на WordPress-сайте, то всегда <strong>стараюсь обходится без плагинов</strong>, где это бывает возможно. Зачастую одна и та же задача может быть решена с меньшим количеством кода и бывает менее ресурсоемкой по сравнению с применением плагинов (кстати, пользуясь случаем, рекомендую еще один мой блог - <a href="http://wphacks.name/" target="_blank">WPhacks.name</a>, на котором я публикую различные PHP-хаки для WordPress).</p>
<p>В Интернете я находил разные варианты реализации &#8220;хлебных крошек&#8221; без использования плагинов, но ни один из них меня не устроил, поскольку все они не показывали полную цепочку ссылок. Поэтому <strong>я создал свою функцию &#8220;хлебных крошек&#8221; для WordPress</strong>. И в данном посте хочу поделиться этой функцией с вами.</p>
<h3>Особенности функции</h3>
<ul>
<li>
<p><strong>Отображается полная цепочка ссылок</strong> до текущей страницы. Например, если текущая страница находится в рубрике второго уровня, то цепочка будет выглядеть следующим образом:</p>
<p><tt>Главная &raquo; Рубрика &raquo; Подрубрика &raquo; Название статьи</tt></p>
<p>Во всех решениях, которые я встречал (за исключением плагинов), такая цепочка выглядела вот так:</p>
<p><tt>Главная &raquo; Подрубрика &raquo; Название статьи</tt></p>
<p>Т.е. одно звено потеряно.</p>
<p>Аналогично у меня выглядят и &#8220;крошки&#8221; для страниц. К примеру, для страницы 3-го уровня вложенности цепочка будет такой:</p>
<p><tt>Главная &raquo; Страница 1-го уровня &raquo; Страница 2-го уровня &raquo; Страница 3-го уровня</tt></p>
</li>
<li>
<p>&#8220;Хлебные крошки&#8221; выводятся для следующих типов страниц WordPress-сайта:</p>
<ul>
<li>постраничная навигация с главной страницы (вида <tt>site.ru/page/2/</tt>);</li>
<li>архив рубрики;</li>
<li>архив тега;</li>
<li>архив за день;</li>
<li>архив за месяц;</li>
<li>архив за год;</li>
<li>архив автора;</li>
<li>страница;</li>
<li>пост;</li>
<li>результаты поиска;</li>
<li>страница с ошибкой 404.</li>
</ul>
</li>
<li>Добавляется порядковый номер страницы, если это 2-я или больше страница архивов.</li>
<li>Можно задать любой символ разделителя между ссылками.</li>
<li>Можно задать текст для ссылка &#8220;Главная&#8221;.</li>
<li>Используется отдельный CSS-класс для текущей позиции.</li>
</ul>
<h3>Функция &#8220;Хлебные крошки&#8221; для WordPress</h3>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;width:100%;height:300px"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">function</span> dimox_breadcrumbs<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; <span class="re0">$delimiter</span> <span class="sy0">=</span> <span class="st_h">'&amp;raquo;'</span><span class="sy0">;</span> <span class="co1">//разделить между ссылками</span><br />
&nbsp; <span class="re0">$name</span> <span class="sy0">=</span> <span class="st_h">'Главная'</span><span class="sy0">;</span> <span class="co1">//текст ссылка &quot;Главная&quot;</span><br />
&nbsp; <span class="re0">$currentBefore</span> <span class="sy0">=</span> <span class="st_h">'&lt;span class=&quot;current&quot;&gt;'</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$currentAfter</span> <span class="sy0">=</span> <span class="st_h">'&lt;/span&gt;'</span><span class="sy0">;</span><br />
<br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="sy0">!</span>is_home<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> <span class="sy0">!</span>is_front_page<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_paged<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; <span class="kw3">echo</span> <span class="st_h">'&lt;div id=&quot;crumbs&quot;&gt;'</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="kw3">global</span> <span class="re0">$post</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="re0">$home</span> <span class="sy0">=</span> get_bloginfo<span class="br0">&#40;</span><span class="st_h">'url'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw3">echo</span> <span class="st_h">'&lt;a href=&quot;'</span> <span class="sy0">.</span> <span class="re0">$home</span> <span class="sy0">.</span> <span class="st_h">'&quot;&gt;'</span> <span class="sy0">.</span> <span class="re0">$name</span> <span class="sy0">.</span> <span class="st_h">'&lt;/a&gt; '</span> <span class="sy0">.</span> <span class="re0">$delimiter</span> <span class="sy0">.</span> <span class="st_h">' '</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> is_category<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">global</span> <span class="re0">$wp_query</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$cat_obj</span> <span class="sy0">=</span> <span class="re0">$wp_query</span><span class="sy0">-&gt;</span><span class="me1">get_queried_object</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$thisCat</span> <span class="sy0">=</span> <span class="re0">$cat_obj</span><span class="sy0">-&gt;</span><span class="me1">term_id</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$thisCat</span> <span class="sy0">=</span> get_category<span class="br0">&#40;</span><span class="re0">$thisCat</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$parentCat</span> <span class="sy0">=</span> get_category<span class="br0">&#40;</span><span class="re0">$thisCat</span><span class="sy0">-&gt;</span><span class="me1">parent</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$thisCat</span><span class="sy0">-&gt;</span><span class="me1">parent</span> <span class="sy0">!=</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="kw3">echo</span><span class="br0">&#40;</span>get_category_parents<span class="br0">&#40;</span><span class="re0">$parentCat</span><span class="sy0">,</span> <span class="kw2">TRUE</span><span class="sy0">,</span> <span class="st_h">' '</span> <span class="sy0">.</span> <span class="re0">$delimiter</span> <span class="sy0">.</span> <span class="st_h">' '</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentBefore</span> <span class="sy0">.</span> <span class="st_h">'Archive by category &amp;#39;'</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; single_cat_title<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st_h">'&amp;#39;'</span> <span class="sy0">.</span> <span class="re0">$currentAfter</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span> is_day<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st_h">'&lt;a href=&quot;'</span> <span class="sy0">.</span> get_year_link<span class="br0">&#40;</span>get_the_time<span class="br0">&#40;</span><span class="st_h">'Y'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st_h">'&quot;&gt;'</span> <span class="sy0">.</span> get_the_time<span class="br0">&#40;</span><span class="st_h">'Y'</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st_h">'&lt;/a&gt; '</span> <span class="sy0">.</span> <span class="re0">$delimiter</span> <span class="sy0">.</span> <span class="st_h">' '</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st_h">'&lt;a href=&quot;'</span> <span class="sy0">.</span> get_month_link<span class="br0">&#40;</span>get_the_time<span class="br0">&#40;</span><span class="st_h">'Y'</span><span class="br0">&#41;</span><span class="sy0">,</span>get_the_time<span class="br0">&#40;</span><span class="st_h">'m'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st_h">'&quot;&gt;'</span> <span class="sy0">.</span> get_the_time<span class="br0">&#40;</span><span class="st_h">'F'</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st_h">'&lt;/a&gt; '</span> <span class="sy0">.</span> <span class="re0">$delimiter</span> <span class="sy0">.</span> <span class="st_h">' '</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentBefore</span> <span class="sy0">.</span> get_the_time<span class="br0">&#40;</span><span class="st_h">'d'</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="re0">$currentAfter</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span> is_month<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st_h">'&lt;a href=&quot;'</span> <span class="sy0">.</span> get_year_link<span class="br0">&#40;</span>get_the_time<span class="br0">&#40;</span><span class="st_h">'Y'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st_h">'&quot;&gt;'</span> <span class="sy0">.</span> get_the_time<span class="br0">&#40;</span><span class="st_h">'Y'</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st_h">'&lt;/a&gt; '</span> <span class="sy0">.</span> <span class="re0">$delimiter</span> <span class="sy0">.</span> <span class="st_h">' '</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentBefore</span> <span class="sy0">.</span> get_the_time<span class="br0">&#40;</span><span class="st_h">'F'</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="re0">$currentAfter</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span> is_year<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentBefore</span> <span class="sy0">.</span> get_the_time<span class="br0">&#40;</span><span class="st_h">'Y'</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="re0">$currentAfter</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span> is_single<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$cat</span> <span class="sy0">=</span> get_the_category<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$cat</span> <span class="sy0">=</span> <span class="re0">$cat</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> get_category_parents<span class="br0">&#40;</span><span class="re0">$cat</span><span class="sy0">,</span> <span class="kw2">TRUE</span><span class="sy0">,</span> <span class="st_h">' '</span> <span class="sy0">.</span> <span class="re0">$delimiter</span> <span class="sy0">.</span> <span class="st_h">' '</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentBefore</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; the_title<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentAfter</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span> is_page<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="sy0">!</span><span class="re0">$post</span><span class="sy0">-&gt;</span><span class="me1">post_parent</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentBefore</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; the_title<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentAfter</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span> is_page<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="re0">$post</span><span class="sy0">-&gt;</span><span class="me1">post_parent</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$parent_id</span> &nbsp;<span class="sy0">=</span> <span class="re0">$post</span><span class="sy0">-&gt;</span><span class="me1">post_parent</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$breadcrumbs</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">while</span> <span class="br0">&#40;</span><span class="re0">$parent_id</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$page</span> <span class="sy0">=</span> get_page<span class="br0">&#40;</span><span class="re0">$parent_id</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$breadcrumbs</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">'&lt;a href=&quot;'</span> <span class="sy0">.</span> get_permalink<span class="br0">&#40;</span><span class="re0">$page</span><span class="sy0">-&gt;</span><span class="me1">ID</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st_h">'&quot;&gt;'</span> <span class="sy0">.</span> get_the_title<span class="br0">&#40;</span><span class="re0">$page</span><span class="sy0">-&gt;</span><span class="me1">ID</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st_h">'&lt;/a&gt;'</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$parent_id</span> &nbsp;<span class="sy0">=</span> <span class="re0">$page</span><span class="sy0">-&gt;</span><span class="me1">post_parent</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$breadcrumbs</span> <span class="sy0">=</span> <span class="kw3">array_reverse</span><span class="br0">&#40;</span><span class="re0">$breadcrumbs</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$breadcrumbs</span> <span class="kw1">as</span> <span class="re0">$crumb</span><span class="br0">&#41;</span> <span class="kw3">echo</span> <span class="re0">$crumb</span> <span class="sy0">.</span> <span class="st_h">' '</span> <span class="sy0">.</span> <span class="re0">$delimiter</span> <span class="sy0">.</span> <span class="st_h">' '</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentBefore</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; the_title<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentAfter</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span> is_search<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentBefore</span> <span class="sy0">.</span> <span class="st_h">'Search results for &amp;#39;'</span> <span class="sy0">.</span> get_search_query<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st_h">'&amp;#39;'</span> <span class="sy0">.</span> <span class="re0">$currentAfter</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span> is_tag<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentBefore</span> <span class="sy0">.</span> <span class="st_h">'Posts tagged &amp;#39;'</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; single_tag_title<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st_h">'&amp;#39;'</span> <span class="sy0">.</span> <span class="re0">$currentAfter</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span> is_author<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">global</span> <span class="re0">$author</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$userdata</span> <span class="sy0">=</span> get_userdata<span class="br0">&#40;</span><span class="re0">$author</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentBefore</span> <span class="sy0">.</span> <span class="st_h">'Articles posted by '</span> <span class="sy0">.</span> <span class="re0">$userdata</span><span class="sy0">-&gt;</span><span class="me1">display_name</span> <span class="sy0">.</span> <span class="re0">$currentAfter</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span> is_404<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re0">$currentBefore</span> <span class="sy0">.</span> <span class="st_h">'Error 404'</span> <span class="sy0">.</span> <span class="re0">$currentAfter</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> get_query_var<span class="br0">&#40;</span><span class="st_h">'paged'</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> is_category<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_day<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_month<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_year<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_search<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_tag<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_author<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="kw3">echo</span> <span class="st_h">' ('</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> __<span class="br0">&#40;</span><span class="st_h">'Page'</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st_h">' '</span> <span class="sy0">.</span> get_query_var<span class="br0">&#40;</span><span class="st_h">'paged'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> is_category<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_day<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_month<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_year<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_search<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_tag<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">||</span> is_author<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="kw3">echo</span> <span class="st_h">')'</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="kw3">echo</span> <span class="st_h">'&lt;/div&gt;'</span><span class="sy0">;</span><br />
<br />
&nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>Функцию необходимо поместить в файл <tt>functions.php</tt> вашей WordPress-темы. После этого в то место шаблона, где хотите выводить &#8220;хлебные крошки&#8221;, добавьте следующий код:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">function_exists</span><span class="br0">&#40;</span><span class="st_h">'dimox_breadcrumbs'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> dimox_breadcrumbs<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></div></td></tr></tbody></table></div>
<p>Единственное, что теперь останется сделать - оформить их с помощью CSS. Для этого к блоку &#8220;хлебных крошек&#8221; предусмотрен идентификатор <tt>#crumbs</tt>, а для текущей &#8220;крошки&#8221; класс <tt>.current</tt>.</p>
<p><strong>P.S.</strong> Функция работает на <strong>WordPress, начиная с версии 2.5 и выше</strong>.</p>
<p><strong>P.P.S.</strong> Если вы публикуете посты сразу в несколько рубрик, то в цепочке будут отображаться все эти рубрики через запятую. Я посты публикую всегда только в одну рубрику, поэтому не пытался сделать так, чтобы отображалась только одна из рубрик.</p>
<hr />
<p>© Dimox, <a href="http://dimox.name">Свобода слова вебмастерского</a>, 2010. | <a href="http://dimox.name/wordpress-breadcrumbs-without-a-plugin/">&#8220;Хлебные крошки&#8221; для WordPress без использования плагина</a></p><img src="http://feeds.feedburner.com/~r/Dimox/~4/UW9JX8oXr28" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dimox.name/wordpress-breadcrumbs-without-a-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP mxGet - быстрый перенос файлов с одного хостинга на другой</title>
		<link>http://dimox.name/php-mxget-online-download-manager/</link>
		<comments>http://dimox.name/php-mxget-online-download-manager/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 11:12:55 +0000</pubDate>
		<dc:creator>Dimox</dc:creator>
		
		<category><![CDATA[Интернет]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[PHP mxGet]]></category>

		<category><![CDATA[Автоматизация]]></category>

		<category><![CDATA[Скрипт]]></category>

		<category><![CDATA[Хостинг]]></category>

		<guid isPermaLink="false">http://dimox.name/?p=973</guid>
		<description><![CDATA[Поскольку за последние несколько лет я постоянно &#8220;прыгаю&#8221; от одного хостинг-провайдера к другому, то имел и имею дело с такими панелями управления хостингом, как cPanel и ISPmanager. Если в ISPmanager есть все, что мне нужно (это просто обалденная панелька), то в cPanel есть один заметный минус - отсутствует функция загрузки файлов с другого сайта.
И что [...]]]></description>
			<content:encoded><![CDATA[<p>Поскольку за последние несколько лет я постоянно &#8220;прыгаю&#8221; от одного хостинг-провайдера к другому, то имел и имею дело с такими панелями управления хостингом, как cPanel и ISPmanager. Если в ISPmanager есть все, что мне нужно (это просто обалденная панелька), то в <strong>cPanel</strong> есть один заметный минус - <strong>отсутствует функция загрузки файлов с другого сайта</strong>.</p>
<p>И что же делать, если нужно с какого-то другого сайта закачать на фтп файл размером мегабайт так под 100? Скачать этот файл к себе на комп, а потом загрузить его на фтп сайта?</p>
<p>Но в этом случае я вижу несколько возможных минусов: интернет-трафик (да, у многих сейчас безлимитка, но у кого-то ее нет, да и размер файла может быть гораздо больше 100 мегабайт), время потраченное на загрузку файла к себе и затем на закачку на сайт (при этом исходящая скорость Интернета может быть значительно ниже входящей и на upload может уйти уйма времени).</p>
<p>К счастью, существует удобный способ, который позволяет обойти вышеназванные минусы стороной.</p>
<p><strong>В этом поможет замечательная веб-утилита PHP mxGet</strong>. Она очень проста и удобна в использовании.</p>
<p>Принцип действия <strong>PHP mxGet</strong> заключается в следующем:</p>
<ol>
<li>загружаем утилиту в отдельную папку на своем сайте (рекомендую поставить на папку права 777, т.к. утилита создает свой файл) и открываем ее в браузере;</li>
<li>
<p>указываем ссылку к файлу;</p>
<p><img src="http://dimox.name/wp-content/uploads/2010/01/php-mxget_1.png" width="520" height="183" alt="PHP mxGet" class="aligncenter" /></p>
</li>
<li>
<p>указываем в настройках локальную папку, в которую хотим сохранить файл;</p>
<p><img src="http://dimox.name/wp-content/uploads/2010/01/php-mxget_2.png" width="520" height="234" alt="PHP mxGet" class="aligncenter" /></p>
</li>
<li>нажимаем &#8220;Скачать&#8221;;</li>
<li>
<p>всего немного времени, и&#8230; вуаля&#8230; нужный файл лежит на фтп вашего хостинга.</p>
<p><img src="http://dimox.name/wp-content/uploads/2010/01/php-mxget_3.png" width="520" height="179" alt="PHP mxGet" class="aligncenter" /></p>
</li>
</ol>
<p>Таким образом файл перекачивается с одного хостинга на другой, минуя ваш компьютер. При этом скорость закачки файлов не зависит от скорости вашего интернет-соединения, а зависит она, насколько я понимаю, от пропускной способности интернет-канала между двумя хостингами.</p>
<h3>Скачать PHP mxGet</h3>
<div class="download">
<h4><a href="http://dimox.name/download-manager.php?id=48">PHP mxGet v.0.35 - онлайновый download-менеджер</a><br /> (быстрая перекачка файлов с одного хоста на другой)</h4>
<p><strong>Загрузок:</strong>  258 | <strong>Размер:</strong> 23 Кб</p>
</div>
<p>Несмотря на то, что утилита <strong>PHP mxGet</strong> была создана в 2005 году и с тех пор не обновлялась, она и по сей день не потеряла своей актуальности.</p>
<hr />
<p>© Dimox, <a href="http://dimox.name">Свобода слова вебмастерского</a>, 2010. | <a href="http://dimox.name/php-mxget-online-download-manager/">PHP mxGet - быстрый перенос файлов с одного хостинга на другой</a></p><img src="http://feeds.feedburner.com/~r/Dimox/~4/fA6RO0prBi0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dimox.name/php-mxget-online-download-manager/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP-функция для WordPress “Ответ на комментарий %username%”</title>
		<link>http://dimox.name/wordpress-php-function-replied-to-username-comment/</link>
		<comments>http://dimox.name/wordpress-php-function-replied-to-username-comment/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 13:05:42 +0000</pubDate>
		<dc:creator>Dimox</dc:creator>
		
		<category><![CDATA[WordPress]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Скрипт]]></category>

		<guid isPermaLink="false">http://dimox.name/?p=970</guid>
		<description><![CDATA[ Я придумал и реализовал очередную полезную фигнюшку для WordPress  ツ
Суть
Мне очень давно не хватало в WordPress нижеследующих двух простых и, вроде бы, банальных вещей, которые разработчики движка почему-то не додумаются сделать по умолчанию.
Обе функции касаются письма, которое получает администратор сайта после того, как на блоге был добавлен новый комментарий.
Вот о чем я говорю:

Если [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://dimox.name/wp-content/uploads/2009/12/replied-to-comment2.png" alt="PHP-функция для WordPress 'Ответ на комментарий %username%'" width="260" height="350" class="alignright" /> Я придумал и реализовал очередную полезную фигнюшку для WordPress  ツ</p>
<h3>Суть</h3>
<p>Мне очень давно не хватало в WordPress нижеследующих двух простых и, вроде бы, банальных вещей, которые разработчики движка почему-то не додумаются сделать по умолчанию.</p>
<p><strong>Обе функции касаются письма, которое получает администратор сайта после того, как на блоге был добавлен новый комментарий.</strong></p>
<p>Вот о чем я говорю:</p>
<ol>
<li>Если на блоге активирована опция &#8220;древовидные комментарии&#8221;, было бы очень здорово в письме видеть <strong>текст о том, кому был оставлен комментарий</strong>: мне, как админу, или же кому-то из комментирующих посетителей. По тексту можно будет сразу понять, не заходя в блог, требует этот комментарий моего ответа или нет.</li>
<li>Так же было бы здорово, если в том же самом письме будет присутствовать <strong>пряма ссылка на добавленный комментарий</strong>. Опять же это может быть в первую очередь полезно при древовидных комментах. Такая ссылка позволит не искать нужный коммент (ведь он может быть и не в конце списка комментов), а сразу же перейти к нему.</li>
</ol>
<p>Практика использования этих двух &#8220;добавочек&#8221; на <a href="http://dimox.name/">данном блоге</a> показала, что это весьма полезные штуки. Я уже привык к ним, и в других моих блогах таких функций мне теперь не хватает.</p>
<h3>Код PHP-функции</h3>
<p>Реализация обоих вещей оказалась довольно простой (эту функцию необходимо запихнуть в файл <tt>functions.php</tt> вашей темы, если файла нет, то создать его, не забыв добавить <tt>&lt;?php</tt> и <tt>?></tt> соответственно в начале и в конце файла):</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">function</span> repliedToComment<span class="br0">&#40;</span><span class="re0">$text</span><span class="sy0">,</span> <span class="re0">$comment_id</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="re0">$comment</span> <span class="sy0">=</span> get_comment<span class="br0">&#40;</span><span class="re0">$comment_id</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$parent_id</span> <span class="sy0">=</span> <span class="re0">$comment</span><span class="sy0">-&gt;</span><span class="me1">comment_parent</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$parentComment</span> <span class="sy0">=</span> get_comment<span class="br0">&#40;</span><span class="re0">$parent_id</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$parent_id</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$parentComment</span><span class="sy0">-&gt;</span><span class="me1">user_id</span> <span class="sy0">==</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$text</span> <span class="sy0">.=</span> <span class="st0">&quot;<span class="es1">\r</span><span class="es1">\n</span>Это ответ на мой комментарий.&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$text</span> <span class="sy0">.=</span> <span class="st0">&quot;<span class="es1">\r</span><span class="es1">\n</span>В ответ на комментарий пользователя: &quot;</span> <span class="sy0">.</span> <span class="re0">$parentComment</span><span class="sy0">-&gt;</span><span class="me1">comment_author</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="re0">$approved</span> <span class="sy0">=</span> <span class="st_h">''</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$comment</span><span class="sy0">-&gt;</span><span class="me1">comment_approved</span> <span class="sy0">!=</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="re0">$approved</span> <span class="sy0">=</span> <span class="st_h">' (необходимо одобрить)'</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$text</span> <span class="sy0">.=</span> <span class="st0">&quot;<span class="es1">\r</span><span class="es1">\n</span>Ответить&quot;</span> <span class="sy0">.</span> <span class="re0">$approved</span> <span class="sy0">.</span> <span class="st0">&quot;: &quot;</span> <span class="sy0">.</span> get_comment_link<span class="br0">&#40;</span><span class="re0">$comment</span><span class="sy0">-&gt;</span><span class="me1">comment_ID</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es1">\r</span><span class="es1">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">return</span> <span class="re0">$text</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
add_filter<span class="br0">&#40;</span><span class="st_h">'comment_notification_text'</span><span class="sy0">,</span> <span class="st_h">'repliedToComment'</span><span class="sy0">,</span> <span class="nu0">10</span><span class="sy0">,</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
add_filter<span class="br0">&#40;</span><span class="st_h">'comment_moderation_text'</span><span class="sy0">,</span> <span class="st_h">'repliedToComment'</span><span class="sy0">,</span> <span class="nu0">10</span><span class="sy0">,</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>Пожалуй, единственное, на что стоит обратить внимание в этом коде, строка:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$parentComment</span><span class="sy0">-&gt;</span><span class="me1">user_id</span> <span class="sy0">==</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></td></tr></tbody></table></div>
<p>где <strong>цифра 1 - это идентификатор пользователя</strong>. Думаю, в большинстве случаев он будет таким же.</p>
<h3>Как выглядит результат</h3>
<p>Соответствующий текст добавляется к конце письма, и выглядит это примерно следующим образом (кликабельно):</p>
<p><a href="http://dimox.name/wp-content/uploads/2009/12/replied-to-comment.png" target="_blank"><img src="http://dimox.name/wp-content/uploads/2009/12/replied-to-comment-540x248.png" alt="PHP-функция для WordPress 'Ответ на комментарий %username%'" title="PHP-функция для WordPress 'Ответ на комментарий %username%'" width="540" height="248" class="aligncenter" /></a></p>
<p>Если это ответ на коммент кого-то из посетителей, то видим текст &#8220;<tt>В ответ на комментарий пользователя: %username%</tt>&#8220;. Если же это ответ на коммент админа, то текст будет таким: &#8220;<tt>Это ответ на мой комментарий.</tt>&#8221; Текст, естественно, можно заменить на какой-то другой.</p>
<p>Плюсом я еще перед прямой ссылкой на комментарий добавил напоминалочку &#8220;<tt>необходимо одобрить</tt>&#8220;, если комментарий ожидает модерации.</p>
<h3>Что дальше?</h3>
<ol>
<li>Есть мысль сделать из этого мой очередной плагин.</li>
<li>Среди пользователей WordPress очень популярен плагин &#8220;<a href="http://txfx.net/wordpress-plugins/subscribe-to-comments/" target="_blank">Subscribe To Comments</a>&#8221; (функционал которого, я считаю, уже давно должен быть частью движка), который отправляет письма посетителям сайта, если был оставлен новый коммент. Так вот, если реализовать 2 вышеописанные вещи и для этого плагина, тогда было бы вообще супер - полезность функции существенно бы возросла. Думаю, что это вполне реально сделать.</li>
</ol>
<hr />
<p>© Dimox, <a href="http://dimox.name">Свобода слова вебмастерского</a>, 2009. | <a href="http://dimox.name/wordpress-php-function-replied-to-username-comment/">PHP-функция для WordPress &#8220;Ответ на комментарий %username%&#8221;</a></p><img src="http://feeds.feedburner.com/~r/Dimox/~4/4reWljBBRs8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dimox.name/wordpress-php-function-replied-to-username-comment/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CSS-трюк: IE, таблица и “резиновые” изображения</title>
		<link>http://dimox.name/ie-table-and-liquid-images/</link>
		<comments>http://dimox.name/ie-table-and-liquid-images/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 13:00:49 +0000</pubDate>
		<dc:creator>Dimox</dc:creator>
		
		<category><![CDATA[CSS-верстка]]></category>

		<category><![CDATA[CSS]]></category>

		<category><![CDATA[Internet Explorer]]></category>

		<category><![CDATA[Верстка]]></category>

		<category><![CDATA[Трюк]]></category>

		<guid isPermaLink="false">http://dimox.name/?p=969</guid>
		<description><![CDATA[Антон Молодой подкинул мне идею для этого поста. Он столкнулся с проблемой, с которой с моей косвенной помощью сам же и справился.
Я с этим багом (да, речь пойдет об очередном баге IE) никогда не сталкивался, поэтому решил написать об этом пост, во-первых, как шпаргалку для себя на будущее, во-вторых, вдруг кто-то из читателей и посетителей [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://molodoy.net/" target="_blank">Антон Молодой</a> подкинул мне идею для этого поста. Он столкнулся с проблемой, с которой с моей косвенной помощью сам же и справился.</p>
<p>Я с этим багом (да, речь пойдет об очередном баге IE) никогда не сталкивался, поэтому решил написать об этом пост, во-первых, как шпаргалку для себя на будущее, во-вторых, вдруг кто-то из читателей и посетителей блога однажды столкнется с такой же проблемой.</p>
<p>Рассмотрим пример. <strong>Суть заключается в следующем:</strong></p>
<ul>
<li>У нас имеется &#8220;резиновая&#8221; страница, которая растягивается на всю ширину окна браузера.</li>
<li>Имеем таблицу с шириной 100%.</li>
<li>
В таблице имеем ряд из 5-ти изображений (в нашем примере их реальная ширина - 250 пикселей), и необходимо, чтобы при изменении ширины окна браузера эти изображения растягивались или сужались пропорционально, заполняя всю ширину таблицы. Реализуется это следующим простым способом:</p>
<p><strong>HTML:</strong></p>
<div class="codecolorer-container html4strict " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="html4strict codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sc2">&lt;<span class="kw2">table</span>&gt;</span><br />
&nbsp; <span class="sc2">&lt;<span class="kw2">tr</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">td</span>&gt;&lt;<span class="kw2">img</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;1.jpg&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span> <span class="sy0">/</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">td</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">td</span>&gt;&lt;<span class="kw2">img</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;2.jpg&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span> <span class="sy0">/</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">td</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">td</span>&gt;&lt;<span class="kw2">img</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;3.jpg&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span> <span class="sy0">/</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">td</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">td</span>&gt;&lt;<span class="kw2">img</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;4.jpg&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span> <span class="sy0">/</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">td</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">td</span>&gt;&lt;<span class="kw2">img</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;5.jpg&quot;</span> <span class="kw3">alt</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span> <span class="sy0">/</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">td</span>&gt;</span><br />
&nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">tr</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">table</span>&gt;</span></div></td></tr></tbody></table></div>
<p><strong>CSS:</strong></p>
<div class="codecolorer-container css " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="css codecolorer" style="font-family:Monaco,Lucida Console,monospace">table <span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span> <span class="coMULTI">/* растягиваем таблицу на всю ширину контента */</span><br />
&nbsp; <span class="kw1">border-collapse</span><span class="sy0">:</span> <span class="kw2">collapse</span><span class="sy0">;</span> <span class="coMULTI">/* схлопываем границы ячеек */</span><br />
<span class="br0">&#125;</span><br />
table td <span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">padding</span><span class="sy0">:</span> <span class="nu0">0</span> <span class="re3">10px</span><span class="sy0">;</span> <span class="coMULTI">/* для красоты добавляем отступы в ячейках */</span><br />
<span class="br0">&#125;</span><br />
table img <span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span> <span class="coMULTI">/* растягиваем изображение на всю ширину ячейки */</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
</li>
</ul>
<p>Посмотрите на <a href="http://dimox.name/examples/ie-table-and-liquid-images/demo1.html">живой пример вышеописанного</a>.</p>
<p>Все замечательно, за исключением одного &#8220;но&#8221; - <strong>если смотреть этот пример в браузере IE6 или IE7</strong>, вы заметите, что <strong>при сужении окна браузера ширина изображений в определенный момент &#8220;застревает&#8221; и не они не сужаются дальше</strong>, в результате чего таблица вылазит за пределы контента.</p>
<p>Это не что иное, как очередной баг всеми &#8220;любимого&#8221; браузера - изображения не сужаются дальше их фактического размера. В нашем случае это 250 пикселей.</p>
<p>Ну а <strong>трюк, который позволяет исправить это недоразумение</strong>, заключается всего в одной строчке CSS-кода, который нужно применить к таблице, в которой расположены наши изображения:</p>
<div class="codecolorer-container css " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="css codecolorer" style="font-family:Monaco,Lucida Console,monospace">table <span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">width</span><span class="sy0">:</span> <span class="re3"><span class="nu0">100</span>%</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">border-collapse</span><span class="sy0">:</span> <span class="kw2">collapse</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">table-layout</span><span class="sy0">:</span> <span class="kw2">fixed</span><span class="sy0">;</span> <span class="coMULTI">/* вот оно, лекарство от недуга IE6 и IE7 */</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>Теперь посмотрите на тот же самый <a href="http://dimox.name/examples/ie-table-and-liquid-images/demo2.html">пример, но с использованием этого CSS-трюка</a>.</p>
<hr />
<p>© Dimox, <a href="http://dimox.name">Свобода слова вебмастерского</a>, 2009. | <a href="http://dimox.name/ie-table-and-liquid-images/">CSS-трюк: IE, таблица и &#8220;резиновые&#8221; изображения</a></p><img src="http://feeds.feedburner.com/~r/Dimox/~4/0SJajZ5j94c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dimox.name/ie-table-and-liquid-images/feed/</wfw:commentRss>
		</item>
		<item>
		<title>jQuery-скрипт для куков при использовании кэша MaxCache на WordPress</title>
		<link>http://dimox.name/jquery-script-cookies-wordpress-maxcache/</link>
		<comments>http://dimox.name/jquery-script-cookies-wordpress-maxcache/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 06:13:19 +0000</pubDate>
		<dc:creator>Dimox</dc:creator>
		
		<category><![CDATA[jQuery]]></category>

		<category><![CDATA[WordPress]]></category>

		<category><![CDATA[Кэш]]></category>

		<category><![CDATA[Скрипт]]></category>

		<guid isPermaLink="false">http://dimox.name/?p=968</guid>
		<description><![CDATA[Этот пост адресован пользователям WordPress, у которых стоит кэширование с помощь MaxCache.
WordPress имеет в своем функционале две очень хорошие особенности, которые повышают юзабилити сайта для посетителей, оставляющих комментарии:

Однажды оставив одобренный администратором сайта комментарий, посетитель избавляется от необходимости при каждом следующем комментарии вновь вводить свои данные, такие, как имя, e-mail, и адрес сайта.
Если добавляемый комментарий уходит [...]]]></description>
			<content:encoded><![CDATA[<p><em>Этот пост адресован пользователям WordPress, у которых стоит кэширование с помощь <a href="http://maxsite.org/page/maxsite-cache" target="_blank">MaxCache</a>.</em></p>
<p><strong>WordPress имеет в своем функционале две очень хорошие особенности</strong>, которые повышают юзабилити сайта для посетителей, оставляющих комментарии:</p>
<ol>
<li>Однажды оставив одобренный администратором сайта комментарий, посетитель избавляется от необходимости при каждом следующем комментарии вновь вводить свои данные, такие, как имя, e-mail, и адрес сайта.</li>
<li>Если добавляемый комментарий уходит на модерацию, то комментирующий все равно видит его на сайте, обычно с пометкой &#8220;коммент ожидает модерации&#8221;. Это дает посетителю понять, что комментарий успешно добавлен и не попал в спам-фильтр.</li>
</ol>
<h3>Проблема</h3>
<p>Не так давно известный программист <a href="http://maxsite.org/" target="_blank">Максим</a> создал очень полезный и нужный скрипт - <a href="http://maxsite.org/page/maxsite-cache" target="_blank">кэш для WordPress (MaxCache)</a>, который существенно снижает нагрузку на сервер хостинга. Для моего тормознутого хостинга, на котором в данный момент мой блог <a href="http://dimox.name/">dimox.name</a> вынужден, так сказать, волочить свое существование, этот скрипт оказался спасением.</p>
<p>Но речь сейчас не о хостинге и не о скрипте MaxCache. Суть поста заключается в нижеследующем.</p>
<p><strong>При использовании кэша MaxCache WordPress-сайт теряет те самые 2 замечательные функции, о которых я написал выше.</strong> Это связано с особенностью работы MaxCache, и, к сожалению, на уровне скрипта ничего сделать нельзя.</p>
<p>После установки кэша я неоднократно видел комментарии, в которых мои постоянные читатели с сожалением сообщали о необходимости каждый раз снова вводить свои данные.</p>
<p>Я всегда стараюсь идти на встречу посетителям своих сайтов, поэтому я нашел выход из данной ситуации - <strong>написал на jQuery скрипт, который выполняет 2 утерянные после установки кэша функции</strong>.</p>
<p>Далее я подробненько опишу код скрипта. Если у вас нет желания все это читать, то можете сразу <a href="#result">&#8220;перескочить&#8221; на конечный код скрипта</a>.</p>
<h3>Функция №1 - &#8220;вспоминаем&#8221; комментирующего</h3>
<p>Чтобы избежать возможных конфликтов jQuery с другими фреймворками, создадим вот такую переменную, которую в дальнейшем и будем использовать:</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">var</span> $j <span class="sy0">=</span> jQuery.<span class="me1">noConflict</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>Ну а все содержимое скрипта будем размещать вот в такую функцию, которая выполнит находящийся в ней код после загрузки веб-страницы:</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace">$j<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> ... <span class="br0">&#125;</span><span class="br0">&#41;</span></div></td></tr></tbody></table></div>
<p>Для того, чтобы &#8220;вспомнить&#8221; нашего посетителя, который уже оставлял комментарий, мы создадим куки, в которых запишем его имя, e-mail и адрес сайта. Работать мы будешь, соответственно, с формой комментирования WordPress. Ее HTML-код выглядит примерно следующим образом (показываю только теги, необходимы нам):</p>
<div id="condition1">
<div class="codecolorer-container html4strict " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="html4strict codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sc2">&lt;<span class="kw2">form</span> <span class="kw3">action</span><span class="sy0">=</span><span class="st0">&quot;/wp-comments-post.php&quot;</span> <span class="kw3">method</span><span class="sy0">=</span><span class="st0">&quot;post&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;commentform&quot;</span>&gt;</span><br />
&nbsp; <span class="sc2">&lt;<span class="kw2">input</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;author&quot;</span> <span class="sy0">/</span>&gt;</span><br />
&nbsp; <span class="sc2">&lt;<span class="kw2">input</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;email&quot;</span> <span class="sy0">/</span>&gt;</span><br />
&nbsp; <span class="sc2">&lt;<span class="kw2">input</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;url&quot;</span> <span class="sy0">/</span>&gt;</span><br />
&nbsp; ...<br />
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">form</span>&gt;</span></div></td></tr></tbody></table></div>
</div>
<p>Чтобы скрипт, который мы получим в результате, у вас работал, <strong>убедитесь, что в вашем шаблоне WordPress у тега <tt>form</tt> используется точно такой же идентификатор (<tt>id=&#8221;commentform&#8221;</tt></strong>).</p>
<p>У каждого <tt>input</tt>-тега в этой форме есть неизменный параметр <tt>name=&#8221;"</tt>, за которые мы и будем цепляться при написании скрипта.</p>
<p>Куки мы будет создавать в тот момент, когда комментирующий нажимает кнопку &#8220;Добавить комментарий&#8221;, для этого воспользуемся вот такой функцией:</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace">$j<span class="br0">&#40;</span><span class="st0">'#commentform'</span><span class="br0">&#41;</span>.<span class="me1">submit</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> ... <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>В ней мы считаем значения полей <tt>input[name=&#8221;author&#8221;]</tt>, <tt>input[name=&#8221;email&#8221;]</tt>, <tt>input[name=&#8221;url&#8221;]</tt> и с помощью функции <tt>createCookie()</tt> (ее код я приведу в конце, дабы не раздувать размер статьи) поместим их в куки браузера:</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace">$j<span class="br0">&#40;</span><span class="st0">'#commentform'</span><span class="br0">&#41;</span>.<span class="me1">submit</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_author'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;author&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_email'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;email&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_url'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;url&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>В результате в браузере пользователя появляются куки со следующими названиями: <tt>wp_commenter_author</tt>, <tt>wp_commenter_email</tt> и <tt>wp_commenter_url</tt>. Цифра 365 указывает на количество дней хранения этих куков.</p>
<p>Можно было так и оставить вышеуказанный код создания куков, но в ходе тестирования обнаружился следующий момент. Как вы знаете, если вы залогинены на своем блоге, то при добавлении комментария поля имя/е-mail/сайт за ненадобностью не отображаются. Поэтому, поскольку этих полей нет, то в 3-х создаваемых куках записывается значение &#8220;undifined&#8221; (т.е. значение не определено). А, поскольку, далее мы будем эти куки считывать, то нам таких неопределенностей необходимо избежать. Поэтому мы делаем это следующим образом:</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace">$j<span class="br0">&#40;</span><span class="st0">'#commentform'</span><span class="br0">&#41;</span>.<span class="me1">submit</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>$j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;author&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#41;</span> createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_author'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;author&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>$j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;email&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#41;</span> createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_email'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;email&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>$j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;url&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#41;</span> createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_url'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;url&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>Т.е. условием вида <tt>if ($j(&#8217;input[name=&#8221;author&#8221;]&#8217;).length)</tt> мы проверяем существования 3-х полей, и, если они есть на странице (т.е. это не залогиненный пользователь), то создаем куки со значениями данных полей.</p>
<p>Хорошо, куки создали. Теперь нужно их считать для последующий подстановки в эти поля. Создадим переменные, в которые сразу же заносим значения наших кук (код функции <tt>readCookie()</tt> будет приведен также в конце):</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">var</span> author <span class="sy0">=</span> readCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_author'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw2">var</span> email <span class="sy0">=</span> readCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_email'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw2">var</span> url <span class="sy0">=</span> readCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_url'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>Куки прочитали, теперь нужно заполнить ими 3 наших поля (имя/е-mail/сайт):</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span> <span class="br0">&#40;</span>author<span class="br0">&#41;</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;author&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span>author<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span>email<span class="br0">&#41;</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;email&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span>email<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span>url<span class="br0">&#41;</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;url&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span>url<span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>Условие вида <tt>if (author)</tt> говорит нам, что, если кука существует в браузере пользователя, то мы вставляем ее значение в соответствующее поле. Эта проверка необходима, чтобы избежать ошибки, если кук нет.</p>
<p>В результате мы получаем вот такой <strong>конечный скрипт, который реализует 1-ю функцию</strong> - запоминает данные, введенные комментирующим, и в последствии автоматически подставляет их в поля.</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">var</span> $j <span class="sy0">=</span> jQuery.<span class="me1">noConflict</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
$j<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; <span class="kw2">var</span> author <span class="sy0">=</span> readCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_author'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw2">var</span> email <span class="sy0">=</span> readCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_email'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw2">var</span> url <span class="sy0">=</span> readCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_url'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>author<span class="br0">&#41;</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;author&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span>author<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>email<span class="br0">&#41;</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;email&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span>email<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>url<span class="br0">&#41;</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;url&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span>url<span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; $j<span class="br0">&#40;</span><span class="st0">'#commentform'</span><span class="br0">&#41;</span>.<span class="me1">submit</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>$j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;author&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#41;</span> createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_author'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;author&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>$j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;email&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#41;</span> createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_email'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;email&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>$j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;url&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#41;</span> createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_url'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;url&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="br0">&#125;</span><span class="br0">&#41;</span></div></td></tr></tbody></table></div>
<p>Можно было бы и остановится на таком скрипте. Но, ведь у нас еще есть и вторая задача. Дело в том, что при использовании MaxCache, если комментарий уходит на модерацию, то <strong>комментирующий не видит своего комментария на странице</strong>, (как это бывает, если кэш не используется). В результате некоторые товарищи думают, что комментарий ушел в спам (или просто что-то пошло не так) и <strong>отправляют комментарий заново по нескольку раз</strong>.</p>
<p>Чтобы подобного избежать, мы доработаем наш скрипт.</p>
<h3 id="condition2">Функция №2 - даем знать, что комментарий добавлен</h3>
<p>Сразу отмечу, что, <strong>для того, чтобы работала нижеследующая часть кода, необходимо, чтобы в шаблоне комментариев стояла якорь-ссылка для каждого комментария</strong>, т.е. в PHP-коде это выглядит примерно следующим образом:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace">&lt;a href=&quot;<span class="kw2">&lt;?php</span> <span class="kw3">echo</span> <span class="kw3">htmlspecialchars</span><span class="br0">&#40;</span> get_comment_link<span class="br0">&#40;</span> <span class="re0">$comment</span><span class="sy0">-&gt;</span><span class="me1">comment_ID</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="sy1">?&gt;</span>&quot;&gt;<span class="kw2">&lt;?php</span> <span class="kw3">printf</span><span class="br0">&#40;</span>__<span class="br0">&#40;</span><span class="st_h">'%1$s at %2$s'</span><span class="br0">&#41;</span><span class="sy0">,</span> get_comment_date<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> &nbsp;get_comment_time<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>&lt;/a&gt;</div></td></tr></tbody></table></div>
<p>А если смотреть исходный HTML-код страницы WordPress-сайта, то должен быть примерно такой код:</p>
<div class="codecolorer-container html4strict " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="html4strict codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sc2">&lt;<span class="kw2">a</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;адрес_страницы/#comment-123&quot;</span> <span class="kw3">title</span><span class="sy0">=</span><span class="st0">&quot;02 февраля, 2008 в 10:06 пп&quot;</span>&gt;</span>текст ссылки<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">a</span>&gt;</span></div></td></tr></tbody></table></div>
<p>Сначала мы добавим новую куку, которая будет создаваться также при нажатии на кнопку &#8220;Добавить комментарий&#8221; и создадим переменную, в которую ее будем считывать:</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">var</span> submitCheck <span class="sy0">=</span> readCookie<span class="br0">&#40;</span><span class="st0">'wp_submit_check'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
$j<span class="br0">&#40;</span><span class="st0">'#commentform'</span><span class="br0">&#41;</span>.<span class="me1">submit</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; ...<br />
&nbsp; <span class="me1">createCookie</span><span class="br0">&#40;</span><span class="st0">'wp_submit_check'</span><span class="sy0">,</span> <span class="st0">'1'</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>Ее значение ставим равным &#8220;1&#8243; и срок ее хранения - 1 день.</p>
<p>Все, что мы будем делать дальше, будет работать только при условии, что значение куки &#8220;wp_submit_check&#8221; равно &#8220;1&#8243;.</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%"><table><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span> <span class="br0">&#40;</span>submitCheck <span class="sy0">==</span> <span class="st0">'1'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> ... <span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>А кука эта когда у нас появляется? Правильно - при отправке формы. Т.е. все манипуляции с кукой <tt>wp_submit_check</tt> сделаны для того, чтобы выполнять нижеследующие действия <strong>только тогда, когда отправлен комментарий, и посетителю нужно об этом сообщить</strong>.</p>
<p>Если кратко на словах, то мы будем делать следующее - после добавления комментария посетитель перенаправляется на страницу с адресом вида <tt>http://site.ru/postname/#comment-123</tt>, где цифра - это идентификатор добавленного комментария. Далее проверяем, есть ли уже на странице ссылка с точно таким же якорем (<tt>#comment-123</tt>), если нет, то показываем посетителю сообщение о том, что его комментарий добавлен.</p>
<p>Дальнейшие комментарии напишу в самом скрипте:</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%;height:300px"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span> <span class="br0">&#40;</span>submitCheck <span class="sy0">==</span> <span class="st0">'1'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; <span class="co1">// считываем URL из адресной строки браузера и заносим в переменную</span><br />
&nbsp; <span class="kw2">var</span> href <span class="sy0">=</span> window.<span class="me1">location</span>.<span class="me1">href</span><span class="sy0">;</span><br />
<br />
&nbsp; <span class="co1">// проверяем, находимся ли мы на странице вида http://site.ru/postname/#comment-123</span><br />
&nbsp; <span class="co1">// (страница с таким адресом открывается всегда при добавлении комментария в WordPress)</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="co2">/.+#comment-(\d+)/ig</span>.<span class="me1">test</span><span class="br0">&#40;</span>href<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; <span class="co1">// получаем цифру из URL в адресной строке,</span><br />
&nbsp; &nbsp; <span class="co1">// которая стоит после &quot;#comment-&quot;,</span><br />
&nbsp; &nbsp; <span class="co1">// и помещаем ее в переменную</span><br />
&nbsp; &nbsp; <span class="kw2">var</span> cid <span class="sy0">=</span> href.<span class="me1">replace</span><span class="br0">&#40;</span><span class="co2">/.+#comment-(\d+)/ig</span><span class="sy0">,</span> <span class="st0">'$1'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="co1">// создаем регулярное выражение, которое будем использовать дальше,</span><br />
&nbsp; &nbsp; <span class="co1">// и заносим его в переменную reg</span><br />
&nbsp; &nbsp; <span class="kw2">var</span> reg <span class="sy0">=</span> <span class="kw2">new</span> RegExp<span class="br0">&#40;</span><span class="st0">'#comment-'</span> <span class="sy0">+</span> cid<span class="sy0">,</span><span class="st0">'ig'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="co1">// переменная, значение которой будем менять,</span><br />
&nbsp; &nbsp; <span class="co1">// если ссылка с якорем найдется</span><br />
&nbsp; &nbsp; <span class="kw2">var</span> commentIdFind <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="co1">// пробегаемся по каждой ссылке в комментариях</span><br />
&nbsp; &nbsp; $j<span class="br0">&#40;</span><span class="st0">'#commentlist a'</span><span class="br0">&#41;</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span class="co1">// тестируем URL ссылки (атрибут href) с помощью</span><br />
&nbsp; &nbsp; &nbsp; <span class="co1">// регулярного выражения reg (см. выше)</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>reg.<span class="me1">test</span><span class="br0">&#40;</span>$j<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">'href'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// если нашли такую ссылку с якорем из адресной строки</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// (а это значит, что коммент выведен на страницу и ничего</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// дополнительно показывать посетителю не нужно),</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// то переменной commentIdFind ставим значение = 1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// и удаляем куку wp_submit_check</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; commentIdFind <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; eraseCookie<span class="br0">&#40;</span><span class="st0">'wp_submit_check'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><br />
<br />
&nbsp; &nbsp; <span class="co1">// если commentIdFind = 0, получается, что ссылка не была найдена,</span><br />
&nbsp; &nbsp; <span class="co1">// значит комментарий не выведен на страницу, и нужно показать сообщение</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>commentIdFind <span class="sy0">==</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span class="co1">// выводим сообщение путем добавления тега &lt;li&gt;&lt;/li&gt; в конец списка с комментариями</span><br />
&nbsp; &nbsp; &nbsp; <span class="co1">// и назначаем ему идентификатор вида comment-123,</span><br />
&nbsp; &nbsp; &nbsp; <span class="co1">// где вместо цифры подставляется ID добавленного комментария,</span><br />
&nbsp; &nbsp; &nbsp; <span class="co1">// для того, чтобы проскроллить страницу к этому сообщению</span><br />
&nbsp; &nbsp; &nbsp; <span class="co1">// HTML-код сообщения измените под себя</span><br />
&nbsp; &nbsp; &nbsp; $j<span class="br0">&#40;</span><span class="st0">'#commentlist'</span><span class="br0">&#41;</span>.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">'&lt;li id=&quot;comment-'</span> <span class="sy0">+</span> cid <span class="sy0">+</span> <span class="st0">'&quot;&gt;&lt;em&gt;&lt;strong&gt;'</span> <span class="sy0">+</span> author <span class="sy0">+</span> <span class="st0">'&lt;/strong&gt;, спасибо за Ваш комментарий! Он будет опубликован, как только его проверит администратор сайта.&lt;/em&gt;&lt;/li&gt;'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span class="co1">// считываем юзер-агента для определения браузера Opera,</span><br />
&nbsp; &nbsp; &nbsp; <span class="co1">// чтобы применить к нему особые стили</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> userAgent <span class="sy0">=</span> navigator.<span class="me1">userAgent</span>.<span class="me1">toLowerCase</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="co2">/opera/</span>.<span class="me1">test</span><span class="br0">&#40;</span>userAgent<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw2">var</span> top <span class="sy0">=</span> <span class="st0">'html'</span><span class="sy0">;</span> <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span> <span class="kw2">var</span> top <span class="sy0">=</span> <span class="st0">'html, body'</span><span class="sy0">;</span> <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span class="co1">// определяем расстояние от верхнего края браузера</span><br />
&nbsp; &nbsp; &nbsp; <span class="co1">// до элемента с нашим сообщением, заносим в переменную</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> offset <span class="sy0">=</span> $j<span class="br0">&#40;</span><span class="st0">'#comment-'</span> <span class="sy0">+</span> cid<span class="br0">&#41;</span>.<span class="me1">offset</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">top</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span class="co1">// плавно прокручиваем окно браузера до сообщения,</span><br />
&nbsp; &nbsp; &nbsp; <span class="co1">// которое показываем посетителю</span><br />
&nbsp; &nbsp; &nbsp; $j<span class="br0">&#40;</span>top<span class="br0">&#41;</span>.<span class="me1">animate</span><span class="br0">&#40;</span><span class="br0">&#123;</span>scrollTop<span class="sy0">:</span> offset<span class="br0">&#125;</span><span class="sy0">,</span> <span class="nu0">500</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; <span class="co1">// если мы ушли со странице вида http://site.ru/postname/#comment-123,</span><br />
&nbsp; <span class="co1">// то удаляем куку wp_submit_check</span><br />
&nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; eraseCookie<span class="br0">&#40;</span><span class="st0">'wp_submit_check'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
<br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>В результате выполнения этой части кода комментатор увидит вот такое сообщение (естественно, если выполнены все вышеописанные условия):</p>
<blockquote><p><em><strong>%username%</strong>, спасибо за Ваш комментарий! Он будет опубликован, как только его проверит администратор сайта.</em></p></blockquote>
<h3 id="result">Конечный код jQuery-скрипта</h3>
<p>В итоге у нас получился вот такой скрипт (для тех, кто не читал мои подробности по коду - <strong>обратите внимание на условия работы скрипта:</strong> <a href="#condition1">условие раз</a>, <a href="#condition2">условие два</a>):</p>
<div class="codecolorer-container javascript " style="overflow:auto;white-space:nowrap;width:100%;height:300px"><table><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">function</span> createCookie<span class="br0">&#40;</span><span class="kw3">name</span><span class="sy0">,</span>value<span class="sy0">,</span>days<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>days<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw2">var</span> date <span class="sy0">=</span> <span class="kw2">new</span> Date<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; date.<span class="me1">setTime</span><span class="br0">&#40;</span>date.<span class="me1">getTime</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">+</span><span class="br0">&#40;</span>days<span class="sy0">*</span><span class="nu0">24</span><span class="sy0">*</span><span class="nu0">60</span><span class="sy0">*</span><span class="nu0">60</span><span class="sy0">*</span><span class="nu0">1000</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw2">var</span> expires <span class="sy0">=</span> <span class="st0">&quot;; expires=&quot;</span><span class="sy0">+</span>date.<span class="me1">toGMTString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="kw1">else</span> <span class="kw2">var</span> expires <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span><br />
&nbsp; document.<span class="me1">cookie</span> <span class="sy0">=</span> <span class="kw3">name</span><span class="sy0">+</span><span class="st0">&quot;=&quot;</span><span class="sy0">+</span>value<span class="sy0">+</span>expires<span class="sy0">+</span><span class="st0">&quot;; path=/&quot;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="kw2">function</span> readCookie<span class="br0">&#40;</span><span class="kw3">name</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="kw2">var</span> nameEQ <span class="sy0">=</span> <span class="kw3">name</span> <span class="sy0">+</span> <span class="st0">&quot;=&quot;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw2">var</span> ca <span class="sy0">=</span> document.<span class="me1">cookie</span>.<span class="me1">split</span><span class="br0">&#40;</span><span class="st0">';'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw2">var</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span>i <span class="sy0">&lt;</span> ca.<span class="me1">length</span><span class="sy0">;</span>i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw2">var</span> c <span class="sy0">=</span> ca<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">while</span> <span class="br0">&#40;</span>c.<span class="me1">charAt</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">==</span><span class="st0">' '</span><span class="br0">&#41;</span> c <span class="sy0">=</span> c.<span class="me1">substring</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="sy0">,</span>c.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>c.<span class="me1">indexOf</span><span class="br0">&#40;</span>nameEQ<span class="br0">&#41;</span> <span class="sy0">==</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="kw1">return</span> c.<span class="me1">substring</span><span class="br0">&#40;</span>nameEQ.<span class="me1">length</span><span class="sy0">,</span>c.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="kw1">return</span> <span class="kw2">null</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="kw2">function</span> eraseCookie<span class="br0">&#40;</span><span class="kw3">name</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; createCookie<span class="br0">&#40;</span><span class="kw3">name</span><span class="sy0">,</span><span class="st0">&quot;&quot;</span><span class="sy0">,-</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="kw2">var</span> $j <span class="sy0">=</span> jQuery.<span class="me1">noConflict</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
$j<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; <span class="kw2">var</span> author <span class="sy0">=</span> readCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_author'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw2">var</span> email <span class="sy0">=</span> readCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_email'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw2">var</span> url <span class="sy0">=</span> readCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_url'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw2">var</span> submitCheck <span class="sy0">=</span> readCookie<span class="br0">&#40;</span><span class="st0">'wp_submit_check'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>author<span class="br0">&#41;</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;author&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span>author<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>email<span class="br0">&#41;</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;email&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span>email<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>url<span class="br0">&#41;</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;url&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span>url<span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; $j<span class="br0">&#40;</span><span class="st0">'#commentform'</span><span class="br0">&#41;</span>.<span class="me1">submit</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>$j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;author&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#41;</span> createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_author'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;author&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>$j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;email&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#41;</span> createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_email'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;email&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>$j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;url&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#41;</span> createCookie<span class="br0">&#40;</span><span class="st0">'wp_commenter_url'</span><span class="sy0">,</span> $j<span class="br0">&#40;</span><span class="st0">'input[name=&quot;url&quot;]'</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; createCookie<span class="br0">&#40;</span><span class="st0">'wp_submit_check'</span><span class="sy0">,</span> <span class="st0">'1'</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>submitCheck <span class="sy0">==</span> <span class="st0">'1'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; <span class="kw2">var</span> href <span class="sy0">=</span> window.<span class="me1">location</span>.<span class="me1">href</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="co2">/.+#comment-(\d+)/ig</span>.<span class="me1">test</span><span class="br0">&#40;</span>href<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> cid <span class="sy0">=</span> href.<span class="me1">replace</span><span class="br0">&#40;</span><span class="co2">/.+#comment-(\d+)/ig</span><span class="sy0">,</span> <span class="st0">'$1'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> reg <span class="sy0">=</span> <span class="kw2">new</span> RegExp<span class="br0">&#40;</span><span class="st0">'#comment-'</span> <span class="sy0">+</span> cid<span class="sy0">,</span><span class="st0">'ig'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> commentIdFind <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; $j<span class="br0">&#40;</span><span class="st0">'#commentlist a'</span><span class="br0">&#41;</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>reg.<span class="me1">test</span><span class="br0">&#40;</span>$j<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">'href'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; commentIdFind <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; eraseCookie<span class="br0">&#40;</span><span class="st0">'wp_submit_check'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>commentIdFind <span class="sy0">==</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $j<span class="br0">&#40;</span><span class="st0">'#commentlist'</span><span class="br0">&#41;</span>.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">'&lt;li id=&quot;comment-'</span> <span class="sy0">+</span> cid <span class="sy0">+</span> <span class="st0">'&quot;&gt;&lt;em&gt;&lt;strong&gt;'</span> <span class="sy0">+</span> author <span class="sy0">+</span> <span class="st0">'&lt;/strong&gt;, спасибо за Ваш комментарий! Он будет опубликован, как только его проверит администратор сайта.&lt;/em&gt;&lt;/li&gt;'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> userAgent <span class="sy0">=</span> navigator.<span class="me1">userAgent</span>.<span class="me1">toLowerCase</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="co2">/opera/</span>.<span class="me1">test</span><span class="br0">&#40;</span>userAgent<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw2">var</span> top <span class="sy0">=</span> <span class="st0">'html'</span><span class="sy0">;</span> <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span> <span class="kw2">var</span> top <span class="sy0">=</span> <span class="st0">'html, body'</span><span class="sy0">;</span> <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> offset <span class="sy0">=</span> $j<span class="br0">&#40;</span><span class="st0">'#comment-'</span> <span class="sy0">+</span> cid<span class="br0">&#41;</span>.<span class="me1">offset</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">top</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $j<span class="br0">&#40;</span>top<span class="br0">&#41;</span>.<span class="me1">animate</span><span class="br0">&#40;</span><span class="br0">&#123;</span>scrollTop<span class="sy0">:</span> offset<span class="br0">&#125;</span><span class="sy0">,</span> <span class="nu0">500</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; eraseCookie<span class="br0">&#40;</span><span class="st0">'wp_submit_check'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; <span class="br0">&#125;</span><br />
<br />
<span class="br0">&#125;</span><span class="br0">&#41;</span></div></td></tr></tbody></table></div>
<p>Ну а как подключить этот скрипт к сайту, я, надеюсь, вы уже знаете, об этом я не раз писал в своих предыдущих статьях по jQuery.</p>
<hr />
<p>© Dimox, <a href="http://dimox.name">Свобода слова вебмастерского</a>, 2009. | <a href="http://dimox.name/jquery-script-cookies-wordpress-maxcache/">jQuery-скрипт для куков при использовании кэша MaxCache на WordPress</a></p><img src="http://feeds.feedburner.com/~r/Dimox/~4/m5CgDH8n1to" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dimox.name/jquery-script-cookies-wordpress-maxcache/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
