<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>
    
    <title>Low Weblog</title>
    <link>http://loweblog.com/</link>
    <description>Developer blog by Lodewijk Schutte ~ Low, about ExpressionEngine and more.</description>
    <dc:language>en</dc:language>
    <dc:creator>Low</dc:creator>
    <dc:rights>Copyright 2008</dc:rights>
    <dc:date>2008-11-04T14:45:47+01:00</dc:date>
    <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
    

    <item>
      <title>EE: Low Seg2Cat extension</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Dev&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fee-low-seg2cat-extension%2F&amp;seed_title=EE%3A+Low+Seg2Cat+extension</link>
      <guid>http://loweblog.com/freelance/article/ee&#45;low&#45;seg2cat&#45;extension/</guid>
      <description>If you&#8217;ve ever worked with ExpressionEngine for a bit, you know that there isn&#8217;t just one solution to a problem. Usually, there are several. For example, you could use multiple weblogs to give structure to your content, or you could achieve the same by using categories. Depending on requirements, you&#8217;ll choose which method best suits your needs. I have used both on several occasions.</description>
      <dc:subject>Add&#45;Ons, Categories, ExpressionEngine, Segments</dc:subject>
      <content:encoded><![CDATA[<p>If you&#8217;ve ever worked with <a href="http://expressionengine.com/index.php?affiliate=lodewijk">ExpressionEngine</a> for a bit, you know that there isn&#8217;t just one solution to a problem. Usually, there are several. For example, you could use multiple weblogs to give structure to your content, or you could achieve the same by using categories. Depending on requirements, you&#8217;ll choose which method best suits your needs. I have used both on several occasions.</p>
<h2>Using categories</h2>
<p>If there&#8217;s no need for different levels of permissions, but you do need lots of flexibility, using categories might be the right way to go. Categories can be a powerful tool for your site. Straight out of the box, it&#8217;s great. But with a bit of add-on love, it can become even better. That&#8217;s why I created the Low Seg2Cat extension.</p>
<p>&#8594; <a href="/downloads/ext.low_seg2cat.zip" title="2kb zip file">Download the Low Seg2Cat extension version 1.0</a></p>
<h2>What does it do?</h2>
<p>Low Seg2Cat loops through the segments of the current <abbr>URI</abbr>, matches them against existing categories, and registers the matching categories as global variables, which you can use in your templates. For example, if your <abbr>URI</abbr> looks like this: <code>http://domain.com/index.php/blog/news/election/</code>, this extension will register <strong>7</strong> extra global variables. Per segment, it will register&#8230;</p>
<ul>
<li><code>&#123;segment_n_category_id&#125;</code></li>
<li><code>&#123;segment_n_category_name&#125;</code></li>
</ul>
<p>&#8230;where <var>n</var> is the segment number. This means if there&#8217;s a category with url_title &#8216;news&#8217; and one with &#8216;election&#8217;, you&#8217;ll have their ids and names ready to be used in your templates. If no matching category is found for a segment, an empty string is returned. In addition to these, a final variable is also set: <code>&#123;segment_category_ids&#125;</code>, which will return an inclusive stack of all found category ids, for example: 4&#038;12 (if category &#8216;news&#8217; would have an id of 4 and &#8216;election&#8217; would be 12).</p>
<p>Low Seg2Cat gives you easy access to category ids so you can use url_titles in your <abbr>URI<abbr>s without the use of the Category <abbr>URL</abbr> Indicator or custom <abbr>PHP</abbr>.</p>
<h2>Caveats</h2>
<p>If there are multiple categories with the same url_title, but in different groups, this extension will only return one of those. So best make sure your category url_titles are unique.</p>
]]></content:encoded>
      <dc:date>2008-11-04T14:45:47+01:00</dc:date>
    </item>

    <item>
      <title>Change your client&#8217;s mind</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Dev&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fchange-your-clients-mind%2F&amp;seed_title=Change+your+client%26%238217%3Bs+mind</link>
      <guid>http://loweblog.com/freelance/article/change&#45;your&#45;clients&#45;mind/</guid>
      <description>As I read Vitamin&#8217;s latest article by Paul Boag, called The 5 hidden costs of running a CMS, I couldn&#8217;t help but wonder whether the author had been looking over my shoulder the last couple of weeks. It was as if he pulled some quotes from discussions I had with a client, not too long ago. Take this one, for example:
[There is] a substantial problem with content management systems. They are often implemented in the hope they will solve what is an organizational rather than technical problem.</description>
      <dc:subject>Content, Rants</dc:subject>
      <content:encoded><![CDATA[<p>As I read <a href="http://www.thinkvitamin.com/">Vitamin</a>&#8217;s latest article by <a href="http://boagworld.com/">Paul Boag</a>, called <a href="http://www.thinkvitamin.com/features/biz/the-5-hidden-costs-of-running-a-cms">The 5 hidden costs of running a <abbr title="Content Management System">CMS</abbr></a>, I couldn&#8217;t help but wonder whether the author had been looking over my shoulder the last couple of weeks. It was as if he pulled some quotes from discussions I had with a client, not too long ago. Take this one, for example:</p>
<blockquote cite="http://www.thinkvitamin.com/features/biz/the-5-hidden-costs-of-running-a-cms"><p>[There is] a substantial problem with content management systems. They are often implemented in the hope they will solve what is an organizational rather than technical problem.</p></blockquote>
<p>The Brit hits the nail on the head, although I&#8217;d like to take a slightly different approach to his statement. The problem does not lie with the <abbr>CMS</abbr> itself so much, but rather with the people implementing and using it. It is they who expect that a piece of software will cater to all their (or even everyone&#8217;s) online needs and solve all their problems. Some might even think they have real influence and power over the company&#8217;s website just because they have a user name and password to login to the <abbr>CMS</abbr> and edit data. Even though those changes will never appear online without approval of a web editor.</p>
<p>This is a difficult problem, because you need to convince people to think differently about the system they&#8217;re using. Change their minds, so to speak. Do they really need to spend a lot of money to buy a huge content management system that can handle multiple workflows and permissions and whatnot? Or can they suffice with just sending an email to the web editors every now and then? Remember, it&#8217;s not <abbr>CMS</abbr>&#8217;s that kill websites. People do. (And some browsers, but let&#8217;s not go into that&#8230;)</p>
]]></content:encoded>
      <dc:date>2008-08-06T21:45:17+01:00</dc:date>
    </item>

    <item>
      <title>SEO vs. UO</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Dev&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fseo-vs-uo%2F&amp;seed_title=SEO+vs.+UO</link>
      <guid>http://loweblog.com/freelance/article/seo&#45;vs&#45;uo/</guid>
      <description>My site&#8217;s redesign should be a good opportunity to add my first rant to my developer blog. A rant about a trend I&#8217;ve noticed lately, called Search Engine Optimalisation, or SEO. Of course, this isn&#8217;t a new phenomenon. It&#8217;s probably as old as search engines themselves. Nevertheless, the last couple of months I came across this subject a bit too often.</description>
      <dc:subject>Rants, SEO</dc:subject>
      <content:encoded><![CDATA[<p>My site&#8217;s redesign should be a good opportunity to add my first rant to my developer blog. A rant about a trend I&#8217;ve noticed lately, called Search Engine Optimalisation, or <abbr>SEO</abbr>. Of course, this isn&#8217;t a new phenomenon. It&#8217;s probably as old as search engines themselves. Nevertheless, the last couple of months I came across this subject a bit too often.</p>
<p>When I was at <a href="http://www.vivabit.com/atmedia2008/london/">@Media in London</a> this year, a fair amount of questions was asked about <abbr>SEO</abbr>. But it&#8217;s not just developers who worry about it anymore. More and more, clients think that something special has to be done to their sites in order to optimise them for search engines like Google. They turn to the developers or to someone who actually specialises in <abbr>SEO</abbr>. Then the site is altered or built with this in mind. The site is optimised for search engines.</p>
<p>But isn&#8217;t this the wrong approach? Shouldn&#8217;t we be optimising for our <em>users</em> instead? Something like User Optimalisation (<abbr>UO</abbr>)? Luckily, one excellent method for optimalisation appears to benefit both: building with Web Standards. But I reckon it is wrong to assume that all measures taken to improve the &#8220;findability&#8221; of a website will also benefit its users. Therefore, I think it&#8217;s necessary to get priorities straight and turn some thought processes around.</p>
<p>A client might think that as soon as their site appears on the first search result page of Google, more visitors will come and use their site. Google first, users later. Let&#8217;s turn this around. If you build an <em>accessible</em> website with <em>great content</em>, more users will gradually use your site, maybe even link to it. This will eventually lead to a higher page rank; because people are <em>already using</em> it. Worry about users first, Google later, if at all.</p>
<p>Search engines, after all, are companies with their own agenda, who can change their algorithms any time they want. That pretty much rules out any <abbr>SEO</abbr> certainties. If we forget that our main priority should be our human users, we risk going back to the dark ages of dozens of meaningless <code>meta</code> tags, huge amounts of keywords on the bottom of pages or maybe even <a href="http://www.google.com/support/news_pub/bin/answer.py?answer=68323">putting random numbers in URLs</a>.</p>
]]></content:encoded>
      <dc:date>2008-07-24T01:06:56+01:00</dc:date>
    </item>

    <item>
      <title>EE: Low CP extension</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Dev&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fee-low-cp-extension%2F&amp;seed_title=EE%3A+Low+CP+extension</link>
      <guid>http://loweblog.com/freelance/article/ee&#45;low&#45;cp&#45;extension/</guid>
      <description>There are some minor nuisances in the ExpressionEngine Control Panel that started to bug me and &#8212; more importantly &#8212; some of my clients. To get rid of them, I&#8217;ve created an extension: Low CP, Control Panel according to Low.</description>
      <dc:subject>Add&#45;Ons, ExpressionEngine</dc:subject>
      <content:encoded><![CDATA[<p>There are some minor nuisances in the <a href="http://expressionengine.com/index.php?affiliate=lodewijk">ExpressionEngine</a> Control Panel that started to bug me and &#8212; more importantly &#8212; some of my clients. To get rid of them, I&#8217;ve created an extension: Low CP, Control Panel according to Low.</p>
<p><a href="/downloads/ext.low_cp.zip" title="3kb .zip file">&#8594; Download the Low CP extension, version 1.0</a></p>
<h2>What does it do?</h2>
<p>This extension <em>doesn&#8217;t</em> have any settings, so as soon as you enable it, you&#8217;ll notice the following effects:</p>
<h3>No <code>title</code> attribute for links</h3>
<p>You know how you get three JavaScript prompts each time you click the &#8220;Link&#8221; button in the entry form? The third one will add a <code>title</code> attribute to the link you&#8217;re creating, which is not necessary most of the time. Low CP gets rid of the third prompt, omitting the attribute.</p>
<h3>No Check Spelling, Glossary or Smileys</h3>
<p>I&#8217;ve never really used the three &#8220;textarea helper&#8221; links. Some browsers, like Firefox and Safari, even have built in spelling checkers. The glossary is only useful if you add your own items in there. Don&#8217;t even get me started on smileys. Low CP hides these three links.</p>
<h3>No localization for custom date fields</h3>
<p>Each time I used a custom date field for a client, that client asked me what &#8220;fixed&#8221; or &#8220;Localized&#8221; meant. Each of those times it wasn&#8217;t really important, but &#8220;fixed&#8221; would be my preferred choice. In the end &#8212; also due to a clumsy translation mistake &#8212; it caused more confusion than it should. Low CP gets rid of the drop down select box and replaces it with a hidden form field which sets the localization to fixed by default.</p>
<h3>No Trackbacks column</h3>
<p>Seriously, who uses trackbacks anymore? I&#8217;ve never used them and found that &#8212; in the edit entries table &#8212; it causes confusion with clients. Of course we can&#8217;t have any of that, that&#8217;s why Low CP removes that column from the edit entries table.</p>
<h3>Infinite URL title duplicates</h3>
<p>Not very common, but harmless to add anyway. There&#8217;s a maximum to the number that&#8217;s appended to the URL title if it already exists. Say, for example, that you add an entry called &#8220;News&#8221; every week. The first time, the URL title becomes <code>news</code>. The second time, it&#8217;ll be <code>news1</code>. Then <code>news2</code>, and so on, until you reach <code>news50</code>. After that, you&#8217;ll get an error message saying the URL title already exists. Low CP removes this limit.</p>
]]></content:encoded>
      <dc:date>2008-07-04T18:04:00+01:00</dc:date>
    </item>

    <item>
      <title>EE: Safe Encode extension</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Dev&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fee-safe-encode-extension%2F&amp;seed_title=EE%3A+Safe+Encode+extension</link>
      <guid>http://loweblog.com/freelance/article/ee&#45;safe&#45;encode&#45;extension/</guid>
      <description>The Dutch web guidelines do not allow you to use obfuscation to hide email addresses that are published on your site. ExpressionEngine will always use JavaScript to display email addresses when you use the &#123;encode=&#34;&#34;&#125; syntax. With this extension, you can bypass this behaviour, without having to modify the core typography class.</description>
      <dc:subject>Add&#45;Ons, ExpressionEngine</dc:subject>
      <content:encoded><![CDATA[<p>The <a href="http://www.webrichtlijnen.nl/english/manual/development/production/link-navigation/email-addresses/#addresses-on-sites">Dutch web guidelines</a> do not allow you to use obfuscation to hide email addresses that are published on your site. ExpressionEngine will always use JavaScript to display email addresses when you use the <code>&#123;encode=&#34;&#34;&#125;</code> syntax. With this extension, you can bypass this behaviour, without having to modify the core typography class.</p>
<p><a href="/downloads/ext.safe_encode.zip" title="1KB .zip file">&#8594; Download the Safe Encode extension, version 1.0</a></p>
<h2>What does it do?</h2>
<p>Whenever you use <code>&#123;encode=&#34;&#34;&#125;</code> in your weblog entries to display email addresses, this extension will generate an accessible link, instead of the JavaScript generated one. There is hardly any obfuscation, except that the . are replaced with <code>&#38;#46;</code> and the @ is replaced with <code>&#38;#64;</code>. This also means the email address is more likely to be picked up by bots and harvesters, so use at your own risk.</p>
<p>If you&#8217;re using the <code>encode</code>-tag in your templates, this extension will have no effect. But then again, you could just as well not use the <code>encode</code>-tag there.</p>
<h2>Example</h2>
<p>Using the extension, this&#8230;</p>
<pre><code>&#123;encode=&#34;example@domain.com&#34; title=&#34;Send an email&#34;&#125;</code></pre>
<p>&#8230;will be converted to&#8230;</p>
<pre><code>&#60;a href=&#34;mailto:example&#38;#64;domain&#38;#46;com&#34;&#62;Send an email&#60;/a&#62;</code></pre>
]]></content:encoded>
      <dc:date>2008-05-08T08:54:00+01:00</dc:date>
    </item>

    <item>
      <title>EE: Google Mini Plugin</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Dev&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fee-google-mini-plugin%2F&amp;seed_title=EE%3A+Google+Mini+Plugin</link>
      <guid>http://loweblog.com/freelance/article/ee&#45;google&#45;mini&#45;plugin/</guid>
      <description>This plugin lets you integrate search results from your Google Mini search appliance (GM) into ExpressionEngine seamlessly. If you&#8217;re using the GM to index your web site or intranet, this plugin will handle the search requests to it, retrieve the search results in XML format, and parses them just the way you want. You don&#8217;t have to learn any XSLT, you don&#8217;t have to leave the domain of your main site, just set up a template and you&#8217;re done.</description>
      <dc:subject>Add&#45;Ons, ExpressionEngine, Searching</dc:subject>
      <content:encoded><![CDATA[<p>This plugin lets you integrate search results from your <a href="http://www.google.com/enterprise/mini/">Google Mini search appliance</a> (GM) into <a href="http://expressionengine.com/index.php?affiliate=lodewijk">ExpressionEngine</a> seamlessly. If you&#8217;re using the GM to index your web site or intranet, this plugin will handle the search requests to it, retrieve the search results in XML format, and parses them just the way you want. You don&#8217;t have to learn any XSLT, you don&#8217;t have to leave the domain of your main site, just set up a template and you&#8217;re done.</p>
<p>&rarr; <a href="/downloads/pi.googlemini.zip" title="5KB .zip file">Download the ExpressionEngine Google Mini plugin, version 1.0</a></p>

<ul>
	<li>
		<a href="#gm_results">Search results</a>
		<ul>
			<li><a href="#results_parameters">Parameters</a></li>
			<li><a href="#results_conditionals">Conditionals</a></li>
			<li><a href="#results_variables">Single variables</a></li>
			<li><a href="#results_pairs">Variable pairs</a></li>	
			<li><a href="#results_example">Example</a></li>
		</ul>
	</li>
	<li><a href="#gm_keywords">Keywords</a></li>
	<li><a href="#gm_form">Search form</a></li>
</ul>

<h2 id="gm_results">Search results</h2>

<p>The main tag pair you will need is <code>&#123;exp:googlemini:results&#125;</code>. This contains several single variables and variable pairs that let you set up your search results page.</p>
	
<h3 id="results_parameters">Parameters</h3>

<ul>
	<li><a href="#par_host">host="googlemini.domain.com"</a></li>
	<li><a href="#par_request_parameters">Request Parameters</a></li>
</ul>

<h4 id="par_host">host=</h4>

<pre><code>host="googlemini.domain.com"</code></pre>

<p>The host name assigned to our Google Mini search appliance.</p>

<h4 id="par_request_parameters">Request parameters</h4>

<p>All <a href="http://code.google.com/apis/searchappliance/documentation/46/xml_reference.html#request_parameters">Request Parameters</a> used by the Google Mini search appliance are available. <em>All Request Parameters will be overwritten by GET variables in the url</em>. For example:</p>

<pre><code>client="default_frontend" site="default_collection"</code></pre>

<h3 id="results_conditionals">Conditional variables</h3>

<ul>
	<li><a href="#var_keymatch">&#123;if keymatch&#125;</a></li>
</ul>

<h4 id="var_keymatch">if keymatch</h4>
<pre><code>&#123;if keymatch&#125;
 content
&#123;/if&#125;</code></pre>
<p>This conditional lets you display content if a KeyMatch was found for the current search.</p>

<p><strong>Note:</strong> in addition to these conditionals, all <em>single variables</em> can be used as conditionals as well.</p>

<h3 id="results_variables">Single variables</h3>

<table>
	<caption>Single variables available in the &#123;exp:googlemini:results&#125; tag</caption>
	<colgroup>
		<col class="var" />
		<col class="desc" />
	</colgroup>
	<thead>
		<tr>
			<th scope="col">Variable</th>
			<th scope="col">Description</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>&#123;approx_results&#125;</td>
			<td>The estimated total number of results for the search. See also: <a href="http://code.google.com/apis/searchappliance/documentation/46/xml_reference.html#appendix_num_results">Estimated vs. Actual Number of Results</a></td>
		</tr>
		<tr>
			<td>&#123;current_page&#125;</td>
			<td>Current page number of search results</td>
		</tr>
		<tr>
			<td>&#123;end_result&#125;</td>
			<td>Absolute number of the last search result being displayed</td>
		</tr>
		<tr>
			<td>&#123;keymatch_description&#125;</td>
			<td>KeyMatch description for current search, as indicated in your Google Mini control panel</td>
		</tr>
		<tr>
			<td>&#123;keymatch_url&#125;</td>
			<td>KeyMatch URL for current search, as indicated in your Google Mini control panel</td>
		</tr>
		<tr>
			<td>&#123;keywords&#125;</td>
			<td>Search keywords, HTML-safe</td>
		</tr>
		<tr>
			<td>&#123;keywords_raw&#125;</td>
			<td>Search keywords, unaltered</td>
		</tr>
		<tr>
			<td>&#123;keywords_url&#125;</td>
			<td>Search keywords, URL-safe</td>
		</tr>
		<tr>
			<td>&#123;next_qs&#125;</td>
			<td>Query string to use in a URL to the next page of search results</td>
		</tr>
		<tr>
			<td>&#123;previous_qs&#125;</td>
			<td>Query string to use in a URL to the previous page of search results</td>
		</tr>
		<tr>
			<td>&#123;search_url&#125;</td>
			<td>Complete URL used to fetch the search results from your Google Mini search appliance</td>
		</tr>
		<tr>
			<td>&#123;start_result&#125;</td>
			<td>Absolute number of the first search result being displayed</td>
		</tr>
		<tr>
			<td>&#123;time&#125;</td>
			<td>Time it took for the Google Mini to come up with the search results</td>
		</tr>
		<tr>
			<td>&#123;total_pages&#125;</td>
			<td>Total number of pages with search results, based on the estimated total results (<code>&#123;approx_results&#125;</code>) and the <strong>num</strong> parameter defined in the <a href="#par_request_parameters">Request Parameters</a></td>
		</tr>
		<tr>
			<td>&#123;total_results&#125;</td>
			<td>The total number of search results being displayed</td>
		</tr>
		<tr>
			<td>&#123;total_synonyms&#125;</td>
			<td>Total number of synonyms found for current search</td>
		</tr>
	</tbody>
</table>


<h3 id="results_pairs">Variable pairs</h3>

<ul>
	<li><a href="#var_entries">&#123;entries&#125;</a></li>
	<li><a href="#var_synonyms">&#123;synonyms&#125;</a></li>
	<li><a href="#var_pagination">&#123;pagination&#125;</a></li>
</ul>

<h4 id="var_entries">entries</h4>
<pre><code>&#123;entries&#125;
 &lt;div&#123;if filtered&#125; class=&quot;filtered&quot;&#123;/if&#125;&gt;
  &lt;h3&gt;&lt;a href=&quot;&#123;url&#125;&quot;&gt;&#123;title&#125;&lt;/a&gt;&lt;/h3&gt;
  &lt;p&gt;&#123;excerpt&#125;&lt;/p&gt;
  &lt;p class=&quot;meta&quot;&gt;&#123;display_url&#125;&lt;/p&gt;
 &lt;/div&gt;
&#123;/entries&#125;</code></pre>

<table>
	<caption>Available variables in &#123;entries&#125; tag pair</caption>
	<colgroup>
		<col class="var" />
		<col class="desc" />
	</colgroup>
	<thead>
		<tr>
			<th scope="col">Variable</th>
			<th scope="col">Description</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>&#123;cache_id&#125;</td>
			<td>Cache id of the found page</td>
		</tr>
		<tr>
			<td>&#123;count&#125;</td>
			<td>The count out of the current search results being displayed</td>
		</tr>
		<tr>
			<td>&#123;crawldate&#125;</td>
			<td>The date the page was indexed</td>
		</tr>
		<tr>
			<td>&#123;display_url&#125;</td>
			<td>Stripped down version of the found page</td>
		</tr>
		<tr>
			<td>&#123;encoding&#125;</td>
			<td>Character encoding of the found page</td>
		</tr>
		<tr>
			<td>&#123;excerpt&#125;</td>
			<td>Excerpt of the found page</td>
		</tr>
		<tr>
			<td>&#123;if filtered&#125;</td>
			<td>Displays content if the result was part of a parent directory</td>
		</tr>
		<tr>
			<td>&#123;language&#125;</td>
			<td>Language of the found page</td>
		</tr>
		<tr>
			<td>&#123;more_url&#125;</td>
			<td>URL to use to compose a link to a specific site or directory search using the <code>site:</code> syntax</td>
		</tr>
		<tr>
			<td>&#123;rank&#125;</td>
			<td>Rank assigned to the page by the Google Mini</td>
		</tr>
		<tr>
			<td>&#123;result_number&#125;</td>
			<td>Absolute result number</td>
		</tr>
		<tr>
			<td>&#123;size&#125;</td>
			<td>Size in KB of the found page</td>
		</tr>
		<tr>
			<td>&#123;title&#125;</td>
			<td>Title of the found page</td>
		</tr>
		<tr>
			<td>&#123;url&#125;</td>
			<td>URL of the found page</td>
		</tr>
	</tbody>
</table>

<h4 id="var_synonyms">synonyms</h4>
<pre><code>&#123;synonyms&#125;
 &#123;synonym_count&#125;: &lt;a href=&quot;&#123;synonym_url&#125;&quot;&gt;&#123;synonym_name&#125;&lt;/a&gt;
&#123;/synonyms&#125;</code></pre>

<table>
	<caption>Available variables in &#123;synonyms&#125; tag pair</caption>
	<colgroup>
		<col class="var" />
		<col class="desc" />
	</colgroup>
	<thead>
		<tr>
			<th scope="col">Variable</th>
			<th scope="col">Description</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>&#123;synonym_name&#125;</td>
			<td>Name of the synonym found</td>
		</tr>
		<tr>
			<td>&#123;synonym_url&#125;</td>
			<td>Url of the synonym found</td>
		</tr>
		<tr>
			<td>&#123;synonym_count&#125;</td>
			<td>The count out of the current synonym being displayed</td>
		</tr>
	</tbody>
</table>

<h4 id="var_pagination">pagination</h4>
<pre><code>&#123;pagination&#125;
 &#123;if is_active&#125;
  &lt;strong&gt;&#123;page_count&#125;&lt;/strong&gt;
 &#123;if:else&#125;
  &lt;a href=&quot;&#123;path=search&#125;&#123;query_string&#125;&quot;&gt;&#123;page_count&#125;&lt;/a&gt;
 &#123;/if&#125;
&#123;/pagination&#125;</code></pre>

<table>
	<caption>Available variables in &#123;pagination&#125; tag pair</caption>
	<colgroup>
		<col class="var" />
		<col class="desc" />
	</colgroup>
	<thead>
		<tr>
			<th scope="col">Variable</th>
			<th scope="col">Description</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>&#123;if is_active&#125;</td>
			<td>Conditional variable to display content if current page is active</td>
		</tr>
		<tr>
			<td>&#123;page_count&#125;</td>
			<td>The count out of the current page being displayed</td>
		</tr>
		<tr>
			<td>&#123;query_string&#125;</td>
			<td>The query string used in the URL to navigate to a certain page</td>
		</tr>
	</tbody>
</table>

<h3 id="results_example">Example</h3>

<pre><code>&#123;exp:googlemini:results host=&quot;googlemini.domain.com&quot; oe=&quot;utf8&quot;&#125;
	
&#123;if keywords&#125;
 &lt;p&gt;Searched for &lt;strong&gt;&#123;keywords&#125;&lt;/strong&gt;&lt;br /&gt;
 Results &lt;strong&gt;&#123;start_result&#125; &ndash; &#123;end_result&#125;&lt;/strong&gt; of about &lt;strong&gt;&#123;approx_results&#125;&lt;/strong&gt;.&lt;/p&gt;
&#123;/if&#125;

&#123;if keymatch&#125;
 &lt;p&gt;KeyMatch: &lt;a href=&quot;&#123;keymatch_url&#125;&quot;&gt;&#123;keymatch_description&#125;&lt;/a&gt;&lt;/p&gt;
&#123;/if&#125;

&#123;if total_synonyms&#125;
 &lt;h3&gt;Also try:&lt;/h3&gt;
 &lt;ul&gt;
  &#123;synonyms&#125;
   &lt;li&gt;&lt;a href=&quot;&#123;path=search&#125;?q=&#123;synonym_url&#125;&quot;&gt;&#123;synonym_name&#125;&lt;/a&gt;&lt;/li&gt;
  &#123;/synonyms&#125;
 &lt;/ul&gt;
&#123;/if&#125;

&#123;entries&#125;
 &#123;if count == 1&#125;&lt;ol id=&quot;searchresults&quot;&gt;&#123;/if&#125;
  &lt;li&#123;if filtered&#125; class=&quot;level2&quot;&#123;/if&#125;&gt;
   &lt;h3&gt;&lt;a href=&quot;&#123;url&#125;&quot;&gt;&#123;title&#125;&lt;/a&gt;&lt;/h3&gt;
   &#123;if excerpt&#125;&lt;span class=&quot;excerpt&quot;&gt;&#123;excerpt&#125;&lt;/span&gt;&#123;/if&#125;
   &lt;span class=&quot;meta&quot;&gt;&#123;display_url&#125;&lt;/span&gt;
   &#123;if more_url&#125;&lt;span class=&quot;sitesearch&quot;&gt;[ &lt;a href=&quot;&#123;path=search&#125;?q=site:&#123;more_url&#125;%20&#123;keywords_url&#125;&quot;&gt;More results from &#123;more_url&#125;&lt;/a&gt; ]&lt;/span&gt;&#123;/if&#125;
  &lt;/li&gt;
 &#123;if count == total_results&#125;&lt;/ol&gt;&#123;/if&#125;
&#123;/entries&#125;

&#123;if total_pages &gt; 1&#125;
 &lt;p class=&quot;pagination&quot;&gt;
  &lt;span class=&quot;count&quot;&gt;&#123;current_page&#125;/&#123;total_pages&#125;&lt;/span&gt;
  &#123;if previous_qs&#125;&lt;a class=&quot;prev&quot; href=&quot;&#123;path=search&#125;&#123;previous_qs&#125;&quot;&gt;Previous page&lt;/a&gt;&#123;/if&#125;
  &#123;pagination&#125;&#123;if is_active&#125;&lt;strong&gt;&#123;page_count&#125;&lt;/strong&gt; &#123;if:else&#125;&lt;a href=&quot;&#123;path=search&#125;&#123;query_string&#125;&quot;&gt;&#123;page_count&#125;&lt;/a&gt; &#123;/if&#125;&#123;/pagination&#125;
  &#123;if next_qs&#125;&lt;a class=&quot;next&quot; href=&quot;&#123;path=search&#125;&#123;next_qs&#125;&quot;&gt;Next page&lt;/a&gt;&#123;/if&#125;
 &lt;/p&gt;
&#123;/if&#125;

&#123;/exp:googlemini:results&#125;</code></pre>


<h2 id="gm_keywords">Keywords</h2>
<p>To display keywords outside the results-tags, use the single tag <code>&#123;exp:googlemini:keywords&#125;</code>, for example:</p>
<pre><code>&lt;title&gt;&#123;exp:googlemini:keywords&#125; - Search - My Site Name&lt;/title&gt;</code></pre>


<h2 id="gm_form">Search form</h2>
<p>To create a search form, simply point a form to your search results template and use an input field with <code>name=&quot;q&quot;</code>. For example:</p>
<pre><code>&lt;form action=&quot;&#123;path=search&#125;&quot; method=&quot;get&quot;&gt;
 &lt;fieldset&gt;
  &lt;legend&gt;Search this site&lt;/legend&gt;
  &lt;label for=&quot;keywords&quot;&gt;Keywords&lt;/label&gt;
  &lt;input type=&quot;text&quot; name=&quot;q&quot; id=&quot;keywords&quot; value=&quot;&#123;exp:googlemini:keywords&#125;&quot; /&gt;
  &lt;button type=&quot;submit&quot;&gt;Search&lt;/button&gt;
 &lt;/fieldset&gt;
&lt;/form&gt;</code></pre>


]]></content:encoded>
      <dc:date>2008-03-19T11:28:00+01:00</dc:date>
    </item>

    <item>
      <title>EE search bookmarklet</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Dev&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fee-search-bookmarklet%2F&amp;seed_title=EE+search+bookmarklet</link>
      <guid>http://loweblog.com/freelance/article/ee&#45;search&#45;bookmarklet/</guid>
      <description>If you&#8217;re anything like me, you&#8217;d agree that ExpressionEngine&#8217;s search functionality is adequate, but not as good as, say, Google. So, you&#8217;d rather use the latter than the former to search through expressionengine.com. And if you&#8217;re anything like me, you&#8217;re a bit lazy and you like to get repetitive things (like typing in site:expressionengine.com) done quickly. Now you can.</description>
      <dc:subject>Bookmarklets, ExpressionEngine, Searching</dc:subject>
      <content:encoded><![CDATA[<p>If you&#8217;re anything like me, you&#8217;d agree that <a href="http://www.expressionengine.com/index.php?affiliate=lodewijk">ExpressionEngine</a>&#8217;s search functionality is adequate, but not as good as, say, Google. So, you&#8217;d rather use the latter than the former to search through expressionengine.com. And if you&#8217;re anything like me, you&#8217;re a bit lazy and you like to get repetitive things (like typing in <kbd>site:expressionengine.com</kbd>) done quickly. Now you can.</p>
<p>Drag the following link to your browser&#8217;s toolbar and behold the speediness of bookmarklets (also known as &#8216;favelets&#8217;): <a href="javascript:if(w=prompt('Search%20expressionengine.com:',''))&#123;top.location.href='http://google.com/search?q=site%3Aexpressionengine.com+'+w;&#125;">!ee</a></p>
<p>That will speed up your support searches big time.</p>
]]></content:encoded>
      <dc:date>2007-12-11T20:03:00+01:00</dc:date>
    </item>

    <item>
      <title>Clean up your clean installation</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Dev&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fclean-up-your-clean-installation%2F&amp;seed_title=Clean+up+your+clean+installation</link>
      <guid>http://loweblog.com/freelance/article/clean&#45;up&#45;your&#45;clean&#45;installation/</guid>
      <description>When you install ExpressionEngine, it automatically creates some default templates and categories for you, among other things. But since I like my clean installations really spotless, I created some sql queries to clean up your clean install.</description>
      <dc:subject>ExpressionEngine, SQL</dc:subject>
      <content:encoded><![CDATA[<p>When you install <a href="http://www.expressionengine.com/index.php?affiliate=lodewijk">ExpressionEngine</a>, it automatically creates some default templates and categories for you, among other things. But since I like my clean installations really spotless, I created some sql queries to clean up your clean install.</p>
<h2>What does it do?</h2>
<p>The queries will truncate some tables and insert some defaults that I work with regularly:</p>
<ul>
<li>Delete all template groups and insert a new one: home</li>
<li>Delete all templates and insert a new one in home: index</li>
<li>Delete all html-buttons and insert buttons for <code>&#60;h2&#62;</code>, <code>&#60;h3&#62;</code>, <code>&#60;strong&#62;</code> and <code>&#60;em&#62;</code>; usually all the formatting an editor would need</li>
<li>Delete all categories and category groups</li>
<li>Delete all weblog entries</li>
<li>Delete all but one weblog fields</li>
</ul>
<p>That&#8217;s it. You could probably do more, but this gives me a great start for new projects.</p>
<h2>The SQL</h2>
<pre><code># get rid of template groups
TRUNCATE TABLE exp_template_groups;
INSERT INTO exp_template_groups (group_id,site_id,group_name,group_order,is_site_default,is_user_blog) VALUES (NULL,'1','home','1','y','n');

# get rid of templates
TRUNCATE TABLE exp_templates;
INSERT INTO exp_templates (template_id,site_id,group_id,template_name,save_template_file,template_type,template_data,template_notes,edit_date,cache,refresh,no_auth_bounce,enable_http_auth,allow_php,php_parse_location,hits) VALUES (NULL,'1','1','index','n','webpage','','','0','n','','','n','n','o','');

# better html buttons
TRUNCATE TABLE exp_html_buttons;
INSERT INTO exp_html_buttons VALUES (1, 1, 0, 'strong', '&#60;strong&#62;', '&#60;/strong&#62;', 'b', 4, '1');
INSERT INTO exp_html_buttons VALUES (2, 1, 0, 'em', '&#60;em&#62;', '&#60;/em&#62;', 'i', 3, '1');
INSERT INTO exp_html_buttons VALUES (3, 1, 0, 'h3', '&#60;h3&#62;', '&#60;/h3&#62;', '3', 2, '1');
INSERT INTO exp_html_buttons VALUES (4, 1, 0, 'h2', '&#60;h2&#62;', '&#60;/h2&#62;', '2', 1, '1');

# no categories please
TRUNCATE TABLE exp_category_posts;
TRUNCATE TABLE exp_categories;
TRUNCATE TABLE exp_category_groups;
TRUNCATE TABLE exp_category_field_data;

# no weblog entries please
TRUNCATE TABLE exp_weblog_titles;
TRUNCATE TABLE exp_weblog_data;
TRUNCATE TABLE exp_weblog_fields;

# just one weblog field
INSERT INTO exp_weblog_fields VALUES (1, 1, 1, 'body', 'Body', '', 'textarea', '', 'n', 0, 0, 'blog', 0, 'date', 'desc', 0, 10, 0, 'n', 'ltr', 'y', 'n', 'xhtml', 'y', 1);
ALTER TABLE exp_weblog_data DROP field_id_2, DROP field_ft_2, DROP field_id_3, DROP field_ft_3;</code></pre>
]]></content:encoded>
      <dc:date>2007-12-02T17:00:00+01:00</dc:date>
    </item>

    <item>
      <title>EE: Title plugin</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Dev&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fee-title-plugin%2F&amp;seed_title=EE%3A+Title+plugin</link>
      <guid>http://loweblog.com/freelance/article/ee&#45;title&#45;plugin/</guid>
      <description>This ExpressionEngine plugin lets you retrieve an entry title quickly and effectively. Instead of the default &#123;exp:weblog:entries&#125;&#45;tag with all its parameters, just use this plugin if you only want to display a title. Very useful for breadcrumbs or document &#60;title&#62;s.</description>
      <dc:subject>Add&#45;Ons, ExpressionEngine</dc:subject>
      <content:encoded><![CDATA[<p>This <a href="http://www.expressionengine.com/index.php?affiliate=lodewijk">ExpressionEngine</a> plugin lets you retrieve an entry title quickly and effectively. Instead of the default <code>&#123;exp:weblog:entries&#125;</code>-tag with all its parameters, just use this plugin if you only want to display a title. Very useful for breadcrumbs or document <code>&#60;title&#62;</code>s.</p>
<p><a href="/downloads/pi.title.zip" title="1.9KB .zip file">&#8594; Download the Title plugin, version 1.1</a></p>
<p>By default, the plugin will output a title, formatted with <a href="http://expressionengine.com/downloads/details/xhtml_typography/">xhtml light</a> (you don&#8217;t need that plugin, by the way). In some cases, you can use the <code>custom_field</code>-parameter to display a custom field of your choice instead of the title, which could be useful for multilingual sites. The closing tag is not required.</p>
<h2>Entry title</h2>
<p><code>&#123;exp:title:entry&#125;</code>: Get the title for a weblog entry.</p>
<h3>Parameters</h3>
<ul>
<li><code>entry_id</code></li>
<li><code>url_title</code></li>
<li><code>weblog_id</code></li>
<li><code>weblog</code> (the short name of a weblog)</li>
<li><code>custom_field</code> (the short name of a custom field)</li>
<li><code>show_error</code> (only in combination with the <code>custom_field</code> parameter, defaults to &#8220;no&#8221;)</li>
</ul>
<h3>Examples</h3>
<pre><code>&#123;exp:title:entry entry_id="15"&#125;
&#123;exp:title:entry url_title="&#123;segment_2&#125;" weblog="default_site"&#125;
&#123;exp:title:entry url_title="&#123;segment_3&#125;" custom_field="title_&#123;language&#125;"&#125;</code></pre>
<h2>Category title</h2>
<p><code>&#123;exp:title:category&#125;</code>: Get the category name for a category.</p>
<h3>Parameters</h3>
<ul>
<li><code>category_id</code></li>
<li><code>url_title</code></li>
<li><code>category_group</code></li>
<li><code>custom_field</code> (the short name of a custom field)</li>
<li><code>show_error</code> (only in combination with the <code>custom_field</code> parameter, defaults to &#8220;no&#8221;)</li>
</ul>
<h3>Examples</h3>
<pre><code>&#123;exp:title:category category_id="18"&#125;
&#123;exp:title:category category_id="C24"&#125;
&#123;exp:title:category url_title="&#123;segment_4&#125;" category_group="1"&#125;
&#123;exp:title:category url_title="&#123;segment_3&#125;" custom_field="title_&#123;language&#125;"&#125;</code></pre>
<p>As you can see, you can use <code>C24</code> as input for the <code>category_id</code> parameter. The C will be ignored.</p>
<h2>Weblog title</h2>
<p><code>&#123;exp:title:weblog&#125;</code>: Get the title for a weblog.</p>
<h3>Parameters</h3>
<ul>
<li><code>weblog_id</code></li>
<li><code>weblog_name</code></li>
</ul>
<h3>Examples</h3>
<pre><code>&#123;exp:title:weblog weblog_id="3"&#125;
&#123;exp:title:weblog weblog_name="&#123;segment_1&#125;"&#125;</code></pre>
<h2>Site title</h2>
<p><code>&#123;exp:title:site&#125;</code>: Get the title for a site.</p>
<h3>Parameters</h3>
<ul>
<li><code>site_id</code></li>
<li><code>site_name</code></li>
</ul>
<h3>Examples</h3>
<pre><code>&#123;exp:title:site site_id="1"&#125;
&#123;exp:title:site site_name="&#123;segment_1&#125;"&#125;</code></pre>
<h2>New in version 1.1 &#8211; 2007.11.12</h2>
<ul>
<li>Added category title</li>
<li>Added weblog title</li>
<li>Added site title</li>
</ul>
]]></content:encoded>
      <dc:date>2007-08-06T12:33:00+01:00</dc:date>
    </item>

    <item>
      <title>Multiple Rick Birthday Contest</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Dev&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fmultiple-rick-birthday-contest%2F&amp;seed_title=Multiple+Rick+Birthday+Contest</link>
      <guid>http://loweblog.com/freelance/article/multiple&#45;rick&#45;birthday&#45;contest/</guid>
      <description>It was Rick Ellis&#8217; birthday the other day, and there&#8217;s a new version of ExpressionEngine coming up, so his colleagues came up with a nice little contest: take any of the given pictures of the EllisLab CEO and use them as you see fit. So, without any further ado, here&#8217;s my shot at free EE goodies!</description>
      <dc:subject>Contest, ExpressionEngine</dc:subject>
      <content:encoded><![CDATA[<p>It was Rick Ellis&#8217; birthday the other day, and there&#8217;s a new version of <a href="http://expressionengine.com/index.php?affiliate=lodewijk">ExpressionEngine</a> coming up, so his colleagues came up with <a href="http://expressionengine.com/blog/entry/160_preview_and_multiple_rick_manager_birthday_contest/">a nice little contest</a>: take any of the given pictures of the EllisLab CEO and use them as you see fit. So, without any further ado, here&#8217;s my shot at free EE goodies!</p>
<p><img src="http://loweblog.com/images/monty-ellis.png" width="360" height="254" alt="Rick Ellis: I'm a CEO and I'm okay!" /></p>]]></content:encoded>
      <dc:date>2007-06-18T19:30:00+01:00</dc:date>
    </item>

    
    </channel>
</rss>