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

<channel>
	<title>The Rpsl Blog &#187; CMS</title>
	<atom:link href="http://blog.rpsl.info/category/cms/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rpsl.info</link>
	<description></description>
	<lastBuildDate>Tue, 24 Jan 2012 11:35:02 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WordPress — gallery shorttag highslide</title>
		<link>http://blog.rpsl.info/2010/10/wordpress-gallery-shorttag-highslide/</link>
		<comments>http://blog.rpsl.info/2010/10/wordpress-gallery-shorttag-highslide/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 06:32:14 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=14674</guid>
		<description><![CDATA[Два примера, для решения одной и той же задачи. В первом примере полный идиотизм, во втором хорошее решение. Вот теперь вопрос, почему большая часть всех CMS работает как первый пример. ? Убого: add_filter&#40;'wp_get_attachment_link', 'add_rel'&#41;; &#160; /* * Add rel=&#34;gallery-$id&#34; to attachment links */ &#160; function add_rel &#40; $link &#41; &#123; &#160; global $post; // a mild cheat. group by post id. the gallery_shortcode() $instance // static var would be better, but we can't get to it. $id = $post-&#62;ID; &#160; // First, see if there's already a 'rel' attribute in the link: $atag = preg_match&#40; '#&#60;a \s+(.*?)(rel=([\'&#34;])(.*?)\3)(.*?)&#62;(.*)#i', $link, $matches &#41;; [...]]]></description>
			<content:encoded><![CDATA[Два примера, для решения одной и той же задачи.

В первом примере полный идиотизм, во втором хорошее решение. Вот теперь вопрос, почему большая часть всех CMS работает как первый пример. ?
<span id="more-14674"></span>
Убого:


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp_get_attachment_link'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'add_rel'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*
 * Add rel=&quot;gallery-$id&quot; to attachment links
 */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> add_rel <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$link</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$post</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// a mild cheat. group by post id. the gallery_shortcode() $instance</span>
    <span style="color: #666666; font-style: italic;">// static var would be better, but we can't get to it.</span>
    <span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// First, see if there's already a 'rel' attribute in the link:</span>
    <span style="color: #000088;">$atag</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'#&lt;a \s+(.*?)(rel=([\'&quot;])(.*?)\3)(.*?)&gt;(.*)#i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$link</span><span style="color: #339933;">,</span> <span style="color: #000088;">$matches</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$atag</span> <span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// Match found. Let's put Humpty Dumpty back together again:</span>
        <span style="color: #000088;">$quot</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$matches</span> <span style="color: #009900;">&#91;</span> <span style="color: #cc66cc;">3</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$relval</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$quot</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$matches</span> <span style="color: #009900;">&#91;</span> <span style="color: #cc66cc;">4</span> <span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; gallery-<span style="color: #006699; font-weight: bold;">{$id}</span>&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$quot</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$before</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$matches</span> <span style="color: #009900;">&#91;</span> <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$after</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$matches</span> <span style="color: #009900;">&#91;</span> <span style="color: #cc66cc;">5</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$rest</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$matches</span> <span style="color: #009900;">&#91;</span> <span style="color: #cc66cc;">6</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$link</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;/a&gt;&lt;a <span style="color: #006699; font-weight: bold;">{$before}</span>rel=<span style="color: #006699; font-weight: bold;">{$relval}</span><span style="color: #006699; font-weight: bold;">{$after}</span>&gt;<span style="color: #006699; font-weight: bold;">{$rest}</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$atag</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'#&lt;/a&gt;&lt;a \s+(.*?)&gt;(.*)#i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$link</span><span style="color: #339933;">,</span> <span style="color: #000088;">$matches</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$atag</span> <span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #666666; font-style: italic;">// This is a much simpler reassembly</span>
            <span style="color: #000088;">$innards</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$matches</span> <span style="color: #009900;">&#91;</span> <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$rest</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$matches</span> <span style="color: #009900;">&#91;</span> <span style="color: #cc66cc;">2</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$relval</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;gallery-<span style="color: #006699; font-weight: bold;">{$id}</span>&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$link</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;/a&gt;&lt;a <span style="color: #006699; font-weight: bold;">{$innards}</span> rel='<span style="color: #006699; font-weight: bold;">{$relval}</span>'&gt;<span style="color: #006699; font-weight: bold;">{$rest}</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$link</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>




Нормально:


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> gallery_image_higslide<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> gallery <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.gallery'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    $.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span> gallery<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> img <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'img'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> $<span style="color: #009900;">&#40;</span>img<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span> <span style="color: #339933;">&amp;&amp;</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onclick'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> undefined <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
           $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'highslide-image'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> hs.<span style="color: #660066;">expand</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    gallery_image_higslide<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>




]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2010/10/wordpress-gallery-shorttag-highslide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XenForo &#8212; Первые впечатления</title>
		<link>http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/</link>
		<comments>http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 18:48:10 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[форум]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=14167</guid>
		<description><![CDATA[Сегодня стартовали продажи нового форума от авторов все любимой 3 ветки vBulletin. После ухода из компании они долгое время работали над своим продуктом и по всей видимости очень даже не зря. Новый движок получил название XenForo. Он сделан в web два ноль стиле, напичкан по уши аяксам, на первый взгляд имеет очень хорошее api и основное ядро. Кстати приятной неожиданностью стало, что в основе ядра лежит большая часть библиотек из Zend Framework, сколько читал описаний, ни где это не упоминалось. По тестам и первым форумам что появились в сети работает очень шустро. За первые часы использования более серьезного описания дать [...]]]></description>
			<content:encoded><![CDATA[Сегодня стартовали продажи нового форума от авторов все любимой 3 ветки vBulletin.
После ухода из компании они долгое время работали над своим продуктом и по всей видимости очень даже не зря.

<img class="colorbox-14167"  style="margin-left:auto;margin-right:auto" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo_logo.jpg" alt="xenforo_logo.jpg" border="0" width="400" height="400" />

Новый движок получил название XenForo. Он сделан в web два ноль стиле, напичкан по уши аяксам, на первый взгляд имеет очень хорошее api и основное ядро. Кстати приятной неожиданностью стало, что в основе ядра лежит большая часть библиотек из Zend Framework, сколько читал описаний, ни где это не упоминалось.

По тестам и первым форумам что появились в сети работает очень шустро.

За первые часы использования более серьезного описания дать не могу, но в целом очень понравилось. Думаю что forum.centrgroup.ru в ближайшем будущем переедет именно на него.

Ловите скриншоты админки.

<span id="more-14167"></span>


<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo_logo-jpg/' title='xenforo_logo.jpg'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo_logo-150x150.jpg" class="attachment-thumbnail colorbox-14167" alt="xenforo_logo.jpg" title="xenforo_logo.jpg" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo9/' title='xenforo9'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo9-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo9" title="xenforo9" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo8/' title='xenforo8'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo8-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo8" title="xenforo8" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo7/' title='xenforo7'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo7-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo7" title="xenforo7" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo6/' title='xenforo6'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo6-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo6" title="xenforo6" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo5/' title='xenforo5'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo5-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo5" title="xenforo5" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo4/' title='xenforo4'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo4-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo4" title="xenforo4" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo3/' title='xenforo3'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo3-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo3" title="xenforo3" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo2/' title='xenforo2'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo2-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo2" title="xenforo2" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo10/' title='xenforo10'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo10-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo10" title="xenforo10" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo1/' title='xenforo1'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo1-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo1" title="xenforo1" /></a>


Основные ресурсы:


<blockquote>
<a href="http://xenforo.com/">Оффициальный сайт</a>
<a href="http://www.xf-russia.ru/">XenForo - Russia</a>
<a href="http://vbsupport.org/forum/forumdisplay.php?f=112">Раздел XenForo на vBsupport.org</a>
</blockquote>

]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Разработка под Joomla</title>
		<link>http://blog.rpsl.info/2010/10/razrabotka-pod-joomla/</link>
		<comments>http://blog.rpsl.info/2010/10/razrabotka-pod-joomla/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 12:44:08 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Заметки]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[разработка]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=14122</guid>
		<description><![CDATA[- Хочешь испытать чувства сходные с разработкой под Joomla ? - Да - Брось говно на вентилятор.]]></description>
			<content:encoded><![CDATA[<img class="colorbox-14122"  style="margin-left:auto;margin-right:auto" src="http://blog.rpsl.info/wp-content/uploads/2010/10/joomla.png" alt="joomla.png" border="0" width="431" height="334" />
<br />

<blockquote>- Хочешь испытать чувства сходные с разработкой под Joomla ?<br />
- Да<br />
- Брось говно на вентилятор.</blockquote>]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2010/10/razrabotka-pod-joomla/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Кэширование MySQL &#8212; MySimpleCache</title>
		<link>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache/</link>
		<comments>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 17:33:43 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[mysimplecache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=2294</guid>
		<description><![CDATA[Собственно возвращаясь к прошлому посту - "PHP Кэширование MySQL, хочу сказать спасибо всем, кто помог советами. По разным причинам, спустя несколько дней после прошлого поста, я все таки сел и написал этот велосипед. Перевел на него десяток говносайтов и наблюдал две недели за их поведением. Проблем не заметил, все работает хорошо, нагрузка на базу данных значительно упала, а это именно то, что и требовалось. Проект поселился на github.com, маловероятно, но возможно он еще будет обновляться, так что актуальная версия всегда там. Логика работы проста. Что бы закэшировать MySQL запрос, вы подключаете класс и делаете замену стандартных вызовов, на вызовы функций [...]]]></description>
			<content:encoded><![CDATA[Собственно возвращаясь к прошлому посту - "<strong><a href="http://blog.rpsl.info/2010/06/php-keshirovanie-mysql.html">PHP Кэширование MySQL</a></strong>, хочу сказать спасибо всем, кто помог советами.

По разным причинам, спустя несколько дней после прошлого поста, я все таки сел и написал этот велосипед. Перевел на него десяток говносайтов и наблюдал две недели за их поведением.

Проблем не заметил, все работает хорошо, нагрузка на базу данных значительно упала, а это именно то, что и требовалось.

Проект поселился на <a href="http://github.com/Rpsl/MySimpleCache">github.com</a>, маловероятно, но возможно он еще будет обновляться, так что актуальная версия всегда там.
<a href="http://github.com/Rpsl/MySimpleCache"><img src="http://blog.rpsl.info/wp-content/uploads/2010/07/mysimplecache.png" alt="" width="214" height="119" class="aligncenter size-full wp-image-2295 colorbox-2294" /></a>

Логика работы проста. Что бы <strong>закэшировать MySQL</strong> запрос, вы подключаете класс и делаете замену стандартных вызовов, на вызовы функций кеширования. Они являются синонимами, а значит вам нужно только перед вызовом дописать название класса.

При вызове mysql_query, скрипт попытается закешировать данный запрос и либо вернет ссылку на закешированный массив, либо вернет ссылку на ресурс.

Все последующие операции будут проверять является ли ссылка ресурсом и уже по обстоятельствам будут либо доставать данные из <strong>memcache</strong>, либо получать их напрямую.

Буду рад любым комментариям и повторяю еще раз, что крайне не рекомендую прикручивать этот скрипт на сайты которые чуть более серьезнее чем сателит.
]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Кеширование Mysql</title>
		<link>http://blog.rpsl.info/2010/06/php-keshirovanie-mysql/</link>
		<comments>http://blog.rpsl.info/2010/06/php-keshirovanie-mysql/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 12:04:12 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Заметки]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=1401</guid>
		<description><![CDATA[UPD: Рабочая версия php MySimpleCache Други, мне требуется ваша помощь или совет. Такая ситуация, есть большая куча сайтов, написанных давным-давно. Они представляют из себя кучу файлов, в которых идет в перемешку php/html/sql запросы. Ни о каких современных паттернах программирования там речи нету. Переписывать эти сайты нет ни времени, ни желания, но они ужастно грузят БД. Задача добавить на эти сайты кеширование sql запросов. Переписывать их и править дело очень не благодарное и потребует кучу времени. Я поразмышлял и решил, что проще всего будет написать класс, который будет содержать в себе ф-ции синомы всех ф-ций для работы с бд. mysql_query mysql_fetch_assoc [...]]]></description>
			<content:encoded><![CDATA[<img src="http://blog.rpsl.info/wp-content/uploads/2010/06/mysql-logo.png" alt="" width="200" height="103" class="alignleft size-full wp-image-1426 colorbox-1401" />

<strong>UPD:</strong> Рабочая версия php <a href="http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache.html">MySimpleCache</a>

Други, мне требуется ваша помощь или совет.

Такая ситуация, есть большая куча сайтов, написанных давным-давно. Они представляют из себя кучу файлов, в которых идет в перемешку php/html/sql запросы. Ни о каких современных паттернах программирования там речи нету. Переписывать эти сайты нет ни времени, ни желания, но они ужастно грузят БД.

Задача добавить на эти сайты кеширование sql запросов. Переписывать их и править дело очень не благодарное и потребует кучу времени.

Я поразмышлял и решил, что проще всего будет написать класс, который будет содержать в себе ф-ции синомы всех ф-ций для работы с бд.



<blockquote>mysql_query
mysql_fetch_assoc
mysql_fetch_array
mysql_num_rows
mysql_result
....</blockquote>


Фишка в том, что они должны внутри себя пробовать кешировать запрос и либо возвразать результат запроса, либо возвращать закешированный результат.

Данная идея мне кажется крутой, так как, она позволит легкой автозаменой включить кеширование на сайте и лишь потом в нужных местах его допилить.

Теперь главное, я уверен что должны быть аналоги, а я пытаюсь изобрести велосипед. Возможно вы сталкивались с такими вещами и их решениями. Ну или просто можете высказать свое мнение по этому поводу. Не поленитесь, буду очень благодарен.

]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2010/06/php-keshirovanie-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Чат для vbulletin</title>
		<link>http://blog.rpsl.info/2010/03/chat-dlya-vbulletin/</link>
		<comments>http://blog.rpsl.info/2010/03/chat-dlya-vbulletin/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 08:47:26 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[centr]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[vbulletin]]></category>
		<category><![CDATA[форум]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=489</guid>
		<description><![CDATA[Главное что бы было желания, все остальное уже дело техники. Очень давно я хотел сделать чатик для нашего уютного форума. Если кто-то помнит, то он даже был там очень давно, но тогда по техническим и эстетическим причинам его пришлось убрать. Несколько выходных назад я решил вернуться к этому вопросу, скачал стандартный чат для форума, но он как и все остальные подобные реализации являлся унылым говном. Это глупое окошко которое предлагается разместить после навбара или перед футером... Решение было принято моментально, а бутылка ликера добавила мне решительности. В итоге, просидев около 4 часов над сорцами чата и переделкой его стилей у [...]]]></description>
			<content:encoded><![CDATA[<i>Главное что бы было желания, все остальное уже дело техники.</i>
<div style="text-align:center"><a href="http://blog.rpsl.info/wp-content/uploads/2010/03/Снимок-экрана-2010-03-05-в-11.37.50.png"><img class="colorbox-489"  src="http://blog.rpsl.info/wp-content/uploads/2010/03/Снимок-экрана-2010-03-05-в-11.37.50.png" alt="Снимок экрана 2010-03-05 в 11.37.50.png" border="0" width="400" height="300" /></a></div>
<p>Очень давно я хотел сделать чатик для нашего уютного форума. Если кто-то помнит, то он даже был там очень давно, но тогда по техническим и эстетическим причинам его пришлось убрать.</p>
Несколько выходных назад я решил вернуться к этому вопросу, скачал стандартный чат для форума, но он как и все остальные подобные реализации являлся унылым говном. Это глупое окошко которое предлагается разместить после навбара или перед футером... Решение было принято моментально, а бутылка ликера добавила мне решительности.

В итоге, просидев около 4 часов над сорцами чата и переделкой его стилей у нас получилась отличная консоль, которая открывается - закрывается по нажатию горячих клавиш и доступна всем зарегистрированным пользователям.
Единственная проблема с которой я столкнулся - это кривое отображение в ie6, но решать её, по своим внутренним убеждениям я не собираюсь.

Живой пример на <a href="http://forum.centrgroup.ru">http://forum.centrgroup.ru</a> (для зарегистрированных)
Если кому интересна сама реализация - пишите в комменты, постараюсь рассказать.
]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2010/03/chat-dlya-vbulletin/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Twitter it для vBulletin</title>
		<link>http://blog.rpsl.info/2009/11/twitter-it-dlya-vbulletin/</link>
		<comments>http://blog.rpsl.info/2009/11/twitter-it-dlya-vbulletin/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 17:21:27 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[centr]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[vbulletin]]></category>
		<category><![CDATA[форум]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=445</guid>
		<description><![CDATA[На днях, мне захотелось сделать наш форум еще более интегрированным в, не побоюсь этого слова, великую социальную сеть twitter. Сначала была идея сделать возможность автоматической отправки новых тем из выбранных разделов в некий твиттер аккаунт, потом это обдумывалось и свелось до того, что бы была возможность отправлять в твиттер ссылки на темы, но при этом не сам форум будет спамить темы, а пользователи сам должны решать за себя. Первый вариант, который был реализован, заключался в простом добавление кнопки в шаблон, которая содержит в себе необходимый URL, но как выяснилось, это вариант не очень удобен, т.к. он не будет работать с [...]]]></description>
			<content:encoded><![CDATA[На днях, мне захотелось сделать наш форум еще более интегрированным в, не побоюсь этого слова, великую социальную сеть twitter.

Сначала была идея сделать возможность автоматической отправки новых тем из выбранных разделов в некий твиттер аккаунт, потом это обдумывалось и свелось до того, что бы была возможность отправлять в твиттер ссылки на темы, но при этом не сам форум будет спамить темы, а пользователи сам должны решать за себя.

Первый вариант, который был реализован, заключался в простом добавление кнопки в шаблон, которая содержит в себе необходимый URL, но как выяснилось, это вариант не очень удобен, т.к. он не будет работать с некоторыми символами, которые встречаются в тексте.

В итоге я просто создал модуль который генерирует ссылку, а в шаблон добавил простую кнопку и ву-аля.

<a href="http://blog.rpsl.info/wp-content/uploads/2009/11/twitterit.png"><img class="aligncenter size-full wp-image-446 colorbox-445" src="http://blog.rpsl.info/wp-content/uploads/2009/11/twitterit.png" alt="twitterit" width="373" height="149" /></a>

<span id="more-445"></span>Для начала нужно создать модуль:
<blockquote>Продукт - <strong>vBulletin</strong>
Местоположение модуля - <strong>postbit_display_complete</strong>
Имя - <strong>Twitter It</strong></blockquote>
Код модуля:


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$twitterit</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$post</span><span style="color: #009900;">&#91;</span>title<span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; http://siteurl/showthread.php?t=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$thread</span><span style="color: #009900;">&#91;</span>threadid<span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; #tag&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$twitterit</span> <span style="color: #339933;">=</span> <span style="color: #990000;">iconv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'WINDOWS-1251'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'UTF-8'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$twitterit</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Если у вас не UTF-8</span>
<span style="color: #000088;">$twitterit</span> <span style="color: #339933;">=</span> <span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">htmlspecialchars_decode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$twitterit</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>





<blockquote>#tag и siteurl соответственно прописываете сами</blockquote>



Теперь нам осталось добавить вывод кнопок в шаблон. По умолчанию, за вывод сообщений отвечает шаблон postbit (postbit_legacy - если у вас Аватарки сбоку)

И добавляем в необходимое место вывод кнопки:<span style="color: #0000bb"> </span>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$twitterit</span>&quot;</span> target<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;_blank&quot;</span> rel<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;nofollow&quot;</span><span style="color: #339933;">&gt;&lt;</span>img src<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$stylevar[imgdir_button]</span>/twitterit.gif&quot;</span> alt<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;Twitter It!&quot;</span> border<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;0&quot;</span> <span style="color: #339933;">/&gt;&lt;/</span>a<span style="color: #339933;">&gt;</span></pre></div></div>




If - мы используем для того, что бы кнопка отображалась только в первом сообщение темы.<p>Сюда приходят по следующим фразам</p>
<ul>
<li><a href="http://blog.rpsl.info/2010/06/vkontakte-rukozhopy.html">как сделать чтобы в контакте на свою страну все заходили</a></li>
<li><a href="http://blog.rpsl.info/2010/06/vkontakte-hd-video-vomp.html">кино в контакте</a></li>
<li><a href="http://blog.rpsl.info/2009/01/kak-stat-repperom-kniga.html">все про рэп и как стать рэппером</a></li>
<li><a href="http://blog.rpsl.info/2010/03/burger-king-na-kievskoj.html">бургер заказать</a></li>
<li><a href="http://blog.rpsl.info/2010/06/vkontakte-rukozhopy.html">поиск контакта говно</a></li>
<li><a href="http://blog.rpsl.info/2009/04/film-klass.html">класс фильм</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2009/11/twitter-it-dlya-vbulletin/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Клеви навигация.</title>
		<link>http://blog.rpsl.info/2009/06/klevi-navigaciya/</link>
		<comments>http://blog.rpsl.info/2009/06/klevi-navigaciya/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 17:47:34 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[locdog]]></category>
		<category><![CDATA[rap]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=280</guid>
		<description><![CDATA[Забыл? Бросил? Нет, я всё ещё тут, просто в последнее время многое поменялось и на посты время не оставалось. Ведь мой блог это не очередной "манимэйкерский" высер, а так, для себя в первую очередь. В общем, что бы разбавить пустоту, которая была в последнее время, решил выложить листинг красивого футера. Началось всё с того, что некоторое время назад, я прикрутил к блогу hotkey (hotkeys для wordpress), но какой в них смысл, если об этом никто не знает. Вот мне и захотелось вынести их на передний план. Для этого, я чуть - чуть поиграл с css стилями, и теперь .footer выглядит [...]]]></description>
			<content:encoded><![CDATA[Забыл? Бросил? Нет, я всё ещё тут, просто в последнее время многое поменялось и на посты время не оставалось. Ведь мой блог это не очередной "манимэйкерский" высер, а так, для себя в первую очередь.

В общем, что бы разбавить пустоту, которая была в последнее время, решил выложить листинг красивого футера.

Началось всё с того, что некоторое время назад, я прикрутил к блогу hotkey (<strong><a title="hotkeys для wordpress" href="http://blog.rpsl.info/2009/05/hotkeys-dlya-wordpress.html">hotkeys для wordpress</a></strong>), но какой в них смысл, если об этом никто не знает. Вот мне и захотелось вынести их на передний план.

Для этого, я чуть - чуть поиграл с css стилями, и теперь .footer выглядит следующим образом:
<pre>#container_foot {
    border-top:thin dashed;
    bottom:0;
    height:32px;
    left:0;
    padding-bottom:0;
    padding-top:5px;
    position:fixed;
    width:100%;
    z-index:1000;
}</pre>
Это то, что касается расположения. Стиль он и так унаследует от вашей темы.

<hr />
<div style="font-size: 11px">
<div style="padding-top: 5px"><a href="http://soundcloud.com/rpsl/loc-dog">Loc Dog - Ты хочешь видеть мою истинную душу?</a></div>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2009/06/klevi-navigaciya/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Автоматическое обновление wordpress</title>
		<link>http://blog.rpsl.info/2009/05/automatic-upgrade-wordpress/</link>
		<comments>http://blog.rpsl.info/2009/05/automatic-upgrade-wordpress/#comments</comments>
		<pubDate>Wed, 13 May 2009 20:06:57 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=199</guid>
		<description><![CDATA[Есть в wordpress'e такая занимательная опция, как автоматическая установка и обновление плагинов. Просит от вас только указать хост, логин и пароль для ftp/sftp доступа, а далее делает всё сама. К сожалению "из коробки" эта опция заводится далеко не у всех. Если вы тоже стали одним из счастливых обладателей сообщения: Downloading update from http://downloads.wordpress.org/plugin/%plugin-name%.zip Download failed.: Could not create Temporary file Installation Failed ... то сделать вам нужно следующие: Создать темповую папку для хранилища. Например wp-contents/tmp Выставить на неё права доступа 777 (chmod -R 0777 ./wp-contents/tmp) Дописать в файл wp-config.php строчку: define ('WP_TEMP_DIR', ABSPATH . 'wp-content/tmp'); Если у вас на сервере [...]]]></description>
			<content:encoded><![CDATA[Есть в wordpress'e такая занимательная опция, как автоматическая установка и обновление плагинов. Просит от вас только указать хост, логин и пароль для ftp/sftp доступа, а далее делает всё сама.  К сожалению "из коробки" эта опция заводится далеко не у всех. Если вы тоже стали одним из счастливых обладателей сообщения:
<blockquote>Downloading update from http://downloads.wordpress.org/plugin/%plugin-name%.zip

Download failed.: Could not create Temporary file

Installation Failed</blockquote>
... то сделать вам нужно следующие:  <span id="more-199"></span>Создать темповую папку для хранилища. Например wp-contents/tmp  Выставить на неё права доступа 777 (chmod -R 0777 ./wp-contents/tmp)  Дописать в файл wp-config.php строчку:
<pre>define ('WP_TEMP_DIR', ABSPATH . 'wp-content/tmp');</pre>
Если у вас на сервере сильно ограниченно время выполнения скриптов и во время инсталяции выпадает ошибка, то тогда можно попробовать дописать в начало ./wp-admin/upgrade.php
<pre>set_time_limit(0);</pre>
Также желательно конечно завести отдельного пользвователя на ftp/sftp с ограниченными правами.  Ну вроде все. Больше проблем возникать не должно.<p>Сюда приходят по следующим фразам</p>
<ul>
<li><a href="http://blog.rpsl.info/2009/12/livejournal-in-google-reader.html">добавить в google reader  жж</a></li>
<li><a href="http://blog.rpsl.info/2010/06/vkontakte-hd-video-vomp.html">vkontakte adobe air</a></li>
<li><a href="http://blog.rpsl.info/2010/06/vkontakte-rukozhopy.html">из за чего лагают фильмы вконтакте?</a></li>
<li><a href="http://blog.rpsl.info/2009/01/kak-stat-repperom-kniga.html">как стать рэппером</a></li>
<li><a href="http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya.html">sql outer join</a></li>
<li><a href="http://blog.rpsl.info/2010/06/vkontakte-rukozhopy.html">как вконтакте сделать поиск по видеозаписям</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2009/05/automatic-upgrade-wordpress/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hotkeys для wordpress</title>
		<link>http://blog.rpsl.info/2009/05/hotkeys-dlya-wordpress/</link>
		<comments>http://blog.rpsl.info/2009/05/hotkeys-dlya-wordpress/#comments</comments>
		<pubDate>Mon, 11 May 2009 16:29:36 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=187</guid>
		<description><![CDATA[В этой заметке, я расскажу как легко добавить в ваш блог поддержку hotkey's. Hotkey - это определенное сочетание клавиш, по нажатию которых происходит определенное действие. Мы уже привыкли использовать ctrl+c/ctrl+v. Тенденции развития интернета диктуют свою моду и многие уже привыкли использовать для перехода между страницами сайта сочетание "ctrl+left" или "ctrl+right". Для добавления этого функционала, первое что нам потребуется - плагин hotkey для библиотеки jquery. jQuery hotkey Скачать Демо Теперь о том, как это сделать. У нас есть два варианта: Генерировать код в самом шаблоне с помощью встроенных функций Генерировать код "на лету", с помощью JS Я выбрал второй вариант, т.к. [...]]]></description>
			<content:encoded><![CDATA[В этой заметке, я расскажу как легко добавить в ваш блог поддержку hotkey's.
<blockquote>Hotkey - это определенное сочетание клавиш, по нажатию которых происходит определенное действие. Мы уже привыкли использовать ctrl+c/ctrl+v. Тенденции развития интернета диктуют свою моду и многие уже привыкли использовать для перехода между страницами сайта сочетание "ctrl+left" или "ctrl+right".</blockquote>
Для добавления этого функционала, первое что нам потребуется - плагин hotkey для библиотеки jquery.

jQuery hotkey
<ul>
	<li><a href="http://code.google.com/p/js-hotkeys/">Скачать</a></li>
	<li><a href="http://jshotkeys.googlepages.com/test-static-01.html">Демо</a></li>
</ul>
Теперь о том, как это сделать. У нас есть два варианта:
<ul>
	<li>Генерировать код в самом шаблоне с помощью встроенных функций</li>
	<li>Генерировать код "на лету", с помощью JS</li>
</ul>
Я выбрал второй вариант, т.к. он мне показался более правильным, во первых мы не напрягаем шаблон лишними вызовами, и главное мы уверенны что будем получать правильные ссылки. Ведь нам нужно на главной странице листать все записи, в категории листать записи категории, а внутри поста листать посты. Таким образом, всё что нам осталось, это добавить в header шаблон (скорее всего header.php) нижеприведенный код.

<span id="more-187"></span>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;/js/jquery.hotkeys-0.7.9.min.js&quot;</span> <span style="color: #339933;">&gt;</span></pre></div></div>



Подразумевается, что вы уже скачали библиотеку и положили её в папку /js/ вашей темы. Также, обратите внимание, что код вызова библиотеки должен быть добавлен после вызова самого jQuery.

Далее дописываем наш обработчик.


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">    jQuery<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> nextlink <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.alignright a'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'href'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> prevlink <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.alignleft a'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'href'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>nextlink <span style="color: #339933;">!=</span> undefined<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            jQuery<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'keydown'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'Ctrl+right'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                location.<span style="color: #660066;">href</span><span style="color: #339933;">=</span>nextlink<span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>prevlink <span style="color: #339933;">!=</span> undefined<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            jQuery<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'keydown'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'Ctrl+left'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                location.<span style="color: #660066;">href</span><span style="color: #339933;">=</span>prevlink<span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



Теперь главное. Обратите внимание на строки где определяются ссылки.


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">        <span style="color: #003366; font-weight: bold;">var</span> nextlink <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.alignright a'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'href'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> prevlink <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.alignleft a'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'href'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



alignright и alignleft это название классов, в которых у меня генерируются ссылки на следующую и предыдущую страницу, так что вам наверняка потребуется поменять эти названия на ваши, в зависимости от используемой вами темы.

Собственно это всё. После проделывания данных ваш блог должен стать на ступеньку ближе к заветному "WEB 2.0".

Живой пример можете посмотреть в <a href="http://blog.rpsl.info">моём блоге</a>, нажимая "Ctrl+Left" OR "Ctrl+Right"<p>Сюда приходят по следующим фразам</p>
<ul>
<li><a href="http://blog.rpsl.info/2009/11/twitter-it-dlya-vbulletin.html">vbulletin твиттер</a></li>
<li><a href="http://blog.rpsl.info/2009/04/film-klass.html">класс</a></li>
<li><a href="http://blog.rpsl.info/2009/07/jquery-label-tag.html">jquery + label</a></li>
<li><a href="http://blog.rpsl.info/2010/06/vkontakte-hd-video-vomp.html">Adobe AIR vkontakte</a></li>
<li><a href="http://blog.rpsl.info/2009/04/film-klass.html">фильм класс 2</a></li>
<li><a href="http://blog.rpsl.info/tag/vkontakte">как сделать hd в контакте</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2009/05/hotkeys-dlya-wordpress/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

