<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF 	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
			xmlns:dc="http://purl.org/dc/elements/1.1/"
			xmlns="http://purl.org/rss/1.0/">
	
	<channel rdf:about="http://typo3bloke.net/">
		<title>TYPO3Bloke.net: TYPO3 Blog</title>
		<link>http://typo3bloke.net/</link>
		<description>TYPO3 technical blog</description>
		<image rdf:resource="http://typo3bloke.net/typo3conf/ext/tt_news/ext_icon.gif" />
		<items>
			<rdf:Seq>
				<rdf:li resource="http://typo3bloke.net/post-details/extension_updates_loginusertrack_and_comments/" />
				<rdf:li resource="http://typo3bloke.net/post-details/howto_use_frontend_user_data_in_a_typo3_mailform/" />
				<rdf:li resource="http://typo3bloke.net/post-details/slides_from_productivity_session/" />
				<rdf:li resource="http://typo3bloke.net/post-details/nominate_me_as_typo3_mvp/" />
				<rdf:li resource="http://typo3bloke.net/post-details/cruelty_to_animals/" />
				<rdf:li resource="http://typo3bloke.net/post-details/how_to_fill_realurl_cache/" />
				<rdf:li resource="http://typo3bloke.net/post-details/why_substitutemarkerarraycached_is_bad/" />
				<rdf:li resource="http://typo3bloke.net/post-details/using_templates_in_typo3_frontend_plugins/" />
				<rdf:li resource="http://typo3bloke.net/post-details/typo3_core_overview_presentation/" />
				<rdf:li resource="http://typo3bloke.net/post-details/how_to_kill_typo3_performance_from_extension/" />
			</rdf:Seq>
		</items>
	</channel>
	<image rdf:about="http://typo3bloke.net/typo3conf/ext/tt_news/ext_icon.gif">
		<title>TYPO3Bloke.net: TYPO3 Blog</title>
		<link>http://typo3bloke.net/</link>
		<url>http://typo3bloke.net/typo3conf/ext/tt_news/ext_icon.gif</url>
	</image>
	
	       
	<item rdf:about="http://typo3bloke.net/post-details/extension_updates_loginusertrack_and_comments/">
		<title>Extension updates: loginusertrack and comments</title>
		<link>http://typo3bloke.net/post-details/extension_updates_loginusertrack_and_comments/</link>
		<description><p class="bodytext">I just sent two extension updates to TER. They will appear soon. Login user track and comments were updated.</p>
<p class="bodytext">Login user track is a TYPO3 extension that records Frontend user activities. It records when user last logged in, how many pages he visited and what pages he visited. The extension was originally written by Kasper but was not updated for a long time. Netcreators needed additional functionality to this extension, so I took it, added...</p></description>
	</item>
	       
	<item rdf:about="http://typo3bloke.net/post-details/howto_use_frontend_user_data_in_a_typo3_mailform/">
		<title>Howto: use Frontend user data in a TYPO3 mailform</title>
		<link>http://typo3bloke.net/post-details/howto_use_frontend_user_data_in_a_typo3_mailform/</link>
		<description><p class="bodytext">Today I had an interesting challenge. I had to create a contact form on the Intranet web site. This web site always has Frontend user logged in. I was going to use standard TYPO3 mailform. Typically such form contains fields for user name and e-mail. When I started to create the form, I immediately realized that it will be stupid to ask for this information if user is already logged it. I should find a way to insert this information automatically.</p></description>
	</item>
	       
	<item rdf:about="http://typo3bloke.net/post-details/slides_from_productivity_session/">
		<title>Slides from productivity session</title>
		<link>http://typo3bloke.net/post-details/slides_from_productivity_session/</link>
		<description><p class="bodytext">In July I had a session about personal productivity at TYPO3 user group in Holland. I planned to make video from these slides but I instead I decided another way to share slides. I put them to <a href="http://www.slideshare.net/dulepov/personal-productivity" title="Slides from productivity session" target="_blank" class="external-link-new-window" >SlideShare</a>. You can also vote for these slides to participate in the &quot;World Best Presentation Contest' 08&quot;.</p>
<p class="bodytext">Enjoy!</p></description>
	</item>
	       
	<item rdf:about="http://typo3bloke.net/post-details/nominate_me_as_typo3_mvp/">
		<title>Nominate me as TYPO3 MVP!</title>
		<link>http://typo3bloke.net/post-details/nominate_me_as_typo3_mvp/</link>
		<description><p class="bodytext">Pack Publishing has <a href="http://www.packtpub.com/award" title="Packt publishing 2008 Open Source CMS Award" target="_blank" class="external-link-new-window" >announced</a> its yearly &quot;2008 Open Source CMS Award&quot;. There are different categories, one of them is MVP, for person, who contributed a lot to the CMS.</p>
<p class="bodytext">I'd like to ask you nominate me if you think I deserve it. It is easy as <a href="http://www.packtpub.com/article/nominate-open-source-cms-mvp" title="Nominate me as TYPO3 MVP!" target="_blank" class="external-link-new-window" >filling the form</a> and clicking &quot;Nominate&quot; button. Btw, you can win iPod Nano if you nominate someone.</p>
<p class="bodytext">Thank you in advance!</p>
<p class="bodytext">P.S. My name is <b>Dmitry Dulepov</b>.</p></description>
	</item>
	       
	<item rdf:about="http://typo3bloke.net/post-details/cruelty_to_animals/">
		<title>Cruelty to animals</title>
		<link>http://typo3bloke.net/post-details/cruelty_to_animals/</link>
		<description><p class="bodytext">This is not really my topic. But I have two cats myself and I am shoked.</p>
<p class="bodytext">Warning: shoking image inside.</p></description>
	</item>
	       
	<item rdf:about="http://typo3bloke.net/post-details/how_to_fill_realurl_cache/">
		<title>How to fill RealURL cache</title>
		<link>http://typo3bloke.net/post-details/how_to_fill_realurl_cache/</link>
		<description><p class="bodytext">From time to time I see this question: how to fill RealURL cache with page addresses?</p>
<p class="bodytext">The answer is pretty simple...</p></description>
	</item>
	       
	<item rdf:about="http://typo3bloke.net/post-details/why_substitutemarkerarraycached_is_bad/">
		<title>Why substituteMarkerArrayCached is bad</title>
		<link>http://typo3bloke.net/post-details/why_substitutemarkerarraycached_is_bad/</link>
		<description><p class="bodytext">In the previous article we talked about TYPO3 template functions. I mentioned that  substituteMarkerArrayCached is a function that developers should not use. In this article I am going to explain why.</p>
<p class="bodytext">As you remember...</p></description>
	</item>
	       
	<item rdf:about="http://typo3bloke.net/post-details/using_templates_in_typo3_frontend_plugins/">
		<title>Using templates in TYPO3 Frontend plugins</title>
		<link>http://typo3bloke.net/post-details/using_templates_in_typo3_frontend_plugins/</link>
		<description><p class="bodytext">Firsts, I wanted to write a warning article about the substituteMarkerArrayCached function. But then I understood that article is going to be about template functions in general and warning should be in the different article.</p>
<p class="bodytext">Let's have an overview of TYPO3 templates and functions to handle them.</p>
<h2>TYPO3 template basics</h2>
<p class="bodytext">Templates in TYPO3 are normal HTML files. These files contain special markers that TYPO3 can replace with data. Markers typically are words in CAPS surrounded by three hash marks. For example: ###LINK###.</p>
<p class="bodytext">There are two types&nbsp; of markers: single markers and subpart markers. Single markers is a single piece of data, it is replaced as is. Subpart markers surround parts of the HTML code. Here is an example:</p>
<p class="csc-frame-frame2">&lt;!-- ###LIST### begin --&gt;<br />Repeating elements:<br />&lt;ul&gt;<br />&lt;!-- ###REPEATING### begin --&gt;<br />&lt;li&gt;Iteration ###NUMBER###&lt;/li&gt;<br />&lt;!-- ###REPEATING### end --&gt;<br />&lt;/ul&gt;<br />&lt;!-- ###LIST### end --&gt;</p>
<p class="bodytext">Here ###LIST### and ###REPEATING### are subpart markers. Extension can get a subpart and replace it as whole. Often it is used for repeating elements of for subparts that should be removed under certain conditions. “begin” and “end” are not necessary but conventional.</p>
<p class="bodytext">###NUMBER### is a single marker.</p>
<h2>Template functions in TYPO3 Frontend</h2>
<p class="bodytext">TYPO3 has functions to work with templates. Extension authors may use these function to process markers.</p>
<p class="bodytext">The functions are located in class tslib_cObj and available in Frontend plugins through $this-&gt;cObj. Here is the list:</p><ul><li>getSubpart<br />Obtains a subpart from template</li><li>substituteMarker<br />This function substitutes a single marker. Just that.</li><li>substituteMarkerArray<br />This function does the same as above but for many markers in the array</li><li>substituteSubpart<br />Substitutes a single subpart</li><li>substituteMarkerArrayCached<br />This is a bad function that you should not use. <a href="http://typo3bloke.net/post-details/why_substitutemarkerarraycached_is_bad/" title="Explains why substituteMarkerArrayCached is bad" target="_blank" class="external-link-new-window" >Read why</a>.</li></ul><p class="bodytext">As you see, there is no function to substitute subpart array. You have to do it in a loop for each subpart.</p>
<h2>Using TYPO3 template functions</h2>
<p class="bodytext">But let's see code example. Example assumes that HTML template is located in $this-&gt;templateCode.</p>
<p class="csc-frame-frame2">function generateRepeatingContent() {<br />&nbsp;&nbsp; &nbsp;// Get template<br />&nbsp;&nbsp; &nbsp;$template = $this-&gt;cObj-&gt;getSubpart($this-&gt;templateCode, '###LIST###');<br />&nbsp;&nbsp; &nbsp;// Get subpart template<br />&nbsp;&nbsp; &nbsp;$subTemplate = $this-cObj-&gt;getSubpart($template, '###REPEATING###');<br />&nbsp;&nbsp; &nbsp;// Loop to create repeating content<br />&nbsp;&nbsp; &nbsp;$subPartContent = '';<br />&nbsp;&nbsp; &nbsp;for ($i = 1; $i &lt;= 10; $i++) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$subPartContent .= $this-&gt;cObj-&gt;substituteMarker($subTemplate,<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;'###NUMBER###', $i);<br />&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;// Substitute subpart<br />&nbsp;&nbsp; &nbsp;return $this-&gt;cObj-&gt;substituteSubpart($template, '###REPEATING###',<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $subPartContent);<br />}</p>
<p class="bodytext">This example uses the same template as shown above.</p>
<h2>Conclusion</h2>
<p class="bodytext">This is how easy to use templates in TYPO3. So when you develop extension next time, you can make it better by providing templatable output for your extension.</p></description>
	</item>
	       
	<item rdf:about="http://typo3bloke.net/post-details/typo3_core_overview_presentation/">
		<title>&quot;TYPO3 Core Overview&quot; presentation</title>
		<link>http://typo3bloke.net/post-details/typo3_core_overview_presentation/</link>
		<description><p class="bodytext">On July 4th I made two presentations at TYPO3 user group in Netherlands. The first was about TYPO3 core and the second is about being productive.</p>
<p class="bodytext">I got a lot of requests for these slides and I  promised to put them online. Here is the TYPO3 core presentation. It did not contain much text on the slides, so I made a QuickTime videos. Videos are available in two sizes:</p><ul><li><a href="http://typo3bloke.net/fileadmin/presentations/typo3-core-overview-small.mov" title="Initiates file download" class="download" >Small</a> (256x192, 4.6MB)</li><li><a href="http://typo3bloke.net/fileadmin/presentations/typo3-core-overview-middle.mov" title="Initiates file download" class="download" >Medium</a> (512x384, 9MB)</li></ul><p class="bodytext">I must tell that this is my first experience in making video out of presentations, so I apologize for any problems in the video. People in TUG liked the presentation and I hope you all like the video.</p>
<p class="bodytext">This video will also be available through <a href="http://typo3.nl/" title="Dutch TYPO3 web site" target="_blank" class="external-link-new-window" >typo3.nl</a> web site. </p>
<p class="bodytext">License &amp; disclamer: anyone can freely copy and distribute these movies without modification (no cutting or extracts permitted). I tried to make facts as accurate as possible but you need to check them if you want to use them for commercial purposes. I am not going to be responsible for misuse of this material or any loses that come from it.</p>
<p class="bodytext">[Update, July 21, 2008] Now you can also see these slides on <a href="http://www.slideshare.net/dulepov/typo3-core-overview/" title="TYPO3 core Overview on SlideShare" target="_blank" class="external-link-new-window" >SlideShare</a> but without audio.</p></description>
	</item>
	       
	<item rdf:about="http://typo3bloke.net/post-details/how_to_kill_typo3_performance_from_extension/">
		<title>How to kill TYPO3 performance from extension</title>
		<link>http://typo3bloke.net/post-details/how_to_kill_typo3_performance_from_extension/</link>
		<description><p class="bodytext">Today I went to check <a href="http://buzz.typo3.org/" title="TYPO3 community blogging web site" target="_blank" class="external-link-new-window" >buzz.typo3.org</a> for new articles. I scanned through some when I came across the article named &quot;<a href="http://buzz.typo3.org/article/dynamic-caching-in-typo3/" title="The article with major performance implications" target="_blank" class="external-link-new-window" >Dynamic Caching in TYPO3</a>&quot;. The article is interesting because it describes unusual techniques related to caching. But author does one &quot;not-so-good&quot; thing. He promotes the use of $TSFE-&gt;set_no_cache(). As I said many times, this is <b>evil</b> and should be avoided at all costs! Search for another solution, do whatever tricks but never ever use set_no_cache()! It will kill your web site under any serious load.</p>
<p class="bodytext">It is not a big problem for the particular case described in that article. In the article this function will be used only for a logged-in user who views his own card. But readers may learn about the function and start using it in extensions without realizing what they do. That's bad. We had a problem some time ago in commerce extension, which disabled caching for the whole web site and made the site extremely sloooooooow and created huge load on the server. Bad. Too bad. I wish all writers make a <b>bold warning</b> when mentioning this function: <b>dangerous!</b></p>
<p class="bodytext">Last week I made a performance review of yet another web site and yet again (again and again!) I found problems caused by misuse of set_no_cache(). It was found in three extensions (download, link list and one proprietary). It is typically the set_no_cache-case when people ask why their site has such a bad performance. If it only were in my power, I would go to TER and remove all extensions that use set_no_cache().</p>
<p class="bodytext">Don't use this function! It is for core only! It is not for you! Avoid at all costs!</p></description>
	</item>
	         
</rdf:RDF>
