<?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>Webdesign</title>
	<atom:link href="http://www.thelongrun.de/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thelongrun.de/blog</link>
	<description>Das Webdesign-Blog des Unternehmens Long Run International Ltd.</description>
	<lastBuildDate>Sun, 03 Jan 2010 12:15:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Aktualisierung der Internetseite www.webdesign-im-ruhrgebiet.de</title>
		<link>http://www.thelongrun.de/blog/competition/aktualisierung-der-internetseite-www-webdesign-im-ruhrgebiet-de/</link>
		<comments>http://www.thelongrun.de/blog/competition/aktualisierung-der-internetseite-www-webdesign-im-ruhrgebiet-de/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 15:53:49 +0000</pubDate>
		<dc:creator>Stefan Klose</dc:creator>
				<category><![CDATA[Two fisted Competition]]></category>
		<category><![CDATA[Praktikant]]></category>
		<category><![CDATA[Ruhrgebiet]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.thelongrun.de/blog/?p=142</guid>
		<description><![CDATA[Da mir heute Morgen ein Termin ausgefallen ist und ich auf einmal vor einem (nahezu) leeren Kalender stand, habe ich die Zeit genutzt um eine schon l&#228;nger brach liegende Internetseite zu aktualisieren. Im Januar 2007 habe ich f&#252;r etwa 2 Wochen einen Praktikanten besch&#228;ftigt. Der hat keinen Kaffee gekocht oder den Rasen gem&#228;ht, sondern sich [...]]]></description>
			<content:encoded><![CDATA[<p>Da mir heute Morgen ein Termin ausgefallen ist und ich auf einmal vor einem (nahezu) leeren Kalender stand, habe ich die Zeit genutzt um eine schon l&#228;nger brach liegende Internetseite zu aktualisieren. Im Januar 2007 habe ich f&#252;r etwa 2 Wochen einen Praktikanten besch&#228;ftigt. Der hat keinen Kaffee gekocht oder den Rasen gem&#228;ht, sondern sich produktiv und mit vorzeigbaren Ergebnissen mit dem Thema Webdesign auseinander gesetzt.</p>
<p>Das Resultat war damals die Internetseite <a href="http://www.webdesign-im-ruhrgebiet.de">www.webdesign-im-ruhrgebiet.de</a>. Bisher war dort ein Drupal-System im Einsatz, das nat&#252;rlich sowohl vollkommen &#252;berdimensioniert als auch hoffnungslos outdated war. Heute Morgen schlugen dem System die letzten Sekunden. Jetzt habe ich die etwa 30 Text-Abs&#228;tze in eine einzelne HTML-Datei &#252;berf&#252;hrt und diese neu hochgeladen. Konsquent ist die Seite nun sehr &#252;bersichtlich und stellt die Arbeit des Praktikanten ganz gut dar.</p>
<p>Ich werde diese sicherlich noch ein wenig ausarbeiten, aber f&#252;r den Anfang reicht das erstmal. Schlie&#223;lich soll die Seite ja nicht nur Zeit kosten, sondern auch einen im Vergleich zum Aufwand angemessenen Nutzen bringen.</p>
<div id="attachment_143" class="wp-caption alignnone" style="width: 410px"><a href="http://www.thelongrun.de/blog/wp-content/uploads/2009/10/Screenshot-webdesign-im-ruhrgebiet.de.png"><img class="size-full wp-image-143 " title="Screenshot der neuen Internetseite" src="http://www.thelongrun.de/blog/wp-content/uploads/2009/10/Screenshot-webdesign-im-ruhrgebiet.de.png" alt="Screenshot der neuen Internetseite" width="400" /></a><p class="wp-caption-text">Screenshot der neuen Internetseite</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.thelongrun.de/blog/competition/aktualisierung-der-internetseite-www-webdesign-im-ruhrgebiet-de/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Install these WordPress Plugins right now!</title>
		<link>http://www.thelongrun.de/blog/competition/install-these-wordpress-plugins-right-now/</link>
		<comments>http://www.thelongrun.de/blog/competition/install-these-wordpress-plugins-right-now/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 10:37:02 +0000</pubDate>
		<dc:creator>Stefan Klose</dc:creator>
				<category><![CDATA[Two fisted Competition]]></category>
		<category><![CDATA[Akismet]]></category>
		<category><![CDATA[Analytics]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Contact Form]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[productivtiy]]></category>
		<category><![CDATA[Sitemap]]></category>
		<category><![CDATA[useful]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[wpAntivirus]]></category>
		<category><![CDATA[wpSEO]]></category>

		<guid isPermaLink="false">http://www.thelongrun.de/blog/?p=141</guid>
		<description><![CDATA[Several month ago i announced to extend the usage of Worpdress as the main CMS for my customers. Since the beginning, i&#8217;m experiencing with different kind of plugins. There&#8217;s no doubt that it&#8217;s absolutely necessary to extend your WordPress installation with plugins. Most of those Top list of plugins contain at least the following items. [...]]]></description>
			<content:encoded><![CDATA[<p>Several month ago i announced to extend the usage of Worpdress as the main CMS for my customers. Since the beginning, i&#8217;m experiencing with different kind of plugins. There&#8217;s no doubt that it&#8217;s absolutely necessary to extend your WordPress installation with plugins. Most of those Top list of plugins contain at least the following items.</p>
<p>This are, from my point of view, absolutely must-have plugins. They provide all-day useful functionality to increase productivity, integrate your WordPress with other (important) services and secure it right from the start. Except two of this plugins they all come at no cost. I personally don&#8217;t mind spending a few Euros on professional made and (to me) very useful software. Therefore i won&#8217;t exclude this software from the list as others have done before:</p>
<h2>Akismet</h2>
<p>That&#8217;s i think the most-used plugins for WordPress since ever. Akismet is a spam blocker that checks your comments and trackbacks automatically for spam entries and blocks or removes them. It&#8217;s based on a collaborative approach and free for personal use. Any professional bloggers are asked to pay 5$ a month to get an professional API key.</p>
<p><a href="http://akismet.com/">http://akismet.com/</a></p>
<h2>Contact Form 7</h2>
<p>Most people that deal with WordPress on a professional basis are wondering why WordPress isn&#8217;t providing a contact form. The usual answer (&#8216;to keep it simple and stupid&#8217;) caused Takayuki Miyoshi to create the awesome Contact Form 7 plugins. It&#8217;s a full-featured, out-of-the-box usable contact form that is available in 43 languages. Based on modules for form elements, it&#8217;s also very easy to adjust to your personal needs and &#8211; for future &#8211; also to HTML 5 improvements. It also integrates with Akismet for spam filtering and connects to the reCaptcha plugin that prohibits spoofing.</p>
<p><a href="http://contactform7.com/">http://contactform7.com/</a></p>
<h2>Google Analyticator</h2>
<p>Google Analytics is frequently named as the core of the data kraken. I see it as one of Google&#8217;s most usable tools. When registering at Google Analytics, you&#8217;ll get some JavaScript code to track your visitors. This plugin allows to add the tracking code right at the header or footer of your website without changing the template files. This is a significant improvement as you just can add any templates you want, use Google Analytics with them, update them and don&#8217;t need to re-add the JavaScript code.</p>
<p>Additionally it adds a new element to your dashboard that shows your 30-day visitor development and some key statistics on your site performance.</p>
<p><a href="http://plugins.spiralwebconsulting.com/analyticator.html">http://plugins.spiralwebconsulting.com/analyticator.html</a></p>
<h2>Google XML Sitemaps</h2>
<p>This is definitely a must-have plugin. A sitemap generator is a tool that creates a full overview of your whole site structure, called a sitemap. This sitemap is made available to search engines and allows them to get to know your site without loading each single page. The Google XML Sitemaps plugins additionally informs the search engines about updates to your sites and generates this sitemap automatically once you update your site. It also allows to customize lots of options regarding your sitemap.</p>
<p><a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/">http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/</a></p>
<h2>wpAntivirus</h2>
<p>There have been numerous kind of hacks for WordPress in the past. To prohibit anyone from being incognito in your code, wpAntivirus checks for common methods to conterminate CMS installations. It allows you to configure a daily check and alert for any security breaches.</p>
<p><a href="http://wpantivirus.com/">http://wpantivirus.com/</a></p>
<h2>wpSEO</h2>
<p>wpSEO is maybe the most professional plugin for WordPress. It improves WordPress&#8217; functionality everywhere it lacks of options for search engine optimization. Functionality contains generating of titles, meta description and keywords and the ability to prohibit duplicate content. There are plenty of ways to set your own site title, meta description and meta keywords without editing the template files as well as any robot-related options. It also contains a dashboard plugin with a short overview of your Google, Yahoo and Alexa ranks. For personal use one will have to pay 20€ as a one-time fee. To use it in any of your customer installations, you&#8217;ll have to pay at least 50€ and up to 100€. From my point of view, this plugin is worth it&#8217;s money as it solves you many problems and saves a lot of time.</p>
<p><a href="http://www.wpseo.de/">http://www.wpseo.de/</a></p>
<p>That&#8217;s my personal list of most-valuable and most-necessary WordPress plugins. I can imagine so many more interesting and notable plugins, but this ones are for everyone and every purpose. In the next days i will start adding lists of plugins by topic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thelongrun.de/blog/competition/install-these-wordpress-plugins-right-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>15 Easy Steps to A/B testing in WordPress</title>
		<link>http://www.thelongrun.de/blog/competition/15-easy-steps-to-ab-testing-in-wordpress/</link>
		<comments>http://www.thelongrun.de/blog/competition/15-easy-steps-to-ab-testing-in-wordpress/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 09:20:49 +0000</pubDate>
		<dc:creator>Stefan Klose</dc:creator>
				<category><![CDATA[Two fisted Competition]]></category>
		<category><![CDATA[A/B testing]]></category>
		<category><![CDATA[Conversion Rate]]></category>
		<category><![CDATA[Google Website Optimizer]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.thelongrun.de/blog/?p=139</guid>
		<description><![CDATA[This Create an Account for Google Website Optimizer That&#8217;s the easy stuff: Go to www.google.com/websiteoptimizer and login with your Google Account or create a new one. Once you&#8217;re done with that, proceed to step 2. Click &#8220;Create another experiment&#8221; in Google Website Optimizer Choose &#8220;Multivariate Experiment&#8221; to start Multivariate experiments allow you to change the [...]]]></description>
			<content:encoded><![CDATA[<p>This</p>
<ol>
<li> Create an Account for Google Website Optimizer<br />
That&#8217;s the easy stuff: Go to www.google.com/websiteoptimizer and login with your Google Account or create a new one. Once you&#8217;re done with that, proceed to step 2.</li>
<li> Click &#8220;Create another experiment&#8221; in Google Website Optimizer</li>
<li> Choose &#8220;Multivariate Experiment&#8221; to start<br />
Multivariate experiments allow you to change the behavior of your website in multiple ways and is, in comparison to the &#8220;A/B experiment&#8221; an advanced tool. Choose this option to get the most of A/B testing. On the next page, Google Website Optimizer shows you a list of four things that should have been done up to now. Overall, this is the creation of your website variations that should be tested. If you haven&#8217;t done this steps up to know, contact your web designer. You can do this on your own, but it will be a hard way without any technical skills.<br />
Once your testing page and all the alternative contents are ready for testing, click on &#8220;Create&#8221;.</li>
<li> Set the configuration for your experiment<br />
Give your experiment a name and set the URL to your Testing page. This is, for example, a contact page or your product page. Also don&#8217;t forget to set the conversion page URL. This will be the page that means a success to your business once it is called. &#8220;continue&#8221;</li>
<li>Choose that you want to install the JavaScript yourself in your website. &#8220;continue&#8221; will show you an overview of your configuration and the necessary JavaScript code that you&#8217;ll have to insert into your Testing Page.</li>
<li>Install &#8220;Google WEbsite Optimizer for WordPress&#8221; Plugin in WordPress. This is actually the plugin that allows you to insert custom code for A/B testing in WordPress pages and posts.</li>
<li>Choose your testable post / page in your WordPress installation.<br />
(Maybe you have to disable the visual editor in Users &gt; Your Profile to proceed the editing. Otherwise you can just use the switch &#8220;HTML&#8221; in WordPress RTE.)</li>
<li>Copy the controll script in the &#8220;Google Website Optimizer&#8221; section in your WordPress post / page.  Also add the tracking script in the same page.</li>
<li>Add the Page sections to your WordPress post / page and add the testable content (version A) inside the tags. Once you&#8217;ve done that and updated your post, it will show the version A content right where you added the Page sections. Don&#8217;t forget to change the &#8220;Insert your section name here&#8221; in the Page sections to your personal section name.</li>
<li>Next step is to add the Conversion Script. Again, open your WordPress installation and choose to edit the Conversion page you&#8217;ve entered in Step 4. Copy the Conversion Script into the Google Website Optimizer section.</li>
<li>Click &#8220;Validate pages&#8221; on the Google Website Optimizer homepage. This will check if you&#8217;ve done well. Once all necessary scripts are added, proceed to the next step with &#8220;Continue&#8221;.</li>
<li>Next Step will allow you to add the content in Version B (C, D,..). At first it show the Original Content. Add new variations with a click on the same-named link at the left. Choose a name for your Page section and enter the content for each version.That&#8217;s just copy&amp;paste as you&#8217;ve created this variations with your designer and developer before.</li>
<li>Once all variations are added, proceed with &#8220;Preview&#8221; to the next step. This will give you a preview of all the variations right in your website you&#8217;ve added. Don&#8217;t forget that A/B testing requires you and your visitors to have JavaScript enabled. It&#8217;s important to use this preview. Otherwise you won&#8217;t have seen the implementation of all this variations right in your website. There is always a chance for typos, mistakes or technical problems. Just click through your variations and &#8211; once you&#8217;re done &#8211; close the window to get back to the experiment setup.</li>
<li>Click &#8220;Save and continue&#8221;. This shows you a last overview of all your configuration. One last notable thing is the amount of traffic that will be sent through this experiment. Usually, i would suggest you to keep this at 100%. If you&#8217;ve very risky changes regarding the content of your site, you can set this done to prohibit annoying your customers.</li>
<li>Click &#8220;Start Experiment&#8221;. Google will now estimate how long it will need to collect enough data for first reports. Now it&#8217;s your turn to stay cool and wait for any results. Once those are available, go through the reached conversion rates, interprete the results &#8211; and don&#8217;t forget to change the tested page&#8217;s content to the most successful one.</li>
</ol>
<p>That&#8217;s it. After all there will be huge changes in the way A/B testing is done with WordPress in the next weeks. Google yesterday released an API for it&#8217;s Website Optimizer that allows to connect your (personal) software via plugins with it&#8217;s service. I&#8217;ll stay in touch with the development in that point and will update my article.</p>
<ul>
<li>Google Website Optimizier API announcement: http://websiteoptimizer.blogspot.com/2009/10/introducing-website-optimizer.html</li>
<li>Carsonified&#8217;s podcast on A/B testing in WordPress: http://carsonified.com/blog/business/how-to-do-ab-testing-in-wordpress</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.thelongrun.de/blog/competition/15-easy-steps-to-ab-testing-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How-to: Don&#8217;t loose your contacts when switching mobile phone</title>
		<link>http://www.thelongrun.de/blog/competition/how-to-dont-loose-your-contacts-when-switching-mobile-phone/</link>
		<comments>http://www.thelongrun.de/blog/competition/how-to-dont-loose-your-contacts-when-switching-mobile-phone/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 07:48:59 +0000</pubDate>
		<dc:creator>Stefan Klose</dc:creator>
				<category><![CDATA[Two fisted Competition]]></category>

		<guid isPermaLink="false">http://www.thelongrun.de/blog/?p=48</guid>
		<description><![CDATA[From time to time it&#8217;s necessary to switch mobile phones. Either your phone is outdated and you lust for one of those new, flat, lightweight and technology-loaded all-in-one phones &#8211; or your old mobile phone just collapsed. The last alternative is quite bad for your contacts. But with the following explanation, which allows you to [...]]]></description>
			<content:encoded><![CDATA[<p>From time to time it&#8217;s necessary to switch mobile phones. Either your phone is outdated and you lust for one of those new, flat, lightweight and technology-loaded all-in-one phones &#8211; or your old mobile phone just collapsed. The last alternative is quite bad for your contacts. But with the following explanation, which allows you to store your phone contacts on your SIM card, you won&#8217;t suffer from that.</p>
<p>I will actually show this for Nokia phones of the last three generations. They all use a more or less identical operating system. All of these operating systems have the same functionality regarding this explanation. That makes any migration between Nokia phones very easy.</p>
<p>To get your phone contacts from the phone to the SIM card, just do this:</p>
<ol>
<li>Open &#8220;Adress Book&#8221; &gt; &#8220;Options&#8221; &gt; &#8220;Used Memory&#8221; and change it to &#8220;Phone and SIM Card&#8221;</li>
<li>Open &#8220;Address Book&#8221; &gt; &#8220;Names&#8221; &gt; &#8220;Options&#8221; &gt; &#8220;Copy&#8221; and select &#8220;From Phone to SIM Card&#8221; and &#8220;All&#8221;</li>
<li>After this, your screen will show: &#8220;% Entries copied, % Entries not copied&#8221;</li>
<li>Select &#8220;OK&#8221; and you&#8217;ll see the names of the contacts whose details have been copied to the SIM card.</li>
</ol>
<p>To restore your SIM card &#8220;backup&#8221; to your new mobile phone, just use step 2 and copy them from SIM card to your mobile phone. Don&#8217;t forget to change Step 1 back, otherwise your contacts will be shown duplicate, as they are both on SIM card and phone. Nokia hasn&#8217;t added a function to remove any contact duplicates up to now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thelongrun.de/blog/competition/how-to-dont-loose-your-contacts-when-switching-mobile-phone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Word: Recover the Cursor</title>
		<link>http://www.thelongrun.de/blog/competition/word-recover-the-cursor/</link>
		<comments>http://www.thelongrun.de/blog/competition/word-recover-the-cursor/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 08:06:43 +0000</pubDate>
		<dc:creator>Stefan Klose</dc:creator>
				<category><![CDATA[Two fisted Competition]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Cursor]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[Problem]]></category>
		<category><![CDATA[Word]]></category>

		<guid isPermaLink="false">http://www.thelongrun.de/blog/?p=120</guid>
		<description><![CDATA[This is a quick tip on Microsoft Word: Sometimes it happens that your usual cursor vanishes. Usually a single dot on the font base line or nothing is shown. To get it back, just zoom in until the cursor is shown again. You can use the shortcut CTRL-+ or CTRL-mouse wheel to zoom in and [...]]]></description>
			<content:encoded><![CDATA[<p>This is a quick tip on Microsoft Word: Sometimes it happens that your usual cursor vanishes. Usually a single dot on the font base line or nothing is shown. To get it back, just zoom in until the cursor is shown again. You can use the shortcut CTRL-+ or CTRL-mouse wheel to zoom in and out fastly. This problem might occur if you install components of Office 2007 while Office 2003 or earlier is installed on the same system.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thelongrun.de/blog/competition/word-recover-the-cursor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework: (3) Read Config Variable in Controller</title>
		<link>http://www.thelongrun.de/blog/competition/zend-framework-3-read-config-variable-in-controller/</link>
		<comments>http://www.thelongrun.de/blog/competition/zend-framework-3-read-config-variable-in-controller/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 20:06:27 +0000</pubDate>
		<dc:creator>Stefan Klose</dc:creator>
				<category><![CDATA[Two fisted Competition]]></category>
		<category><![CDATA[Bootstrap]]></category>
		<category><![CDATA[ini]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend_Config]]></category>
		<category><![CDATA[Zend_Registry]]></category>

		<guid isPermaLink="false">http://www.thelongrun.de/blog/?p=119</guid>
		<description><![CDATA[My third post will be much smaller than the first and the second one. This is about a point i&#8217;ve searched for several times. It looks like there ain&#8217;t no better solution for that. Zend Framework supports configuration ini-files. These files are usually saved in /application/configs/. The main file that is created by the quickstart [...]]]></description>
			<content:encoded><![CDATA[<p>My third post will be much smaller than the first and the second one. This is about a point i&#8217;ve searched for several times. It looks like there ain&#8217;t no better solution for that.</p>
<p>Zend Framework supports configuration ini-files. These files are usually saved in /application/configs/. The main file that is created by the quickstart is application.ini. You can add your own directives to this file and therefore have a solid, simple and easy to handle (but static) configuration.</p>
<p>To access this variables in your controller, just use the following lines:</p>
<blockquote><p>$bootstrap = $this-&gt;getInvokeArg(&#8216;bootstrap&#8217;);<br />
$config = $bootstrap-&gt;getOptions();</p>
<p>echo $config['myVariable'];</p></blockquote>
<p>This is it. Quite simple, huh? I haven&#8217;t found a way (up to now) to get this in less lines, but there has to be.</p>
<p>There is also a way to access those configuration variables globally via <a href="http://framework.zend.com/manual/en/zend.registry.html#zend.registry.using.storing">Zend_Registry</a>. Practically one would create an _init-function in the Bootstrap and use the getOptions()-function to get the config. Then you just add Zend_Registry::set(&#8216;key&#8217;, &#8216;value&#8217;) to save the variable globally. To access it afterwards, call $value = Zend_Registry::get(&#8216;key&#8217;) in any of your controller actions.</p>
<p>If you use an huge configuration file that hasn&#8217;t been loaded automatically, you&#8217;ll have to rely on the <a href="http://framework.zend.com/manual/en/zend.config.adapters.ini.html">Zend_Config</a>. This is overall a configuration file parser. An easy example is the following:</p>
<ol>
<li>Create an ini-file (&#8220;myconfig.ini&#8221;) in your application/config-directory. Insert any directives, e.g. myconf.var1.value = test.</li>
<li>Read the configuration file with an Zend_Config_Ini-object: $myconfig = new Zend_Config_Ini(&#8216;application/config/myconfig.ini&#8217;). If you used sections in your configuration file (like [production] and [development] in the application.ini), add a second parameter with the targeted section.</li>
<li>Access the directives in the config file in an object-based way: echo $myconfig-&gt;myconf-&gt;var1-&gt;value; // this echoes &#8220;test&#8221;.</li>
</ol>
<p>Config is very easy. You just have to get in touch with it for the first time. There are plenty of useful examples in the documentation (contrary to many other libraries).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thelongrun.de/blog/competition/zend-framework-3-read-config-variable-in-controller/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zend Framework: (2) Switch Layouts by Auth status</title>
		<link>http://www.thelongrun.de/blog/competition/zend-framework-2-switch-layouts-by-auth-status/</link>
		<comments>http://www.thelongrun.de/blog/competition/zend-framework-2-switch-layouts-by-auth-status/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 19:33:34 +0000</pubDate>
		<dc:creator>Stefan Klose</dc:creator>
				<category><![CDATA[Two fisted Competition]]></category>
		<category><![CDATA[Auth]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Switch]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend_Auth]]></category>
		<category><![CDATA[Zend_Layout]]></category>

		<guid isPermaLink="false">http://www.thelongrun.de/blog/?p=118</guid>
		<description><![CDATA[In my second post on Zend Framework, i will discuss a quick (but not anyway dirty) way to switch the layout provided by Zend_Layout depending on the auth status provided by Zend_Auth. This is a very short, but quite useful tip: We start with the Bootstrap.php file. Any protected function in this file named &#8220;_initMyName()&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>In my second post on Zend Framework, i will discuss a quick (but not anyway dirty) way to switch the layout provided by Zend_Layout depending on the auth status provided by Zend_Auth. This is a very short, but quite useful tip:</p>
<p>We start with the Bootstrap.php file. Any protected function in this file named &#8220;_initMyName()&#8221; will be automatically called in the same order as placed in the bootstrap. We will use this advantage to provide the right layout before we go in any controller. Just add a new function:</p>
<blockquote><p>protected function _initAuthState()<br />
{</p></blockquote>
<p>&#8230;</p>
<blockquote><p>}</p></blockquote>
<p>Let&#8217;s say we have an layout for all the users logged out (e.g. without a navigation bar and any personal / user-related data) and one for all users logged in (adapted to the fact that user-related data will be displayed). So if we implement Zend_Auth for login in one of our controllers and use it, we can differentiate between an user not logged in and one logged in. This is available via the Zend_Auth-&gt;hasIdentity()-method. To call that one, we first have to get an instance of Zend_Auth via Zend_Auth::getInstance().</p>
<p>Zend Framework uses the Singleton Design Pattern for Zend_Auth (and more libraries). Therefore we won&#8217;t (and can&#8217;t) initiate a new object of Zend_Auth, but will have to get an instance of it.</p>
<blockquote><p>Zend_Auth::getInstance()-&gt;hasIdentity()</p></blockquote>
<p>This function returns a Boolean whether a visitor is logged in or not. So if we create an if-statement on that, we just need to switch the layout based on the result of the statement. To switch the layout, we have to get the layout resource via $this-&gt;getResource(&#8216;layout&#8217;).</p>
<blockquote><p>$layout = $this-&gt;getResource(&#8216;layout&#8217;)</p></blockquote>
<p>The layout resource supports a function named setLayout(). It takes the name of the layout php file (without ending .phtml) and searches for it in the layoutPath. This layoutPath has been set in the application.ini-file:</p>
<blockquote><p>resources.layout.layoutPath         = APPLICATION_PATH &#8220;/layouts&#8221;</p></blockquote>
<p>So we create our layouts, e.g. &#8220;layout_external.phtml&#8221; and &#8220;layout_internal.phtml&#8221;, in the folder /application/layouts/. This contains our individual content. Don&#8217;t forget that each one has to have $this-&gt;layout()-&gt;content in it to display any content from the controllers.</p>
<p>Last step:</p>
<blockquote><p>if (Zend_Auth::getInstance()-&gt;hasIdentity()):<br />
// Logged in.<br />
$layout-&gt;setLayout(&#8216;layout_internal&#8217;);<br />
else:<br />
// Not Logged in.<br />
$layout-&gt;setLayout(&#8216;layout_external&#8217;);<br />
endif;</p></blockquote>
<p>That&#8217;s it. Placed in the _initAuthState() function, the bootstrap will automatically choose the right layout for your needs based on the user auth state.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thelongrun.de/blog/competition/zend-framework-2-switch-layouts-by-auth-status/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework: (1) Integrating Firebug and FirePHP with ZF</title>
		<link>http://www.thelongrun.de/blog/competition/zend-framework-1-integrating-firebug-and-firephp-with-zf/</link>
		<comments>http://www.thelongrun.de/blog/competition/zend-framework-1-integrating-firebug-and-firephp-with-zf/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 15:16:13 +0000</pubDate>
		<dc:creator>Stefan Klose</dc:creator>
				<category><![CDATA[Two fisted Competition]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[FirePHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend_Db]]></category>
		<category><![CDATA[Zend_Log]]></category>

		<guid isPermaLink="false">http://www.thelongrun.de/blog/?p=117</guid>
		<description><![CDATA[This is my first post out of a series of articles on Zend Framework. Zend Framework is the official Framework by Zend Corporation, maker of the well-known PHP language. It supports the creation of web applications by providing basic functionality for daily use. Especially as a starter in Zend Framework, you will need some simple [...]]]></description>
			<content:encoded><![CDATA[<p>This is my first post out of a series of articles on <a href="http://www.zend.com/de/community/framework">Zend Framework</a>. Zend Framework is the official Framework by <a href="http://www.zend.com">Zend Corporation</a>, maker of the well-known <a href="http://www.php.net">PHP</a> language. It supports the creation of web applications by providing basic functionality for daily use.</p>
<p>Especially as a starter in Zend Framework, you will need some simple tools to debug your first steps with that new, huge system. Since version 1.6, Zend Framework integrates FirePHP in it&#8217;s library. <a href="http://www.firephp.org/">FirePHP</a> integrates your PHP application with your <a href="http://getfirebug.com/">Firebug</a> (which is in fact an Firefox addon). The official web site describes FirePHP at it&#8217;s best:</p>
<blockquote><p>FirePHP enables you to log to your <a href="http://www.getfirebug.com/" target="_blank">Firebug</a> <a href="http://getfirebug.com/logging.html" target="_blank">Console</a> using a simple PHP method call.<br />
All data is sent via response headers and will not interfere with the content on your page.<br />
FirePHP is ideally suited for AJAX development where clean JSON and XML responses are required.</p></blockquote>
<p style="font-size: 14px;">From my side, the most important function of FirePHP in Zend Framework is the logging of database queries. To enable logging, just add the following lines to your application.ini:</p>
<blockquote>
<p style="font-size: 14px;">resources.db.setDefaultTableAdapter = 1<br />
resources.db.params.profiler.enabled  = true<br />
resources.db.params.profiler.class  = Zend_Db_Profiler_Firebug</p>
</blockquote>
<p style="font-size: 14px;">FirePHP will now add any SQL queries via Zend_DB to the Firebug Console. It also includes the query time and the result table. This allows debugging at a glance.</p>
<p style="font-size: 14px;">But be aware of the section you add it to: Always keep in mind that adding it to the [production] section might be a huge security risk if you forget to remove it once you set your page live. On the other hand, you don&#8217;t have to remove any of the debug calls in the code and just change profiler.enabled to false for an enviroment.</p>
<p style="font-size: 14px;">To write any custom lines to the Firebug debug console, just add the following to your controller:</p>
<blockquote>
<p style="font-size: 14px;">$writer = new Zend_Log_Writer_Firebug();<br />
$logger = new Zend_Log($writer);</p>
</blockquote>
<p style="font-size: 14px;">This will create a new logger-object. with $logger-&gt;log(&#8216;your message&#8217;, Zend_Log::INFO), you can directly write to the console. There are plenty ways to minimize double coded lines. My approach is to add the preDispatch()-function to the controller and assign the logger-object to an private variable of the controller class:</p>
<blockquote>
<p style="font-size: 14px;">class MyController extends Zend_Controller_Action<br />
{<br />
private $_log_writer;<br />
private $_log_logger;</p>
</blockquote>
<p style="font-size: 14px;">&#8230;</p>
<blockquote>
<p style="font-size: 14px;">public function preDispatch()<br />
{<br />
$writer = new Zend_Log_Writer_Firebug();<br />
$logger = new Zend_Log($writer);</p>
<p>$this-&gt;_log_writer = $writer;<br />
$this-&gt;_log_logger = $logger;</p>
<p>parent::preDispatch();<br />
}</p>
</blockquote>
<p style="font-size: 14px;">You may also be able to create both writer and logger object directly in the bootstrap and assign it to Zend_Registry. I personally prefer this method, because adding both objects to the bootstrap means that they will get loaded at any HTTP request.</p>
<p style="font-size: 14px;">To keep the console messages appropriate, you can use any of the priority constants that are provided by Zend_Log. A whole list (seven priorities) is available in <a href="http://framework.zend.com/manual/de/zend.log.html">the documentation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thelongrun.de/blog/competition/zend-framework-1-integrating-firebug-and-firephp-with-zf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Word: Fu&#223;noten-Formatvorlage</title>
		<link>http://www.thelongrun.de/blog/competition/word-fussnoten-formatvorlage/</link>
		<comments>http://www.thelongrun.de/blog/competition/word-fussnoten-formatvorlage/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 20:56:53 +0000</pubDate>
		<dc:creator>Stefan Klose</dc:creator>
				<category><![CDATA[Two fisted Competition]]></category>
		<category><![CDATA[Änderung]]></category>
		<category><![CDATA[Dokument]]></category>
		<category><![CDATA[Formatvorlage]]></category>
		<category><![CDATA[Fußnote]]></category>
		<category><![CDATA[Word]]></category>

		<guid isPermaLink="false">http://www.thelongrun.de/blog/?p=111</guid>
		<description><![CDATA[Vor ein paar Stunden bin ich auf eine sch&#246;ne Word-Funktion gesto&#223;en, die ich so noch nicht kannte. Wer Quellen in Dokumente einarbeitet, der verwendet dazu Fu&#223;noten. Fu&#223;noten lassen sich in Word jedoch nicht &#252;ber die bereits vorgestellt Funktion &#8220;Formatvorlagen und Formatierungen&#8221; bearbeiten. Das Men&#252; daf&#252;r ist versteckt: Man muss den Fu&#223;noten-Text im Seitenfu&#223; markieren. Mit [...]]]></description>
			<content:encoded><![CDATA[<p>Vor ein paar Stunden bin ich auf eine sch&#246;ne Word-Funktion gesto&#223;en, die ich so noch nicht kannte. Wer Quellen in Dokumente einarbeitet, der verwendet dazu Fu&#223;noten. Fu&#223;noten lassen sich in Word jedoch nicht &#252;ber die bereits vorgestellt Funktion &#8220;<a title="Word: Formatvorlagen und Formatierungen anzeigen" href="http://www.thelongrun.de/blog/competition/word-formatvorlagen-fuer-jeden-absatz-anzeigen/">Formatvorlagen und Formatierungen</a>&#8221; bearbeiten.</p>
<div id="attachment_112" class="wp-caption alignnone" style="width: 301px"><img class="size-full wp-image-112" title="Eine Fu&#223;note in Word" src="http://www.thelongrun.de/blog/wp-content/uploads/2009/09/Word-Fu&#223;noten-Formatvorlage-1.jpg" alt="Eine Fu&#223;note in Word" width="291" height="166" /><p class="wp-caption-text">Eine Fu&#223;note in Word</p></div>
<div id="attachment_113" class="wp-caption alignnone" style="width: 350px"><img class="size-full wp-image-113" title="und die selbe Fu&#223;note im Seitenfu&#223;.." src="http://www.thelongrun.de/blog/wp-content/uploads/2009/09/Word-Fu&#223;noten-Formatvorlage-2.jpg" alt="und die selbe Fu&#223;note im Seitenfu&#223;.." width="340" height="134" /><p class="wp-caption-text">und die selbe Fu&#223;note im Seitenfu&#223;..</p></div>
<p>Das Men&#252; daf&#252;r ist versteckt: Man muss den Fu&#223;noten-Text im Seitenfu&#223; markieren. Mit einem Klick mit der rechten Maustaste &#246;ffnet sich das Kontextmen&#252;. In diesem findet sich der Punkt &#8220;Formatvorlage&#8221;. Bei diesem handelt es sich um das &#252;bliche Men&#252; f&#252;r Formatvorlagen in Word.</p>
<div id="attachment_114" class="wp-caption alignnone" style="width: 486px"><img class="size-full wp-image-114" title="Kontextmen&#252; der Fu&#223;noten" src="http://www.thelongrun.de/blog/wp-content/uploads/2009/09/Word-Fu&#223;noten-Formatvorlage-3.jpg" alt="Kontextmen&#252; der Fu&#223;noten" width="476" height="393" /><p class="wp-caption-text">Kontextmen&#252; der Fu&#223;noten</p></div>
<p>Im Men&#252; lassen sich nun alle Einstellungen zur Formatierung &#228;ndern. Dar&#252;ber hinaus kann man Fu&#223;noten auch als Tabelle oder als Aufz&#228;hlungen / Listen darstellen. Die Optionen sind relativ umfangreich. Mit einem Klick auf &#8220;<em>&#220;bernehmen</em>&#8221; werden die &#196;nderungen auf alle Fu&#223;noten des Dokuments angewendet.</p>
<div id="attachment_115" class="wp-caption alignnone" style="width: 331px"><img class="size-full wp-image-115" title="Formatvorlage der Fu&#223;noten" src="http://www.thelongrun.de/blog/wp-content/uploads/2009/09/Word-Fu&#223;noten-Formatvorlage-4.jpg" alt="Formatvorlage der Fu&#223;noten" width="321" height="405" /><p class="wp-caption-text">Formatvorlage der Fu&#223;noten</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.thelongrun.de/blog/competition/word-fussnoten-formatvorlage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Word: Formatvorlagen f&#252;r jeden Absatz anzeigen</title>
		<link>http://www.thelongrun.de/blog/competition/word-formatvorlagen-fuer-jeden-absatz-anzeigen/</link>
		<comments>http://www.thelongrun.de/blog/competition/word-formatvorlagen-fuer-jeden-absatz-anzeigen/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 20:59:40 +0000</pubDate>
		<dc:creator>Stefan Klose</dc:creator>
				<category><![CDATA[Two fisted Competition]]></category>
		<category><![CDATA[Formatierung]]></category>
		<category><![CDATA[Formatvorlage]]></category>
		<category><![CDATA[Formatvorlagenanzeige]]></category>
		<category><![CDATA[Word]]></category>

		<guid isPermaLink="false">http://www.thelongrun.de/blog/?p=41</guid>
		<description><![CDATA[Eine hilfreiche Funktion bei der Formatierung gro&#223;er Textpassagen oder der Vereinheitlichung eines z.B. aus dem Internet kopierten Textes ist die Funktion &#8220;Formatvorlagenanzeige&#8221; bei Microsoft Word. In der Normalansicht und Gliederungsansicht l&#228;sst sich links f&#252;r alle Abs&#228;tze die jeweilige Formatvorlage anzeigen. Mit Hilfe der Trennlinie l&#228;sst sich die Gr&#246;&#223;e dieser Spalte variieren.  Die Einstellung zur Anzeige [...]]]></description>
			<content:encoded><![CDATA[<p>Eine hilfreiche Funktion bei der Formatierung gro&#223;er Textpassagen oder der Vereinheitlichung eines z.B. aus dem Internet kopierten Textes ist die Funktion &#8220;Formatvorlagenanzeige&#8221; bei Microsoft Word. In der</p>
<ul>
<li>Normalansicht und</li>
<li>Gliederungsansicht</li>
</ul>
<p>l&#228;sst sich links f&#252;r alle Abs&#228;tze die jeweilige Formatvorlage anzeigen.</p>
<p><a href="http://www.thelongrun.de/blog/wp-content/uploads/2009/04/word-formatvorlagenanzeige-1.jpg"><img class="alignnone size-medium wp-image-42" title="Word: Formatvorlagenanzeige (1)" src="http://www.thelongrun.de/blog/wp-content/uploads/2009/04/word-formatvorlagenanzeige-1-300x228.jpg" alt="" width="300" height="228" /></a></p>
<p>Mit Hilfe der Trennlinie l&#228;sst sich die Gr&#246;&#223;e dieser Spalte variieren.  Die Einstellung zur Anzeige dieser Spalte befindet sich unter <em>Extras &gt; Optionen &gt; Ansicht &gt; Breite der Formatvorlagenanzeige (cm)</em> (Word 2003).</p>
<p><a href="http://www.thelongrun.de/blog/wp-content/uploads/2009/04/word-formatvorlagenanzeige-2.jpg"><img class="alignnone size-medium wp-image-43" title="Word: Formatvorlagenanzeige (2)" src="http://www.thelongrun.de/blog/wp-content/uploads/2009/04/word-formatvorlagenanzeige-2-300x293.jpg" alt="" width="300" height="293" /></a></p>
<p>Parallel dazu kann nat&#252;rlich auch die Leiste &#8220;Formatvorlagen und Formatierungen&#8221; eingeblendet werden. &#220;ber das Men&#252; <em>Format </em>l&#228;sst sich diese aktivieren und wird standardm&#228;&#223;ig auf der rechten Seite angezeigt.</p>
<p>F&#252;r den gerade aktiven Absatz (dieser, in dem der Cursor steht) werden die aktiven Formatvorlagen mit einem dunkelblauen Rand versehen. Um nun schnell die Formatierung zu &#228;ndern klicken Sie in einen Absatz oder markieren einzelne Textpassagen oder gleich mehrere Abs&#228;tze und klicken unter &#8220;W&#228;hlen Sie eine Formatierung&#8221; auf die neue Formatierung.</p>
<p><a href="http://www.thelongrun.de/blog/wp-content/uploads/2009/04/word-formatvorlagenanzeige-3.jpg"><img class="size-full wp-image-44 alignnone" title="Word: Formatvorlagenanzeige (3)" src="http://www.thelongrun.de/blog/wp-content/uploads/2009/04/word-formatvorlagenanzeige-3.jpg" alt="" width="202" height="413" /></a></p>
<p>Wenn Sie nun eine der vorhandenen Formatvorlagen f&#252;r alle Teile des Dokuments &#228;ndern wollen, klicken Sie mit der rechten Maustaste auf diese drauf. W&#228;hlen Sie nun <em>&#196;ndern </em>und bearbeiten Sie in dem neuen Fenster unter <em>Format </em>die gew&#252;nschten Formatierungen.</p>
<p><a href="http://www.thelongrun.de/blog/wp-content/uploads/2009/04/word-formatvorlagenanzeige-4.jpg"><img class="alignnone size-full wp-image-45" title="Word: Formatvorlagenanzeige (4)" src="http://www.thelongrun.de/blog/wp-content/uploads/2009/04/word-formatvorlagenanzeige-4.jpg" alt="" width="368" height="430" /></a></p>
<p>Dar&#252;ber hinaus k&#246;nnen Sie selbstverst&#228;ndlich f&#252;r jede Dokumentvorlage, die Sie zum erstellen neuer Dokumente wiederverwenden, einmalig Formatvorlagen definieren. Das vereinfacht die konsequente Verwendung eines einheitlichen <a title="Corporate Design (Wikipedia)" href="http://de.wikipedia.org/wiki/Corporate_Design" target="_blank">Corporate Design</a> / <a title="Corporate Identity (Wikipedia)" href="http://de.wikipedia.org/wiki/Corporate_Identity">Corporate Identity</a> erheblich.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thelongrun.de/blog/competition/word-formatvorlagen-fuer-jeden-absatz-anzeigen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
