<?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>Paul Rohrbeck, handgemachte Websites aus Ostwestfalen &#187; Artikel</title>
	<atom:link href="http://paul-rohrbeck.de/bereich/artikel/feed/" rel="self" type="application/rss+xml" />
	<link>http://paul-rohrbeck.de</link>
	<description></description>
	<lastBuildDate>Wed, 09 May 2012 08:33:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>TYPO3: TCA type „select“ optional machen mit leerer „option“ am Anfang</title>
		<link>http://paul-rohrbeck.de/artikel/typo3-tca-type-select-optional-machen-mit-leerer-option-am-anfang/</link>
		<comments>http://paul-rohrbeck.de/artikel/typo3-tca-type-select-optional-machen-mit-leerer-option-am-anfang/#comments</comments>
		<pubDate>Sun, 04 Mar 2012 13:53:47 +0000</pubDate>
		<dc:creator>Paul Rohrbeck</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[maxitems]]></category>
		<category><![CDATA[minitems]]></category>
		<category><![CDATA[option]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://paul-rohrbeck.de/?p=1371</guid>
		<description><![CDATA[Mittels des TCA lassen sich in TYPO3 ganz einfach Select-Boxen definieren. Bequem ist, dass die Werte auch dynamisch aus einer Datenbanktabelle ausgelesen werden können. Wenn die Auswahl im Backend aber optional sein soll, stößt man auf ein Problem, weil nur &#8230; <a href="http://paul-rohrbeck.de/artikel/typo3-tca-type-select-optional-machen-mit-leerer-option-am-anfang/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Mittels des TCA lassen sich in TYPO3 ganz einfach Select-Boxen definieren. Bequem ist, dass die Werte auch dynamisch aus einer Datenbanktabelle ausgelesen werden können. Wenn die Auswahl im Backend aber optional sein soll, stößt man auf ein Problem, weil nur &bdquo;options&ldquo; für die Datensätze aus der DB angelegt werden. Folgendes Snippet zeigt, wie man eine leere Option davor setzt:</p>
<pre>
        'feld' => array(
            'exclude' => 0,
            'label' => 'Feld Name',
            'config' => array(
                'type' => 'select',
                'items' => Array (
                        Array("",0),
                    ),
                'foreign_table' => 'tx_deinetabelle',
                'size' => 1,
                'minitems' => 0,
                'maxitems' => 1,
            ),
        ),
</pre>
<p>Das Ganze wird also gelöst, indem man vor der &bdquo;foreign_table&ldquo; bereits ein &bdquo;item&ldquo; initialisiert. Dazu aus der Dokumentation:<br />
&bdquo;Contains the elements for the selector box unless the property &#8220;foreign_table&#8221; or &#8220;special&#8221; has been set in which case automated values are set <strong>in addition</strong> to any values listed in this array.&ldquo;<br />
(Quelle: <a href="http://typo3.org/documentation/document-library/core-documentation/doc_core_tca/4.6.0/view/1/3/#id2620745">Core Dokumentation</a>, 4.6.0)<br />
Die Werte &bdquo;maxitems&ldquo; und &bdquo;minitems&ldquo; müssen dabei nicht gesetzt sein, weil als Standard bereits 1 bzw. 0 eingestellt sind.</p>
]]></content:encoded>
			<wfw:commentRss>http://paul-rohrbeck.de/artikel/typo3-tca-type-select-optional-machen-mit-leerer-option-am-anfang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Maps (v3): Schicke Marker, Lösung für überlappene Marker und schönere Infofenster mit CSS</title>
		<link>http://paul-rohrbeck.de/artikel/google-maps-v3-schicke-marker-losung-fur-uberlappene-marker-und-schonere-infofenster-mit-css/</link>
		<comments>http://paul-rohrbeck.de/artikel/google-maps-v3-schicke-marker-losung-fur-uberlappene-marker-und-schonere-infofenster-mit-css/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 09:29:07 +0000</pubDate>
		<dc:creator>Paul Rohrbeck</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[infowindow]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[marker]]></category>

		<guid isPermaLink="false">http://paul-rohrbeck.de/?p=1324</guid>
		<description><![CDATA[In meinem aktuellen Projekt für das EJW Hessen war eine der Hauptaufgaben das Rendern einer verschönerten Google Map (in der neusten Version 3) mittels der JavaScript API. Anforderungen: eigene, schöne Markergrafiken (google.maps.MarkerImage) optimierte, per CSS stylebare Infofenster (InfoBubble) Lösung für &#8230; <a href="http://paul-rohrbeck.de/artikel/google-maps-v3-schicke-marker-losung-fur-uberlappene-marker-und-schonere-infofenster-mit-css/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In meinem aktuellen Projekt für das <a href="http://paul-rohrbeck.de/referenzen/ejw-hessen/" title="EJW Hessen">EJW Hessen</a> war eine der Hauptaufgaben das Rendern einer verschönerten Google Map (in der neusten <a href="http://code.google.com/intl/de-DE/apis/maps/documentation/javascript/">Version 3</a>) mittels der JavaScript API.</p>
<h3>Anforderungen:</h3>
<ul>
<li>eigene, schöne Markergrafiken (google.maps.MarkerImage)</li>
<li>optimierte, per CSS stylebare Infofenster (<a href="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobubble/examples/example.html">InfoBubble</a>)</li>
<li>Lösung für das Problem der überlappenen Marker. Wie erreicht der User Marker, wenn viele übereinander (auf einer Koordinate) liegen? (<a href="https://github.com/jawj/OverlappingMarkerSpiderfier">OverlappingMarkerSpiderfier</a>)</li>
<li>Drop Animationseffekt beim Setzen der Marker (google.maps.Animation.DROP)</li>
<li>Suchbox zum Anzeigen einer Adresse (google.maps.Geocoder)</li>
<li>Filter mittels Links</li>
</ul>
<h3>Lösung</h3>
<p>Alle diese Anforderungen wurden im folgenden Script berücksichtigt:</p>
<pre>
var map, infoBubble, styledcontent, oms;
var content = [];
var geocoder = new google.maps.Geocoder();
var default_zoom = 9;
var search_zoom = 14;
var global_filter = '';
var search_placeholder = 'Straße, Ort';

$(document).ready(function() {
    if ($('#map_canvas').length != 0) {

        var mapCenter = new google.maps.LatLng(50.22120, 8.63525); // Default
        map = new google.maps.Map(document.getElementById('map_canvas'), {
          zoom: default_zoom,
          center: mapCenter,
          mapTypeId: google.maps.MapTypeId.ROADMAP,
		  scrollwheel: false
        });
		oms = new OverlappingMarkerSpiderfier(map, {markersWontMove: true, markersWontHide: true, keepSpiderfied: true});

		// ------------------------------------------
		// function to show all relevant markers. filtered by 'filter'-parameter if set :-)
		runQuery = function(elements, filter) {

			// Is filter set?
			var filter = (typeof(filter) != 'undefined') ? filter : '';

			// create new filter
			var current_element = elements + filter; 

			// first of all, clear all markers already there:
			deleteOverlays();

			// loop through all given elements:
			$(current_element).each(function(index){

				// are coordinates set?
				var current_koordinaten_xy = ($(this).children('.koordinaten').text() != '') ? $(this).children('.koordinaten').text() : '';
				var current_koordinaten = '';

				// put together information for the bubble
				var gruppe = new Array();
				gruppe['foo'] = 'bar';
				content[index] = gruppe; // neue gruppe zum array aller gruppen hinzufügen

				// if there are coordinates: split them in x/y, create google position and add marker
				if(current_koordinaten_xy != ''){
					current_koordinaten_xy = current_koordinaten_xy.split(',');
					current_koordinaten = new google.maps.LatLng(current_koordinaten_xy[0], current_koordinaten_xy[1]);

					addMarker(current_koordinaten, content, index, $(this).children('.fachgruppe').text()); // do everything
				}

			});
		}

		// ------------------------------------------
		// Info Bubble Default Settings:
		infoBubble = new InfoBubble({
					map: map,
					maxWidth: 290,
					maxHeight: 320,
					shadowStyle: 0,
					padding: 0,
					backgroundColor: '#fff',
					borderRadius: 5,
					arrowSize: 20,
					borderWidth: 0,
					arrowPosition: 20,
					backgroundClassName: 'ejw-gruppe-infowindow',
					arrowStyle: 2,
					hideCloseButton: false
		});		

		// ------------------------------------------
		// for starters: show all
		runQuery('#adressenliste li');

		// ------------------------------------------
		// now filter by filters:
		$('#filters a').click(function(){
			var current_filter = $(this).attr('data-option-value');
			if(current_filter != 0) {
				global_filter = '.' + current_filter; // put together new global filter
			}else{
				global_filter = '';
			}

			// toggle '.selected'-class:
			$('.selected').removeClass('selected');
			$(this).toggleClass('selected');

			// add new markers:
			runQuery('#adressenliste li', global_filter);

			// if search box is not empty, add address marker as well:
			if( $('#finder-adresse').val() != '' &#038;&#038; $('#finder-adresse').val() != search_placeholder){
				codeAddress( $('#finder-adresse').val(), false);
			}

			// prevent default action from happening (link href):
			return false;
		});

		// ------------------------------------------
		// find addresses by search and center map to this position:
		$('#finder-submit').click(function(){

			// clear markers and start over again:
			runQuery('#adressenliste li', global_filter);

			// geocode given address and add marker:
			codeAddress( $('#finder-adresse').val() );

			// zoom in
			map.setZoom(search_zoom);

		});

		// empty search box on focus if the value is equal to the placeholder text:
		$('#finder-adresse').val(search_placeholder);
		$('#finder-adresse').focus(function(){
			if ($(this).val() == search_placeholder) {
				$(this).val('');
			}
		});
		$('#finder-adresse').blur(function(){
			if ($(this).val() == '') {
				$(this).val(search_placeholder);
			}
		});

	}

	// ------------------------------------------
	// only add infobubble to the marker when it's clicked:
	oms.addListener('click', function(marker) {
		infoBubble.setContent(marker.content);
		infoBubble.open(map, marker);
	});	

});
</pre>
<p>Ich nutze dabei jQuery, weil die Daten für die Marker (z.B. die Koordinaten) erst bei Aufruf der Website ausgelesen, also generiert, werden. Das ist sicherlich nicht sehr performant, kann aber auch nützlich sein, wenn man zum Beispiel unter der Karte eine Liste der gefilterten Einträge anzeigen möchte.</p>
<p>Die folgende Funktion fügt der Map einen Marker hinzu. Ihr wird die Position (als Google Map Koordinaten) sowie einige weitere Parameter speziell für das EJW-Projekt mitgegeben:</p>
<pre>
function addMarker(location, content, index, fachgruppe, openbubble) {

	// Is openbubble set?
	var openbubble = (typeof(openbubble) != &#039;undefined&#039;) ? openbubble : true;

	// check for marker images:
	switch(fachgruppe) {
		case &quot;HP&quot;:
			markerImg = new google.maps.MarkerImage(&#039;***.png&#039;);
			break;
		case &quot;HMP&quot;:
			markerImg = new google.maps.MarkerImage(&#039;***.png&#039;);
			break;
		case &quot;Standort&quot;:
			markerImg = new google.maps.MarkerImage(&#039;***.png&#039;);
			break;
		default:
			markerImg = new google.maps.MarkerImage(&#039;***.png&#039;);
			break;
	}

	// marker content
	if(fachgruppe == &#039;Standort&#039;) {
		styledcontent = &#039;&lt;div&gt;Deine Standorteingabe.&lt;/div&gt;&#039;;
	} else {
		styledcontent = &quot;&lt;div&gt;...&lt;/div&gt;&quot;;
	}

	var marker = new google.maps.Marker({
		position: location,
		map: map,
		icon: markerImg,
		content: styledcontent,
		animation: google.maps.Animation.DROP
	});	

	// add to marker array
	oms.addMarker(marker);

	// if is standort, show bubble
	if(fachgruppe == &#039;Standort&#039; &amp;&amp; openbubble) {
		infoBubble.setContent(marker.content);
		infoBubble.open(map, marker);
	}

}
</pre>
<p>Diese Funktion löscht alle Marker von der Map:</p>
<pre>
// Deletes all markers in the array by removing references to them
function deleteOverlays() {

	var markers = oms.getMarkers();

	if (markers) {
		for (i in markers) {
			markers[i].setMap(null);
		}
		markers.length = 0;
	}

	oms.clearMarkers();

}
</pre>
<p>Die nächste Funktion sorgt für die Geokodierung, also das Umsetzen einer Adresse zu Koordinaten:</p>
<pre>
function codeAddress(address, openbubble) {

	// Is openbubble set?
	var openbubble = (typeof(openbubble) != 'undefined') ? openbubble : true;

	if (geocoder) {
		  geocoder.geocode({
				'address': address,
				'region': 'de',
	            'language': 'de_DE'}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {

				// set marker to this location
				addMarker(results[0].geometry.location, '', '', 'Standort', openbubble);

				// center to the given location:
				map.setCenter(results[0].geometry.location);

			} else {

				// hier könnte noch ein schönerer fehler hin:
				console.log("Geokodierung nicht erfolgreich: " + status + ".");
				return false;
			}
		  });
	}
}
</pre>
<h3>Resultat</h3>
<p>Das Resultat lässt sich auf der <a href="http://www.ejw.de/ejw-vor-ort/">Website des EJW Hessen</a> begutachten:<br />
<a href="http://www.ejw.de/ejw-vor-ort/"><img src="http://paul-rohrbeck.de/wp-content/uploads/2011/11/ejw_map.jpg" alt="" title="EJW Karte" width="610" height="554" class="portfolio-image alignnone size-full wp-image-1331" /></a></p>
<p>Kommentare und Optimierungsvorschläge sind natürlich jederzeit willkommen! :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://paul-rohrbeck.de/artikel/google-maps-v3-schicke-marker-losung-fur-uberlappene-marker-und-schonere-infofenster-mit-css/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TYPO3, Extbase: Häufige Fehler und Lösungen</title>
		<link>http://paul-rohrbeck.de/artikel/typo3-extbase-haufige-fehler-und-losungen/</link>
		<comments>http://paul-rohrbeck.de/artikel/typo3-extbase-haufige-fehler-und-losungen/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 13:30:45 +0000</pubDate>
		<dc:creator>Paul Rohrbeck</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[extbase]]></category>
		<category><![CDATA[fehler]]></category>
		<category><![CDATA[fluid]]></category>
		<category><![CDATA[lösungen]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://paul-rohrbeck.de/?p=1319</guid>
		<description><![CDATA[Auf dieser Seite möchte ich häufige Fehler und Lösungen zur TYPO3-Entwicklung mit Extbase und Fluid zusammentragen. Ergänzungen und Korrekturen sind jederzeit willkommen. Bei allen Fehler gilt zunächst einmal: Cache leeren typo3conf/temp_* Dateien löschen Rechtschreibfehler überprüfen Ruhe bewahren :-) Meistens sind &#8230; <a href="http://paul-rohrbeck.de/artikel/typo3-extbase-haufige-fehler-und-losungen/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Auf dieser Seite möchte ich häufige Fehler und Lösungen zur TYPO3-Entwicklung mit Extbase und Fluid zusammentragen. Ergänzungen und Korrekturen sind jederzeit willkommen.</p>
<p>Bei allen Fehler gilt zunächst einmal:</p>
<ul>
<li>Cache leeren</li>
<li>typo3conf/temp_* Dateien löschen</li>
<li>Rechtschreibfehler überprüfen</li>
<li>Ruhe bewahren :-) Meistens sind es nur Kleinigkeiten, die schnell wieder stimmen!</li>
</ul>
<h3>Default controller can not be determined</h3>
<p><strong>Fehlermeldung:</strong></p>
<blockquote><p>
The default controller can not be determined.<br />
Please check for Tx_Extbase_Utility_Extension::configurePlugin() in your ext_localconf.php.
</p></blockquote>
<p>Tritt auf, wenn man im Frontend die Seite mit dem Plugin öffnet.</p>
<p><strong>Lösung:</strong><br />
Bei mir half es, das Plugin einfach neu einzubinden. Also: Plugin löschen, neuen Datensatz anlegen und Plugin erneut auswählen. Ich kann mir nicht recht erklären, warum es so klappt, aber TYPO3 scheint da intern noch irgendetwas zu speichern. (Hat jemand eine Idee?)</p>
<h3>Validation errors</h3>
<p><strong>Fehlermeldung:</strong></p>
<blockquote><p>
An error occurred while trying to call Tx_Yourextkey_Controller_YourController->showAction(). Error: Validation errors for argument &#8220;variable&#8221;.
</p></blockquote>
<p>Dieser Fehler tritt zum Beispiel auf, wenn man die Einzelansicht (showAction) eines Controllers aufruft. Hier muss dann ja das aktuelle Objekt mit übergeben werden.</p>
<p><strong>Lösung:</strong><br />
Mit den PHPDoc annotations experimentieren. Zum Beispiel:</p>
<pre>
	/**
	 * action show
	 *
	 * @param mixed $variable
	 * @return void
	 * @dontvalidate $variable
	 * @dontverifyrequesthash
	 */
	public function showAction(Tx_Yourextkey_Domain_Model_YourModel $variable) {
		...
	}
</pre>
<h3>Required property does not exist</h3>
<p><strong>Fehlermeldung:</strong></p>
<blockquote><p>
An error occurred while trying to call Tx_Yourextkey_Controller_GemeindeController->showAction(). Error: Required property &#8216;variable&#8217; does not exist.
</p></blockquote>
<p>Dieser Fehler kann auftreten, wenn man die Einzelansicht (showAction) eines Controllers aufruft (s.o.).</p>
<p><strong>Lösung: </strong><br />
Dem Controller werden meist Parameter über GET/POST mitgegeben. Der obige Fehler taucht auf, wenn ein nötiger Parameter nicht übergeben wurde. Am besten noch einmal überprüfen, wo der Controller aufgerufen wurde. Eventuell wurden dem Link oder Formular keine Argumente mit übergeben.</p>
]]></content:encoded>
			<wfw:commentRss>http://paul-rohrbeck.de/artikel/typo3-extbase-haufige-fehler-und-losungen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TYPO3, Fluid: deutsches Datum (Monate, Tage) ausgeben mittels Strftime ViewHelper</title>
		<link>http://paul-rohrbeck.de/artikel/typo3-fluid-deutsches-datum-monate-tage-ausgeben-mittels-strftime-viewhelper/</link>
		<comments>http://paul-rohrbeck.de/artikel/typo3-fluid-deutsches-datum-monate-tage-ausgeben-mittels-strftime-viewhelper/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 12:47:55 +0000</pubDate>
		<dc:creator>Paul Rohrbeck</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[datum]]></category>
		<category><![CDATA[deutsch]]></category>
		<category><![CDATA[extbase]]></category>
		<category><![CDATA[fluid]]></category>
		<category><![CDATA[strftime]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://paul-rohrbeck.de/?p=1316</guid>
		<description><![CDATA[Mittels f:format.date kann man zwar komfortabel einen Timestamp bzw. ein DateTime-Objekt als formatiertes Datum ausgeben, aber leider werden Monatsnamen etc. stets in Englisch angezeigt, weil es auf der PHP-Funktion date() basiert. Die Funktion strftime hingegen beachtet die lokalen Einstellungen des &#8230; <a href="http://paul-rohrbeck.de/artikel/typo3-fluid-deutsches-datum-monate-tage-ausgeben-mittels-strftime-viewhelper/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Mittels f:format.date kann man zwar komfortabel einen Timestamp bzw. ein DateTime-Objekt als formatiertes Datum ausgeben, aber leider werden Monatsnamen etc. stets in Englisch angezeigt, weil es auf der PHP-Funktion <a href="http://php.net/manual/de/function.date.php">date()</a> basiert.<br />
Die Funktion <a href="http://php.net/manual/de/function.strftime.php">strftime</a> hingegen beachtet die lokalen Einstellungen des Servers und gibt ein korrektes Datum aus. Hier nun also ein ViewHelper, der letztere Methode nutzt (basierend auf <a href="http://www.typo3.net/forum/beitraege/extbase_und_fluid/103967/">sunixzs</a> Beitrag auf TYPO3.net):</p>
<pre>
< ?php
/***************************************************************
*  Copyright notice
*
*  (c) 2011 Paul Rohrbeck
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

class Tx_Yourextkey_ViewHelpers_Format_StrftimeViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {

	/**
	 * Render the supplied DateTime object as a formatted date using strftime.
	 *
	 * @param mixed $date either a DateTime object or a string (UNIX-Timestamp)
	 * @param string $format Format String which is taken to format the Date/Time
	 * @return string Formatted date
	 */
	public function render($date = NULL, $format = '%A, %d. %B %Y') {

		if ($date === NULL) {
			$date = $this->renderChildren();
			if ($date === NULL) {
				return '';
			}
		}

		if ($date instanceof DateTime) {
			try {
				//return strftime($format, $date->getTimestamp()); funktioniert nur mit PHP > 5.3
				return strftime($format, $date->format('U'));
			} catch (Exception $exception) {
				throw new Tx_Fluid_Core_ViewHelper_Exception('"' . $date . '" was DateTime and could not be converted to UNIX-Timestamp by DateTime.', 200000001);
			}
		}

		return strftime($format, (int)$date);
	}
}
?>
</pre>
<p>sunixzs nutzt in seiner Variante $date->getTimestamp() (oben auskommentiert). Diese Funktion gibt es PHP aber erst ab der Version 5.3. Mit Hilfe von $date->format(&#8216;U&#8217;) funktioniert sein ViewHelper bereits ab 5.2, was die meisten Server unterstützen sollten.</p>
<p>Anwendung:</p>
<pre>
&lt;tx:format .strftime format=&quot;%e. %B&quot;&gt;{timestamp}&lt;/tx:format&gt;
</pre>
<p>Man beachte den anderen Syntax bzw. die anderern Platzhalter der Funktion <a href="http://php.net/manual/de/function.strftime.php">strftime</a>.</p>
<p>Und wieder der Hinweis zum Schluss: ext_autoload.php nicht vergessen. Am einfachsten über <a href="http://typo3.org/extensions/repository/view/extdeveval/current/">extdeveval</a> automatisch erstellen lassen. ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://paul-rohrbeck.de/artikel/typo3-fluid-deutsches-datum-monate-tage-ausgeben-mittels-strftime-viewhelper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TYPO3, Fluid: str_replace Viewhelper</title>
		<link>http://paul-rohrbeck.de/artikel/typo3-fluid-str_replace-viewhelper/</link>
		<comments>http://paul-rohrbeck.de/artikel/typo3-fluid-str_replace-viewhelper/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 12:28:49 +0000</pubDate>
		<dc:creator>Paul Rohrbeck</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[extbase]]></category>
		<category><![CDATA[fluid]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://paul-rohrbeck.de/?p=1312</guid>
		<description><![CDATA[Ein einfacher Fluid ViewHelper für die oft genutzte PHP-Funktion str_replace, mit der man einen String durch einen anderen String ersetzen kann: < ?php /*************************************************************** * Copyright notice * * (c) 2011 Paul Rohrbeck * All rights reserved * * This &#8230; <a href="http://paul-rohrbeck.de/artikel/typo3-fluid-str_replace-viewhelper/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ein einfacher Fluid ViewHelper für die oft genutzte <a href="http://php.net/manual/de/function.str-replace.php">PHP-Funktion str_replace</a>, mit der man einen String durch einen anderen String ersetzen kann:</p>
<pre>
< ?php
/***************************************************************
*  Copyright notice
*
*  (c) 2011 Paul Rohrbeck
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

class Tx_Yourextkey_ViewHelpers_StrreplaceViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {

	/**
	 * Ersetzt alle Vorkommen des Suchstrings durch einen anderen String
	 *
	 * @param string $search
	 * @param string $replace
	 * @return string
	 */
    public function render($search = '', $replace = '') {

		$subject = $this->renderChildren();
		return str_replace($search, $replace, $subject);

    }

}
?>
</pre>
<p>Anwendung im Fluid Template:</p>
<pre>
{namespace tx = Tx_Ejwintern_ViewHelpers}

&lt;tx:strreplace search=&quot;@&quot; replace=&quot;(at)&quot;&gt;{personen.email}&lt;/tx:strreplace&gt;
</pre>
<p>In diesem konkreten Fall wird das @ in einer E-Mail-Adresse zum SPAM-Schutz durch (at) ersetzt.</p>
<p>Hinweis: ext_autoload.php nicht vergessen. Am einfachsten über <a href="http://typo3.org/extensions/repository/view/extdeveval/current/">extdeveval</a> automatisch erstellen lassen. ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://paul-rohrbeck.de/artikel/typo3-fluid-str_replace-viewhelper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TYPO3, Extbase, Fluid: Flexform-Auwahl für Listen- und Einzelansicht von Datensätzen</title>
		<link>http://paul-rohrbeck.de/artikel/typo3-extbase-fluid-flexform-auwahl-fur-listen-und-einzelansicht-von-datensatzen/</link>
		<comments>http://paul-rohrbeck.de/artikel/typo3-extbase-fluid-flexform-auwahl-fur-listen-und-einzelansicht-von-datensatzen/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 16:36:35 +0000</pubDate>
		<dc:creator>Paul Rohrbeck</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[extbase]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[flexform]]></category>
		<category><![CDATA[fluid]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://paul-rohrbeck.de/?p=1306</guid>
		<description><![CDATA[In der Extension, an der ich aktuell arbeite, ist es nötig, dass mein PlugIn verschiedene Modi hat: Eine Einstellung für die Anzeige aller Einträge (Listenansicht) und ein Modus für die Detailansicht eines Eintrags (Einzelansicht). So ähnlich ist es ja auch &#8230; <a href="http://paul-rohrbeck.de/artikel/typo3-extbase-fluid-flexform-auwahl-fur-listen-und-einzelansicht-von-datensatzen/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In der Extension, an der ich aktuell arbeite, ist es nötig, dass mein PlugIn verschiedene Modi hat: Eine Einstellung für die Anzeige aller Einträge (Listenansicht) und ein Modus für die Detailansicht eines Eintrags (Einzelansicht). So ähnlich ist es ja auch in tt_news implementiert. Dadurch dass man das PlugIn auf zwei verschiedene Seiten aufteilen kann ergeben sich einige Vorteile, wie zum Beispiel die Möglichkeit zur individuellen Gestaltung. <a href="http://daniel.lienert.cc/blog/?tx_t3blog_pi1%5BblogList%5D%5BshowUidPerma%5D=15">Daniel Lienerts Artikel</a> zu diesem Thema half mir dabei ein eigenes Flexform für meine Extbase-Extension anzulegen.</p>
<p>Die Flexform-Konfigurationsdateien finden sich im Ordner <strong>Configuration/FlexForms/</strong>. Hier kann man dann seine eigenen XML Dateien anlegen. Ich habe Daniels Code um die Felder &#8216;Listenansicht (pid)&#8217; und &#8216;Einzelansicht (pid)&#8217; erweitert, damit man jeweils die Seiten-ID des anderen PlugIns angeben kann:</p>
<pre>
&lt;t3datastructure&gt;
	&lt;sheets&gt;
		&lt;sdef&gt;
			&lt;root&gt;
				&lt;tceforms&gt;
					&lt;sheettitle&gt;Verhalten&lt;/sheettitle&gt;
				&lt;/tceforms&gt;
				&lt;type&gt;array&lt;/type&gt;
				&lt;el&gt;
					&lt;switchablecontrolleractions&gt;
						&lt;tceforms&gt; Standardaktion des Plugins
							&lt;config&gt;
							&lt;type&gt;select&lt;/type&gt;
								&lt;items&gt;
									&lt;numindex index=&quot;0&quot;&gt;
										&lt;/numindex&gt;&lt;numindex index=&quot;0&quot;&gt;Listenansicht&lt;/numindex&gt;
										&lt;numindex index=&quot;1&quot;&gt;Freizeit-&gt;list&lt;/numindex&gt;

									&lt;numindex index=&quot;1&quot;&gt;
										&lt;/numindex&gt;&lt;numindex index=&quot;0&quot;&gt;Einzelansicht&lt;/numindex&gt;
										&lt;numindex index=&quot;1&quot;&gt;Freizeit-&gt;show&lt;/numindex&gt;

								&lt;/items&gt;
							&lt;/config&gt;
						&lt;/tceforms&gt;
					&lt;/switchablecontrolleractions&gt;
					&lt;settings .listpid&gt;
					   &lt;tceforms&gt;
						  &lt;label&gt;Listenansicht (pid)&lt;/label&gt;
						  &lt;config&gt;
							 &lt;type&gt;input&lt;/type&gt;
							 &lt;size&gt;5&lt;/size&gt;
							 &lt;eval&gt;int&lt;/eval&gt;
							 &lt;default&gt;&lt;/default&gt;
						  &lt;/config&gt;
					   &lt;/tceforms&gt;
					&lt;/settings&gt;
					&lt;settings .showpid&gt;
					   &lt;tceforms&gt;
						  &lt;label&gt;Einzelansicht (pid)&lt;/label&gt;
						  &lt;config&gt;
							 &lt;type&gt;input&lt;/type&gt;
							 &lt;size&gt;5&lt;/size&gt;
							 &lt;eval&gt;int&lt;/eval&gt;
							 &lt;default&gt;&lt;/default&gt;
						  &lt;/config&gt;
					   &lt;/tceforms&gt;
					&lt;/settings&gt;
				&lt;/el&gt;
			&lt;/root&gt;
		&lt;/sdef&gt;
	&lt;/sheets&gt;
&lt;/t3datastructure&gt;
</pre>
<p>Natürlich ließe sich der obige Code noch optimieren durch den Einsatz der korrekten Verweise auf Language (locallang)-Dateien, aber es soll an dieser Stelle auch nur das Prinzip verdeutlicht werden.</p>
<p>Die angelegte Flexform-Datei muss im Anschluss in der <strong>ext_tables.php</strong> referenziert werden. Der neue Extension Builder legt dafür schon einmal die entsprechenden drei Zeilen an, die aber auskommentiert sind:</p>
<pre>
$pluginSignature = str_replace('_','',$_EXTKEY) . '_' . deinpluginname;
$TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
t3lib_extMgm::addPiFlexFormValue($pluginSignature, 'FILE:EXT:' . $_EXTKEY . '/Configuration/FlexForms/flexform_' .deinpluginname. '.xml');
</pre>
<p>Im Fluid View/Template kann man nun über {settings.showpid} auf die gemachten Einstellungen zugreifen und z.B. steuern, auf welcher Seite die Singleansicht der Einträge (showAction) liegt:</p>
<pre>
&lt;f:link .action action=&quot;show&quot; arguments=&quot;{model: model}&quot; pageUid=&quot;{settings.showpid}&quot;&gt;&raquo; Mehr Informationen&lt;/f:link&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://paul-rohrbeck.de/artikel/typo3-extbase-fluid-flexform-auwahl-fur-listen-und-einzelansicht-von-datensatzen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TYPO3: RTE in eigener Extbase-Extension verwenden</title>
		<link>http://paul-rohrbeck.de/artikel/typo3-rte-in-eigener-extbase-extension-verwenden/</link>
		<comments>http://paul-rohrbeck.de/artikel/typo3-rte-in-eigener-extbase-extension-verwenden/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 16:08:53 +0000</pubDate>
		<dc:creator>Paul Rohrbeck</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[extbase]]></category>
		<category><![CDATA[fluid]]></category>
		<category><![CDATA[rte]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://paul-rohrbeck.de/?p=1303</guid>
		<description><![CDATA[In eigenen TYPO3 Extensions kommt es häufiger vor, dass für längere Textfelder der Standard RTE (Rich Text Editor) von TYPO3 verwendet werden soll. Solange man kein kompliziertes Pflegemodul selber schreiben muss und die Bordmittel von T3 nutzt, ist das Ganze &#8230; <a href="http://paul-rohrbeck.de/artikel/typo3-rte-in-eigener-extbase-extension-verwenden/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In eigenen TYPO3 Extensions kommt es häufiger vor, dass für längere Textfelder der Standard RTE (Rich Text Editor) von TYPO3 verwendet werden soll. Solange man kein kompliziertes Pflegemodul selber schreiben muss und die Bordmittel von T3 nutzt, ist das Ganze ziemlich einfach. Man muss lediglich das TCA der jeweiligen Models anpassen. Bei neuen Extensions sollte es sich im Ordner Configuration/TCA/ befinden.</p>
<p>Oben im &#8216;types&#8217; array die einfache Bezeichnung &#8216;beschreibung&#8217; ersetzen durch:</p>
<pre>
	// aus 'beschreibung' wird:
	// beschreibung;;;richtext:rte_transform[mode=ts_css]

	'types' => array(
		'1' => array(..., beschreibung;;;richtext:rte_transform[mode=ts_css], ...),
	),
</pre>
<p>Folgendes bei der Auflistung der Felder bearbeiten, man beachte das hinzugekommene &#8216;wizards&#8217; array:</p>
<pre>
		'beschreibung' => array(
			'exclude' => 1,
			'label' => 'LLL:EXT:deinextkey/Resources/Private/Language/locallang_db.xml:tx_deinextkey_domain_model_deinmodel.beschreibung',
			'config' => array(
				'type' => 'text',
				'cols' => 40,
				'rows' => 15,
				'eval' => 'trim',
        		'wizards' => array(
        			'_PADDING' => 4,
        			'RTE' => array(
        				'notNewRecords' => 1,
        				'RTEonly' => 1,
        				'type' => 'script',
        				'title' => 'LLL:EXT:cms/locallang_ttc.php:bodytext.W.RTE',
        				'icon' => 'wizard_rte2.gif',
        				'script' => 'wizard_rte.php',
        			),
        		),
			),
		),
</pre>
<p>Im Fluid View/Template muss man dann beachten, dass man das Feld als HTML rendert:</p>
<pre>
	&lt;f:format .html&gt;{deinmodel.beschreibung}&lt;/f:format&gt;
</pre>
<p>Ich hoffe das hilft dem ein oder anderen.. ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://paul-rohrbeck.de/artikel/typo3-rte-in-eigener-extbase-extension-verwenden/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>TYPO3: Liste der Überschriften einer Seite ausgeben</title>
		<link>http://paul-rohrbeck.de/artikel/typo3-liste-der-uberschriften-einer-seite-ausgeben/</link>
		<comments>http://paul-rohrbeck.de/artikel/typo3-liste-der-uberschriften-einer-seite-ausgeben/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 12:26:01 +0000</pubDate>
		<dc:creator>Paul Rohrbeck</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[liste]]></category>
		<category><![CDATA[sitebar]]></category>
		<category><![CDATA[sitemap]]></category>
		<category><![CDATA[stdwrap]]></category>
		<category><![CDATA[typo3]]></category>
		<category><![CDATA[typoscript]]></category>
		<category><![CDATA[überschriften]]></category>

		<guid isPermaLink="false">http://paul-rohrbeck.de/?p=1293</guid>
		<description><![CDATA[So erstellen Sie eine Liste der Überschriften einer Seite per TypoScript (eine Art Sitemap, aber nur für eine Seite). Es werden aus der Tabelle tt_content die Datensätze der aktuellen Seite ausgelesen. Der Titel (&#8222;header&#8220;) wird verlinkt mit der ID des &#8230; <a href="http://paul-rohrbeck.de/artikel/typo3-liste-der-uberschriften-einer-seite-ausgeben/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So erstellen Sie eine Liste der Überschriften einer Seite per TypoScript (eine Art Sitemap, aber nur für eine Seite). Es werden aus der Tabelle tt_content die Datensätze der aktuellen Seite ausgelesen. Der Titel (&bdquo;header&ldquo;) wird verlinkt mit der ID des Eintrags. Das Ganze wird gewrappt in einer Liste und einem div-Container und in einen Marker gepackt. Das &bdquo;required&ldquo; sorgt dafür, dass die Box nur erscheint, wenn es überhaupt Überschriften gibt.<br />
Nützlich ist es zum Beispiel, wenn man in der Sitebar eine Art verlinktes Inhaltsverzeichnis der aktuellen Seite darstellen möchte.</p>
<pre>
### Sitebar ###
marks.sitebar = COA
marks.sitebar {
	10 = CONTENT
	10 {
   		table = tt_content
   		select.where = colPos = 0
   		select.languageField = sys_language_uid
    	renderObj = COA
  		renderObj {
      		10 = TEXT
      		10.field = header
     		10.wrap = &lt;li&gt;|&lt;/li&gt;
     		10.typolink {
       			parameter.data = TSFE:id
       			 section.field = uid
      		}
    	}
    	stdWrap.required = 1
		stdWrap.wrap = &lt;div&gt;&lt;ul&gt;|&lt;/ul&gt;&lt;/div&gt;
  	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://paul-rohrbeck.de/artikel/typo3-liste-der-uberschriften-einer-seite-ausgeben/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress the_content() zeigt falschen Content</title>
		<link>http://paul-rohrbeck.de/artikel/wordpress-the_content-zeigt-falschen-content/</link>
		<comments>http://paul-rohrbeck.de/artikel/wordpress-the_content-zeigt-falschen-content/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 14:41:41 +0000</pubDate>
		<dc:creator>Paul Rohrbeck</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[category posts widget]]></category>
		<category><![CDATA[the_content]]></category>

		<guid isPermaLink="false">http://paul-rohrbeck.de/?p=1267</guid>
		<description><![CDATA[Ich hatte eben ein merkwürdiges Problem in meiner WordPress-Installation. In der Single-Ansicht der Artikel wurde immer der gleiche Inhalt/Text ausgegeben, obwohl aber die URL stimmte und auch der Rest der Seite zum ausgewählten Inhalt passte. OK, das klingt kompliziert, also &#8230; <a href="http://paul-rohrbeck.de/artikel/wordpress-the_content-zeigt-falschen-content/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ich hatte eben ein merkwürdiges Problem in meiner WordPress-Installation. In der Single-Ansicht der Artikel wurde immer der gleiche Inhalt/Text ausgegeben, obwohl aber die URL stimmte und auch der Rest der Seite zum ausgewählten Inhalt passte. OK, das klingt kompliziert, also hier ein Beispiel: Ich klicke auf Link A und komme auf Seite A. Der Titel dort ist korrekt (Titel A), ebenso die Datumsangaben und alles andere. Nur der Inhalt kommt von einem komplett anderen Artikel. Der Marker
<pre>< ?php the_content(); ?></pre>
<p> wurde also falsch befüllt.</p>
<p>Da ich in letzter Zeit sehr viel umgebaut habe, war nicht sofort klar, woran es liegt. Zu guter letzt habe ich den Fehler aber doch gefunden. Das Plugin &bdquo;Category Posts Widget&ldquo; in der aktuellen Version 3.2 (siehe im <a href="http://wordpress.org/extend/plugins/category-posts/">Plugin Directory</a>), ein an sich echt nützliche Extension um die neusten Posts einer Kategorie auszugeben, war der Übeltäter. Dieses hatte ich in der Sitebar der Artikel eingebunden und scheinbar beeinflusst es den WP-Loop in irgendeiner Weise. </p>
<p>Auch wenn ich den Fehler noch nicht ganz nachvollziehen kann, habe ich das Widget aus dem Bereich Artikel zunächst entfernt und es funktioniert wieder alles prima.</p>
]]></content:encoded>
			<wfw:commentRss>http://paul-rohrbeck.de/artikel/wordpress-the_content-zeigt-falschen-content/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TYPO3: Datensätze via TypoScript nur auf einer Seite anzeigen</title>
		<link>http://paul-rohrbeck.de/artikel/typo3-datensatze-via-typoscript-nur-auf-einer-seite-anzeigen/</link>
		<comments>http://paul-rohrbeck.de/artikel/typo3-datensatze-via-typoscript-nur-auf-einer-seite-anzeigen/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 12:22:09 +0000</pubDate>
		<dc:creator>Paul Rohrbeck</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[conditions]]></category>
		<category><![CDATA[typo3]]></category>
		<category><![CDATA[typoscript]]></category>

		<guid isPermaLink="false">/artikel/typo3-datensatze-via-typoscript-nur-auf-einer-seite-anzeigen/</guid>
		<description><![CDATA[Um eine TYPO3-Präsenz variabel zu halten, kann es vorkommen, dass bestimmte Datensätze nur auf bestimmten Seiten (z.B. der Startseite) angezeigt werden sollen. Im folgenden Beispiel wird auf der Startseite (id = 2) der Marker &#8222;header_left&#8220; anders gefüllt als auf den &#8230; <a href="http://paul-rohrbeck.de/artikel/typo3-datensatze-via-typoscript-nur-auf-einer-seite-anzeigen/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um eine TYPO3-Präsenz variabel zu halten, kann es vorkommen, dass bestimmte Datensätze nur auf bestimmten Seiten (z.B. der Startseite) angezeigt werden sollen.</p>
<p>Im folgenden Beispiel wird auf der Startseite (id = 2) der Marker &bdquo;header_left&ldquo; anders gefüllt als auf den anderen Seiten:</p>
<pre>
[globalVar = TSFE:id=2]
        page.10.marks.header_left = CONTENT
        page.10.marks.header_left {
            table = tt_content
            select.where = colPos = 1
            select.pidInList = 58
            select.languageField = sys_language_uid
        }
[global]
</pre>
<p>Wenn die Einstellung auch auf den Unterseiten (in diesem Fall der Startseite) gelten soll, kann in der ersten Zeile auch folgendes verwendet werden:</p>
<pre>
[PIDinRootline = 2]
</pre>
<p>Die genannten Codeschnipsel verwenden Sie am besten im TypoScript-Setup, wo sie auch das rechtliche Layout mit Markern zusammensetzen. Wichtg zu betonen ist, dass Bedingungen immer auf oberster Ebene stehen müssen. Sie können auch eine kommaseparierte Liste mit IDs angeben.</p>
]]></content:encoded>
			<wfw:commentRss>http://paul-rohrbeck.de/artikel/typo3-datensatze-via-typoscript-nur-auf-einer-seite-anzeigen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  paul-rohrbeck.de/bereich/artikel/feed/ ) in 0.73205 seconds, on May 18th, 2012 at 10:14 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 18th, 2012 at 11:14 pm UTC -->
