<?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>Marit AG TYPO3 Blog</title>
	<atom:link href="http://blog.marit.ag/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.marit.ag</link>
	<description>Der Blog rund um TYPO3 Technik, Extensions, Events und allgmeinen Themen</description>
	<lastBuildDate>Wed, 21 Jul 2010 08:12:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>T3DD10 &#8211; Mein Rückblick</title>
		<link>http://blog.marit.ag/2010/07/21/t3dd10-mein-ruckblick/</link>
		<comments>http://blog.marit.ag/2010/07/21/t3dd10-mein-ruckblick/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 06:34:41 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[TYPO3 Events]]></category>

		<guid isPermaLink="false">http://blog.marit.ag/?p=900</guid>
		<description><![CDATA[Über 200 Entwickler trafen sich Anfang Juli in der Nordakademie in Elmshorn nahe Hamburg zu den TYPO3 Developer Days 2010. Dem Motto &#8220;getting things done&#8221; folgend lag in diesem Jahr der Schwerpunkt auf Workshops, die zum Mitmachen einluden. Am Freitag war ich in einem Workshop in dem Unit-Tests für den TYPO3 Core geschrieben wurden. Dabei [...]]]></description>
			<content:encoded><![CDATA[<p>Über 200 Entwickler trafen sich Anfang Juli in der Nordakademie in Elmshorn nahe Hamburg zu den TYPO3 Developer Days 2010. Dem Motto &#8220;getting things done&#8221; folgend lag in diesem Jahr der Schwerpunkt auf Workshops, die zum Mitmachen einluden.</p>
<p><span id="more-900"></span></p>
<p>Am Freitag war ich in einem Workshop in dem Unit-Tests für den TYPO3 Core geschrieben wurden. Dabei hat der Core-Entwickler Oliver Klee zunächst eine theoretische Einfürung in Unit-Tests gegeben und erklärt, wo die Vorteile liegen. Anschließend haben wir in kleinen Gruppen dann selbst Unit-Tests für einige Core-Funktionen geschrieben.</p>
<p>In einem weiteren Workshop ging es um das TSref. Hier haben wir diskutiert, wie man ein zentrales Dokument aufbauen könnte damit die verschiedenen Anwendungen dieses Dokument als Datenbasis verwenden können. Ziel war eine Lösung die Daten so bereitzustellen, dass darauf sowohl das Online-TSref, die Inline-Hilfe im T3Editor als auch alle möglichen weiteren Anwendungen möglichst leicht zugreifen können. Letztendlich kamen wir bei unseren Diskussionen zu einer XML-Struktur, die in einem zentralen Repository gepflegt wird und dann von den einzelnen Anwendungen importiert werden kann.</p>
<p>In einem weiteren Workshop stellte Jo Hasenau die Extension-Gruppe ICE-Pack vor. Hier wurde gezeigt, und man konnte das auch gleich selbst ausprobieren, wie sich mit dem ICE-Pack individuelle Inhaltselemente für den Redakteur bereitstellen lassen.</p>
<p>Natürlich gab es auch den ein oder anderen interessanten Talk. Am Donnerstag stellten Steffen Ritter und Steffen Gebert die Technik hinter dem neuen TYPO3 V4.4 Backendskin vor. Es hat sich viel getan, so dasss es nun wesentlich einfacher ist, das Backend an die eigenen Bedürfnisse anzupassen.</p>
<p>Ein weiterer Talk war der KickOff zur Version 4.5. Unter anderem wurden dabei auch die Releasezyklen der kommenden TYPO3-Versionen erklärt. Da es seit 4.3 jedes halbe Jahr eine neue Version geben soll, wird jede einzelne Version nur noch 1,5 Jahre supportet. Version 4.5 soll deshalb eine LTS-Version sein, die 3 Jahre supportet wird.</p>
<p>Für mich sind die vielen kleinen Gespräche vor und nach den Workshops und ein gemütliches Bier am Abend das Interssanteste an den Developer Days. Wobei man mit diesen kleinen Fläschchen als vernünftiger Münchner nicht wirklich glücklich wird. <img src='http://blog.marit.ag/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Und ganz großes Tennis war in diesem Jahr natürlich auch das Fußball-WM-Spiel der deutschen Mannschaft. 150 Nerds + gefühlt nochmal so viele Kameras in einem Raum vor einer riesigen Leinwand,  die mit ihrer Mannschaft leiden und sich freuen. Das muss man erlebt haben.</p>
<p>Das war&#8217;s auch schon mit meinem Rückblick. Ich freu mich schon aufs nächste Jahr.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marit.ag/2010/07/21/t3dd10-mein-ruckblick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook-Share und Twitter-Update Button mit Typoscript</title>
		<link>http://blog.marit.ag/2010/07/08/facebook-share-und-twitter-update-button-mit-typoscript/</link>
		<comments>http://blog.marit.ag/2010/07/08/facebook-share-und-twitter-update-button-mit-typoscript/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 07:52:58 +0000</pubDate>
		<dc:creator>Sven</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://blog.marit.ag/?p=855</guid>
		<description><![CDATA[Gute Blog-Artikel oder Webseiten mit anderen Menschen in Sozialen Netzwerken wie Facebook, Xing oder Twitter mitteilen zu können, ist nicht nur &#8220;modern&#8221;, sondern hilft auch vielen im Wust der aber-milliarden Websites die &#8220;guten&#8221; heraus zu finden. Manchmal kann man für eine umfangreiche Bookmark- oder Share-Liste auch Extensions für TYPO3 installieren. Dazu später mehr. Facebook Typoscript [...]]]></description>
			<content:encoded><![CDATA[<p>Gute Blog-Artikel oder Webseiten mit anderen Menschen in Sozialen Netzwerken wie Facebook, Xing oder Twitter mitteilen zu können, ist nicht nur &#8220;modern&#8221;, sondern hilft auch vielen im Wust der aber-milliarden Websites die &#8220;guten&#8221; heraus zu finden.</p>
<p><span id="more-855"></span></p>
<p>Manchmal kann man für eine umfangreiche Bookmark- oder Share-Liste auch Extensions für TYPO3 installieren. Dazu später mehr.</p>
<h3>Facebook Typoscript &#8211; Gefällt mir!</h3>
<p><strong>Ich möchte hier aber die Möglichkeit der Einbindung über Typoscript vorstellen.</strong></p>
<p>In der Designvorlage sind drei Icons abgebildet, also es sollen drei Links zu <a href="http://www.facebook.de">Facebook</a>, <a href="http://twitter.com">Twitter</a> und <a href="http://www.mister-wong.de">Mister Wong</a> generiert werden, die per Klick die URL und den Titel der Seite übermitteln sollen.</p>
<p><img class="alignnone size-full wp-image-870" title="typo3-share designvorlage" src="http://blog.marit.ag/wp-content/uploads/typo3-share-designvorlage.png" alt="TYPO3 Share image" width="280" height="80" /></p>
<h4>HTML-Struktur</h4>
<p>Ein einfacher DIV-Block mit den jeweiligen Links.</p>
<pre class="brush: xml;">
&lt;div class=&quot;shareBlock&quot;&gt;
 &lt;a class=&quot;facebookLink&quot; href=&quot;#&quot;&gt;Facebook&lt;/a&gt;
 &lt;a class=&quot;twitterLink&quot; href=&quot;#&quot;&gt;Twitter&lt;/a&gt;
 &lt;a class=&quot;wongLink&quot; href=&quot;#&quot;&gt;Mister Wong&lt;/a&gt;
&lt;/div&gt;
</pre>
<h4>CSS mit Sprite-Image</h4>
<p>Auch, wenn es in dem Beispiel &#8220;nur&#8221; drei Icons sind, macht es Sinn, diese als <a title="CSS Sprite - Ladegeschwindigkeit optimieren und HTTP-Requests verringern" href="http://webstandard.kulando.de/post/2010/05/26/css-sprite-ladegeschwindigkeit-optimieren-http-requests-verringern">CSS-Sprites</a> anzulegen. Es ist durchaus denkbar, dass später noch weitere Social-Dienste angefügt werden. Aus Performance-Gründen werden hierbei die HTTP-Request auf einem niedrigen Niveau gehalten und alle Icons in eine Grafik gepackt. Aus diesem Grund erhalten alle Links im CSS den gleichen Hintergrund (social-icons.png) und im Anschluss wird über <em>background-position</em> der jeweilige Bereich der Sprite-Grafik angezeigt.</p>
<pre class="brush: plain;">
.shareBlock {
	background: url(teilen.png) no-repeat 0 50%;
	clear: both;
	margin: 0 0 20px -17px;
	padding: 3px 0 5px 100px;
}
.twitterLink, .facebookLink, .wongLink {
	background: #fff url(http://blog.marit.ag/wp-content/uploads/social-icons.png) no-repeat;
	display: inline-block;
	height: 32px;
	width: 32px;
	text-indent: -9999px
}
.facebookLink {background-position: 0 0}
.twitterLink {background-position: 0 -50px}
.wongLink {background-position: 0 -100px}
</pre>
<p>Der Einfachheit halber habe ich die Icons in der Sprite-Grafik in einem Raster von 50px angelegt &#8211; so kann man die <em>background-position</em> leichter &#8220;finden&#8221;.</p>
<p>Das Arbeiten mit CSS-Sprite-Grafiken hat mehrere Vorteile:</p>
<ul>
<li>nur 1 Bild für alle Icons wird geladen</li>
<li>nur 1 HTTP-Request</li>
<li>die Dateigröße dieser Datei ist viel geringer als die Summe mehrerer Icon-Grafiken</li>
<li>barrierearm, da Textlink mit Hintergrund-Grafik</li>
</ul>
<h4>Typoscript-Snippet</h4>
<pre class="brush: plain;">
#| sociallinks |#

lib.sociallinks = COA
lib.sociallinks {
	wrap = &lt;div class=&quot;shareBlock&quot;&gt;|&lt;/div&gt;

	10 = TEXT
	10 {
		value = Facebook
		typolink.title = Auf Facebook teilen
		typolink.ATagParams = class=&quot;facebookLink&quot;
		typolink.parameter.cObject = COA
		typolink.parameter.cObject {
			10 = TEXT
			10.dataWrap = http://www.facebook.com/sharer.php?u={$baseURL}|
			10.typolink.parameter.data = TSFE:id
			10.typolink.returnLast = url
			10.typolink.addQueryString = 1
			10.typolink.addQueryString.exclude = id

			20 = TEXT
			20.data = page:title
			20.wrap = &amp;t=|
			20.rawUrlEncode = 1
		}
	}

	20 = TEXT
	20 {
		value = Twitter
		typolink.title = Tweet it!
		typolink.ATagParams = class=&quot;twitterLink&quot;
		typolink.parameter.cObject = COA
		typolink.parameter.cObject {
			10 = TEXT
			10.data = page:title
			10.noTrimWrap = |ließt%20grad:%20||
			10.dataWrap = http://twitter.com/home/?status=|
			10.rawUrlEncode = 1

			20 = TEXT
			20.dataWrap = %20-%20{$baseURL}|
			20.typolink.parameter.data = TSFE:id
			20.typolink.returnLast = url
			20.typolink.addQueryString = 1
			20.typolink.addQueryString.exclude = id
		}
	}

	30 = TEXT
	30 {
		value = Mister Wong
		typolink.title = Wong it!
		typolink.ATagParams = class=&quot;wongLink&quot;
		typolink.parameter.cObject = COA
		typolink.parameter.cObject {
			10 = TEXT
			10.dataWrap = http://www.mister-wong.de/index.php?action=addurl&amp;bm_url={$baseURL}|
			10.typolink.parameter.data = TSFE:id
			10.typolink.returnLast = url
			10.typolink.addQueryString = 1
			10.typolink.addQueryString.exclude = id

			20 = TEXT
			20.data = page:title
			20.wrap = &amp;bm_description=|
			20.rawUrlEncode = 1
		}
	}
}
</pre>
<h3>Typoscript am Beispiel Facebook</h3>
<pre class="brush: plain;">
	10 = TEXT
	10 {
</pre>
<p>ein <em>cObject TEXT</em> wird initiiert</p>
<pre class="brush: plain;">
		value = Facebook
</pre>
<p>Der Wert &#8220;<strong>Facebook</strong>&#8221; wird festgelegt (Ankertext)</p>
<pre class="brush: plain;">
		typolink.title = Auf Facebook teilen
</pre>
<p>ein Link (a-Tag) wird drumherum generiert und das title-Attribut vom Link wird mit &#8220;<strong>Auf Facebook teilen</strong>&#8221; gefüllt</p>
<pre class="brush: plain;">
		typolink.ATagParams = class=&quot;facebookLink&quot;
</pre>
<p>eine Link-Klasse &#8220;<strong>facebookLink</strong>&#8221; wird über ATagParams eingesetzt</p>
<pre class="brush: plain;">
		typolink.parameter.cObject = COA
		typolink.parameter.cObject {
</pre>
<p>für den Typolink-Parameter (href) wird ein neues cObject vom Typ <em>COA</em> initiiert</p>
<pre class="brush: plain;">
			10 = TEXT
			10.dataWrap = http://www.facebook.com/sharer.php?u={$baseURL}|
</pre>
<p>erster Teil des href: der externe Link zur sharer.php-Funktion von Facebook mit dem u-Parameter der Typoscript-Konstante &#8220;<em>$baseURL</em>&#8221; direkt als dataWrap (in den Typoscript-Constants muss diese Konstante vorhanden sein, Beispiel: baseURL = http://blog.marit.ag/)</p>
<pre class="brush: plain;">
			10.typolink.parameter.data = TSFE:id
</pre>
<p>die aktuelle Seiten-ID wird ausgelesen</p>
<pre class="brush: plain;">
			10.typolink.returnLast = url
</pre>
<p>die URL wird als String zurückgegeben</p>
<pre class="brush: plain;">
			10.typolink.addQueryString = 1
</pre>
<p>alle weiteren URL-Parameter werden ausgelesen, Beispiel tt_news oder L-Parameter für die Sprachwahl</p>
<pre class="brush: plain;">
			10.typolink.addQueryString.exclude = id
</pre>
<p>die zusätzliche Seiten-ID wird hier ausgeschlossen</p>
<pre class="brush: plain;">
			20 = TEXT
</pre>
<p>zweiter Teil des Links</p>
<pre class="brush: plain;">
			20.data = page:title
</pre>
<p>der Seitentitel wird ausgelesen</p>
<pre class="brush: plain;">
			20.wrap = &amp;t=|
</pre>
<p>dieser Wert wird als Wert für den Parameter t des href gewrappt</p>
<pre class="brush: plain;">
			20.rawUrlEncode = 1
</pre>
<p>kodiert den übergebenen String entsprechend RFC 1738 zur sauberen Übergabe</p>
<pre class="brush: plain;">
		}
	}
</pre>
<p>und alle Klammern wieder schließen <img src='http://blog.marit.ag/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Extensions die man installieren kann</h3>
<ul>
<li><a href="http://typo3.org/extensions/repository/view/socialplugins/current/">Facebook Social Plugins</a> (socialplugins)</li>
<li><a href="http://typo3.org/extensions/repository/view/wt_socialbookmarks/current/">Links for Social bookmarking and social network</a> (wt_socialbookmarks)</li>
<li><a href="http://typo3.org/extensions/repository/view/form4_socialmedialinks/current/">Social Media Links</a> (form4_socialmedialinks)</li>
<li><a href="http://typo3.org/extensions/repository/view/form4_socialmedialinks/current/">Sexy-Bookmarks</a> (sexybookmarks)</li>
</ul>
<h3>Fazit</h3>
<p>Für den Einsatz von Facebook-Share oder Twitter-Button kann man durchaus Typoscript verwenden. Eine schlanke schnelle Lösung auch wenn man weitere Bookmark-Dienste oder Soziale Netzwerke hinzufügen möchte. Ich würde dabei immer den Weg über CSS-Sprites mit allen Icons in einer Grafik gehen, schon aus Performance-Gründen.</p>
<p>Ein kurzer Satz über den Unterschied zwischen der Facebook-Like! Funktion und Share. Für mich persönlich ist die Share-Funktion aktuell für diesen Zweck des &#8220;Verbreitens/Teilens&#8221; bei Facebook besser geeignet. Ich kann beim Prozess auf Facebook noch zusätzliche Kommentare hinzufügen und ein Vorschaubild auswählen (das direkt aus der Seite ausgelesen wird), sofern eines vorhanden ist. Bei der Like-Funktion (Gefällt mir!) wird bei Facebook lediglich ein Satz abgespeichert &#8220;Sven gefällt Marit AG TYPO3 Blog Facebook-Share und Twitter-Update Button mit Typoscript&#8221; ohne weitere Kommentar-Möglichkeiten.</p>
<style>
/* <![CDATA[ */
.shareBlock { 	background: url(http://blog.marit.ag/wp-content/uploads/teilen.png) no-repeat 0 50%;  	clear: both;  	margin: 0 0 20px;  	padding: 3px 0 5px 100px; } .twitterLink, .facebookLink, .wongLink { 	background: #fff url(http://blog.marit.ag/wp-content/uploads/social-icons.png) no-repeat; 	display: inline-block; 	margin: 0 3px; 	height: 32px; 	width: 32px; 	text-indent: -9999px; } .facebookLink {background-position: 0 0} .twitterLink {background-position: 0 -50px} .wongLink {background-position: 0 -100px} 			
/* ]]&gt; */
</style>
<h4>Natürlich jetzt nicht vergessen diesen Artikel zu teilen</h4>
<h4>
<div class="shareBlock"><a class="facebookLink" title="Auf Facebook teilen" href="http://www.facebook.com/sharer.php?u=http://blog.marit.ag/2010/07/08/facebook-share-und-twitter-update-button-mit-typoscript/&amp;t=Marit AG TYPO3 Blog Facebook-Share und Twitter-Update Button mit Typoscript">Facebook</a><a class="twitterLink" title="Tweet it!" href="http://twitter.com/home/?status=ließt%20grad:%20Marit AG TYPO3 Blog Facebook-Share und Twitter-Update Button mit Typoscript - http://blog.marit.ag/?p=855">Twitter</a><a class="wongLink" title="Wong it!" href="http://www.mister-wong.de/index.php?action=addurl&amp;bm_url=http://blog.marit.ag/2010/07/08/facebook-share-und-twitter-update-button-mit-typoscript/&amp;bm_description=Marit AG TYPO3 Blog Facebook-Share und Twitter-Update Button mit Typoscript">Mister Wong</a></div>
</h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.marit.ag/2010/07/08/facebook-share-und-twitter-update-button-mit-typoscript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>TYPO3 Konferenz in Dallas, 20.-22. Mai 2010</title>
		<link>http://blog.marit.ag/2010/06/23/typo3-konferenz-in-dallas-20-22-mai-2010/</link>
		<comments>http://blog.marit.ag/2010/06/23/typo3-konferenz-in-dallas-20-22-mai-2010/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 11:49:15 +0000</pubDate>
		<dc:creator>Lina</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[TYPO3 Allgemein]]></category>
		<category><![CDATA[TYPO3 Events]]></category>
		<category><![CDATA[TYPO3 Extensions]]></category>
		<category><![CDATA[TYPO3 Technik]]></category>
		<category><![CDATA[extbase]]></category>
		<category><![CDATA[FLOW3]]></category>
		<category><![CDATA[fluid]]></category>
		<category><![CDATA[Phoenix]]></category>
		<category><![CDATA[Pingbacks]]></category>
		<category><![CDATA[Trackbacks]]></category>
		<category><![CDATA[typo3]]></category>
		<category><![CDATA[TYPO3 5]]></category>
		<category><![CDATA[TYPO3 Konferenz]]></category>

		<guid isPermaLink="false">http://blog.marit.ag/?p=835</guid>
		<description><![CDATA[Ein kurzer Rückblick und Informationen über neueste TYPO3 Entwicklungen.]]></description>
			<content:encoded><![CDATA[<p>Auf der TYPO3 Konferenz in Dallas gab es viele wichtige und interessante Beiträge zu Indexed Search, Solr, T3Flex. Robert Lemke, der Entwicklungsleiter des TYPO3 5.0-Teams, kündigte die TYPO3 Phoenix Betarelease für die nächsten Wochen an. TYPO3 Poenix ist eine Vorabversion von TYPO3 5. Robert hat die Agenturen aufgerufen, erste Projekte in Phoenix umzusetzen um das Projekt voranzutreiben. Zudem hat er Support für diese ersten Projekte angeboten. Das kann eine gute Gelegenheit sein, sich jetzt schon in FLOW3 einzuarbeiten.</p>
<p><span id="more-835"></span></p>
<p>Die Meinungen in der Community über FLOW3/TYPO3 5 sind noch geteilt, aber Extbase &amp; Fluid bekommen mehr und mehr Unterstützung.</p>
<p>In den USA sind die TYPO3 Programmierer noch eher Sonderlinge und müssen, um sich über Wasser zu halten, meist auch noch WordPress, Joomla &amp; Co machen.<br />
Im Moment gibt es allerdings etwas Goldgräberstimmung in Richtung San Franzisko und es waren dieses Jahr schon eindeutig mehr Mitglieder aus den Amerikas hier als im vorherigen Jahr.</p>
<p>Beim Social Event waren wir in einer Rodeo Bar mit echten Stieren. Howdy!</p>
<p>Das Handout meines eigenes Vortrages mit zusätzlichen Informationen über Trackbacks und Pingbacks findet Ihr <a title="TYPO3 Vortrag mit Trackbacks und Pingback" href="http://typo3-blog.net/tutorials/news/seamless-corporate-blog-integration-into-typo3.html" target="_blank">hier</a>.</p>
<p>Weitere Informationen zur Konferenz:<br />
<a title="TYPO3 Konferenz - weitere Informationen" href="http://joind.in/event/view/390" target="_blank">http://joind.in/event/view/390</a><br />
<a title="T3N zu TYPO3 Konferenz Dallas" href="http://t3con10-dallas.typo3.org/presentations-schedule/schedule/" target="_blank"> http://t3con10-dallas.typo3.org/presentations-schedule/schedule/</a><br />
<a title="TYPO3 Konferenz Dallas auf Twitter" href="http://twitter.com/#search?q=%23T3CON10" target="_blank"> http://twitter.com/#search?q=%23T3CON10</a></p>
<p>Zu <a title="Website von Lina Wolf" href="http://linawolf.de/" target="_blank">Linas Website</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marit.ag/2010/06/23/typo3-konferenz-in-dallas-20-22-mai-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ENABLE_INSTALL_TOOL nicht löschen lassen</title>
		<link>http://blog.marit.ag/2010/06/08/enable_install_tool-nicht-loschen-lassen/</link>
		<comments>http://blog.marit.ag/2010/06/08/enable_install_tool-nicht-loschen-lassen/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 07:32:09 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[ENABLE_INSTALL_TOOL]]></category>
		<category><![CDATA[install tool]]></category>
		<category><![CDATA[KEEP_FILE]]></category>

		<guid isPermaLink="false">http://blog.marit.ag/2010/06/08/enable_install_tool-nicht-loschen-lassen/</guid>
		<description><![CDATA[Wen es beim entwickeln nervt, dass die ENABLE_INSTALL_TOOL Datei automatisch nach einer Stunde gelöscht wird, der schreibt einfach folgendes in die Datei: KEEP_FILE Steht diese Zeile in der Datei, wird diese nicht mehr automatisch nach einer Stunde gelöscht.]]></description>
			<content:encoded><![CDATA[<p>Wen es beim entwickeln nervt, dass die ENABLE_INSTALL_TOOL Datei automatisch nach einer Stunde gelöscht wird, der schreibt einfach folgendes in die Datei:</p>
<p><span id="more-832"></span></p>
<pre class="brush: plain;">
KEEP_FILE
</pre>
<p>Steht diese Zeile in der Datei, wird diese nicht mehr automatisch nach einer Stunde gelöscht.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marit.ag/2010/06/08/enable_install_tool-nicht-loschen-lassen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hybrider, mehrsprachiger Seitenbaum (fb_hybridmultilanguagetree)</title>
		<link>http://blog.marit.ag/2010/05/30/fb_hybridmultilanguagetree/</link>
		<comments>http://blog.marit.ag/2010/05/30/fb_hybridmultilanguagetree/#comments</comments>
		<pubDate>Sun, 30 May 2010 10:42:40 +0000</pubDate>
		<dc:creator>Lina</dc:creator>
				<category><![CDATA[TYPO3 Extensions]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[Backend Sprache]]></category>
		<category><![CDATA[fb_hybridmultilanguagetree]]></category>
		<category><![CDATA[Mehrsprachigkeit]]></category>
		<category><![CDATA[Seitenbaum]]></category>

		<guid isPermaLink="false">http://blog.marit.ag/?p=819</guid>
		<description><![CDATA[Die TYPO3 Extension fb_hybridmultilanguagetree stellt eine schon lange gewünschte Funktion zur Verfügung: Bei mehrsprachigen Webseiten können sich die Redakteure im Seitenbaum die Titel der Seiten in ihrer Sprache anzeigen lassen. Noch nicht übersetzte Seiten werden ausgegraut, bleiben aber anklickbar und können noch übersetzt werden. In Ermangelung geeigneter Hooks nutzt die Extension xClasses und ist daher [...]]]></description>
			<content:encoded><![CDATA[<p>Die TYPO3 Extension fb_hybridmultilanguagetree stellt eine schon lange gewünschte Funktion zur Verfügung:<br />
Bei mehrsprachigen Webseiten können sich die Redakteure im Seitenbaum die Titel der Seiten in ihrer Sprache anzeigen lassen. Noch nicht übersetzte Seiten werden ausgegraut, bleiben aber anklickbar und können noch übersetzt werden.</p>
<p><span id="more-819"></span></p>
<p>In Ermangelung geeigneter Hooks nutzt die Extension xClasses und ist daher nicht kompatibel mit anderen Extensions, die ebenfalls den Seitenbaum xClassen z.B. pagetreetools, nutzt. Ein weiterer Nachteil ist, dass bei Änderung der Source an dieser Stelle mit einer neuen TYPO3 Version die Extension möglicherweise nicht nachzieht.</p>
<p>Momentan hat die Extension noch einige Nachteile, so ist der Seitenbaum in der ungepatchten Version der Extension nicht scrollbar. Dafür wurde jedoch ein Patch veröffentlicht: <a href="http://bugs.typo3.org/view.php?id=8678&amp;nbn=1">Patch zur Scrollbarkeit des Seitenbaums mit fb_hybridmultilanguagetree</a>. Der Patch hat bei mir anstandslos funktioniert. Ein ehemaliger Fehler: gelöschte Sprachen wurden im hybriden Seitenbaum trotzdem angezeigt, wurde mittlerweile behoben.</p>
<p>Leider fehlen bei Anzeige des Sprachwahlmenüs die Buttons zur Erzeugung neuer Seiten und zum Aktualisieren des Seitenbaums. Für dieses Problem habe ich einen Patch veröffentlicht: <a href="http://bugs.typo3.org/view.php?id=14528">Patch zur Anzeige des Button-Bar in fb_hybridmultilanguagetree</a>.</p>
<p>Extension nicht gepatcht und gepatcht<br />
<a href="http://blog.marit.ag/wp-content/uploads/fb_hybridmultilanguagetree-non-patched.png" rel="lightbox[819]"><img class="alignright size-medium wp-image-820" title="non-patched" src="http://blog.marit.ag/wp-content/uploads/non-patched-300x108.png" alt="" width="300" height="108" /></a><a href="http://blog.marit.ag/wp-content/uploads/fb_hybridmultilanguagetree-patched.png" rel="lightbox[819]"><img class="alignright size-medium wp-image-821" title="patched" src="http://blog.marit.ag/wp-content/uploads/patched-300x136.png" alt="" width="300" height="136" /></a></p>
<p>Positiv anzumerken ist, dass die Beschränkung von Redakteuren auf bestimmte Sprachen respektiert wird, dass zusätzliche Einstellungen wie die Anzeige der Seitennummern weiterhin funktionieren.</p>
<p>Es wurde jedoch berichtet, dass Workspaces nicht funktionieren. Im vorliegenden Projekt jedoch wurden keine Workspaces auf Seitenebene eingesetzt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marit.ag/2010/05/30/fb_hybridmultilanguagetree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XING Gruppenbeiträge in TYPO3 importieren</title>
		<link>http://blog.marit.ag/2010/05/28/xing-in-typo3-importieren/</link>
		<comments>http://blog.marit.ag/2010/05/28/xing-in-typo3-importieren/#comments</comments>
		<pubDate>Fri, 28 May 2010 07:14:23 +0000</pubDate>
		<dc:creator>Lina</dc:creator>
				<category><![CDATA[TYPO3 Extensions]]></category>
		<category><![CDATA[RSS-Feed import]]></category>
		<category><![CDATA[tw_rssfeeds]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[XING Darstellung]]></category>
		<category><![CDATA[XING Import]]></category>

		<guid isPermaLink="false">http://blog.marit.ag/?p=805</guid>
		<description><![CDATA[Heutzutage sind junge und aktive Unternehmen im Netz auf den verschiedensten Plattformen verstreut: Twitter, Facebook, Xing, Blogs, Youtube&#8230; Um den Kunden und der Presse ein umfassendes Bild seiner selbst im Netz darzustellen reicht es daher nicht mehr, nur eigene, statische Inhalte anzuzeigen. Glücklicherweise bieten aber viele Portale die Möglichkeit, neue Inhalte als RSS Feed zu [...]]]></description>
			<content:encoded><![CDATA[<p>Heutzutage sind junge und aktive Unternehmen im Netz auf den verschiedensten Plattformen verstreut: Twitter, Facebook, Xing, Blogs, Youtube&#8230;</p>
<p><span id="more-805"></span></p>
<p>Um den Kunden und der Presse ein umfassendes Bild seiner selbst im Netz darzustellen reicht es daher nicht mehr, nur eigene, statische Inhalte anzuzeigen. Glücklicherweise bieten aber viele Portale die Möglichkeit, neue Inhalte als RSS Feed zu importieren und dann auf der eigenen Webseite wieder darzustellen.</p>
<p>In TYPO3 gibt es mehrere Extensions, die RSS Feeds importieren und auf der eigenen Webseite darstellen können. Die am häufigsten verwendete Extension zur RSS-Feed Darstellung in TYPO3 ist <a href="http://typo3.org/extensions/repository/view/tw_rssfeeds/current/">tw_rssfeeds</a>.</p>
<h2>tw_rssfeeds installieren</h2>
<p>Die Installation von tw_rssfeeds ist denkbar einfach:<br />
<a href="http://blog.marit.ag/wp-content/uploads/tw_rssfeeds_installieren.png" rel="lightbox[805]"><img class="alignright size-medium wp-image-808" title="tw_rssfeeds_installieren" src="http://blog.marit.ag/wp-content/uploads/tw_rssfeeds_installieren-300x144.png" alt="" width="300" height="144" /></a></p>
<p>Dann die Extension installieren und noch im Template der Hauptseite das Extensiontemplate einbinden.</p>
<p>Nun das Plugin konfigurieren:<br />
<a href="http://blog.marit.ag/wp-content/uploads/XING-in-TYPO3.png" rel="lightbox[805]"><img class="alignright size-medium wp-image-810" title="XING-in-TYPO3" src="http://blog.marit.ag/wp-content/uploads/XING-in-TYPO3-300x284.png" alt="" width="300" height="284" /></a><br />
Leider kommt das Plugin mit nicht ganz geeigneten Voreinstellungen, weswegen man unbedingt das Feld &#8220;Count of displaying items&#8221; ausfüllen sollte, sonst werden 0 Items, also keine angezeigt.</p>
<p>Die RSS-Feed Adresse bekommt man direkt von Xing. In der Hauptansicht der Gruppe kann sich auf der rechten Seite ein Button RSS-Feed befinden. Dieser ist nur vorhanden, wenn der Administrator der Gruppe diese öffentlich und suchmaschinendurchsuchbar geschaltet hat. Der einzelne Forum-Artikel ist ebenfalls nur dann sichtbar, wenn der jeweilige Benutzer die RSS Funktion in seinem Profil nicht ausgeschaltet hat.</p>
<p>Siehe dazu auch <a href="https://www.xing.com/help/hilfe-und-faq-2/die-funktionen-von-xing-53/gruppen-58/allgemeine-fragen-zu-gruppen-367/welche-artikel-werden-in-einem-rss-feed-offentlich-gemacht-216">Welche Artikel werden in einem RSS-Feed öffentlich gemacht?</a> in der XING-Hilfe.</p>
<p>Das standardmässig mitgelieferte CSS finde ich persönlich etwas nervig, denn hier wurden Farben hardkodiert. Außerdem steht viel auskommentierter CSS Code in dem _CSS_DEFAULT_STYLE, der die CSS Datei unötig vergrößert, ohne auch nur interpretiert worden zu sein. Mir reicht eigentlich ein simpler Untenabstand:</p>
<pre class="brush: plain;">
plugin.tx_twrssfeeds_pi1._CSS_DEFAULT_STYLE (
	.twrss_bodytext {padding-bottom: 5px;}
)
</pre>
<p>Leider wird die HTML Ausgabe der Extension festverdrahtet im Code der Extension erzeugt und ist daher nicht konfigurierbar. Trotzdem ein schneller Weg, XING Nachrichten auf der eigenen Webseite zu integrieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marit.ag/2010/05/28/xing-in-typo3-importieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extbase / Fluid blog_example Generierung eines Archive Menüs (AMENU)</title>
		<link>http://blog.marit.ag/2010/05/26/extbase-fluid-blog_example_amen/</link>
		<comments>http://blog.marit.ag/2010/05/26/extbase-fluid-blog_example_amen/#comments</comments>
		<pubDate>Wed, 26 May 2010 13:47:49 +0000</pubDate>
		<dc:creator>Lina</dc:creator>
				<category><![CDATA[TYPO3 Technik]]></category>
		<category><![CDATA[amenu]]></category>
		<category><![CDATA[blog_example]]></category>
		<category><![CDATA[extbase]]></category>
		<category><![CDATA[extbase action]]></category>
		<category><![CDATA[fluid]]></category>
		<category><![CDATA[fluid template]]></category>

		<guid isPermaLink="false">http://blog.marit.ag/?p=787</guid>
		<description><![CDATA[Hier ein Beispiel, wie man dem Blog_Example ein Amenu hinzufügen kann: Zunächst in Classes/Domain/Repository/PostRepository.php eine neue SelectionsMethode hinzufügen: /** * Finds most recent posts by the specified blog * * @return array of years containing array of months */ public function findAllDates () { $query = $this-&#62;createQuery(); $res = $query -&#62;setOrderings(array('date' =&#62; Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING)) -&#62;execute(); $yearArray [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.marit.ag/wp-content/uploads/aMenuBlogExample.png" rel="lightbox[787]"><img class="alignright size-full wp-image-796" title="aMenuBlogExample" src="http://blog.marit.ag/wp-content/uploads/aMenuBlogExample.png" alt="" width="175" height="156" /></a><br />
Hier ein Beispiel, wie man dem Blog_Example ein Amenu hinzufügen kann:<br />
Zunächst in Classes/Domain/Repository/PostRepository.php eine neue SelectionsMethode hinzufügen:<br />
<span id="more-787"></span></p>
<pre class="brush: php;">
/**
 * Finds most recent posts by the specified blog
 *
 * @return array of years containing array of months
 */
public function findAllDates () {
  $query = $this-&gt;createQuery();
	$res = $query
		-&gt;setOrderings(array('date' =&gt; Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING))
		-&gt;execute();
	$yearArray = array();
	foreach($res as $row) {
		$date = $row-&gt;getDate();
		$year = $date-&gt;format('Y');
		$month = $date-&gt;format('m');
		$day = $date-&gt;format('d');
		if(!isset($yearArray[$year]))
			$yearArray[$year] = array('count' =&gt; 0);
		if(!isset($yearArray[$year]['months'][$month]))
			$yearArray[$year]['months'][$month] = array('count' =&gt; 0);
		if(!isset($yearArray[$year]['months'][$month]['days'][$day]))
		  $yearArray[$year]['months'][$month]['days'][$day] = array('count' =&gt; 0);
		$yearArray[$year]['count']++;
		$yearArray[$year]['months'][$month]['count']++;
		$yearArray[$year]['months'][$month]['days'][$day]['count']++;
	  	$yearArray[$year]['value'] = intval($year);
		$yearArray[$year]['datetime'] = $date;
		$yearArray[$year]['months'][$month]['value'] = intval($month);
		$yearArray[$year]['months'][$month]['datetime'] = $date;
		$yearArray[$year]['months'][$month]['days'][$day]['value'] = intval($day);
		$yearArray[$year]['months'][$month]['days'][$day]['datetime'] = $date;
	}
	return $yearArray;
}
</pre>
<p>Ergebniss ist ein Array, welches alle vorhandenen Jahre und die Anzahl der Posts darin enthält darin ein Array, dass alle vorhandenen Monate enthält, darin alle vorhandene Tage.</p>
<p>Dann im PostController die Action hinzufügen: Classes/Controller/PostController.php</p>
<pre class="brush: php;">
/**
 * Displays an archive Menu a new post
 *
 * @return string
 */
public function generateArchiveMenuAction() {
  $this-&gt;view-&gt;assign('years', $this-&gt;postRepository-&gt;findAllDates());
}
</pre>
<p>und diese natürlich in der ext_localconf.php zur Liste der erlaubten Actions hinzufügen. Dann ein zugehöriges Template erstellen:<br />
Resources/Private/Templates/Post/generateArchiveMenu.html</p>
<pre class="brush: xml;">
&lt;f:if condition=&quot;{years}&quot;&gt;
  &lt;f:then&gt;
    &lt;ul&gt;
      &lt;f:for each=&quot;{years}&quot; as=&quot;year&quot;&gt;
        &lt;f:for each=&quot;{year.months}&quot; as=&quot;month&quot;&gt;
          &lt;li&gt;
              &lt;f:link.action action=&quot;list&quot; controller=&quot;Post&quot; pageUid=&quot;11&quot;  arguments=&quot;{year: year.value, month : month.value}&quot;&gt;
                &lt;f:format.date format=&quot;F Y&quot;&gt;{month.datetime}&lt;/f:format.date&gt;
              &lt;/f:link.action&gt; ({month.count})
          &lt;/li&gt;
        &lt;/f:for&gt;
      &lt;/f:for&gt;
    &lt;/ul&gt;
  &lt;/f:then&gt;
&lt;/f:if&gt;
</pre>
<p>Lässt man die innere for-Schleife und die Ausgabe des Monats weg, hat man eine Ausgabe nach Jahren; fügt man eine weitere for-Schleife hinzu, hat man eine Aufschlüsselung nach Monaten.</p>
<p>In einem nächsten Schritt muss man nun für eine Listenansicht mit Respektierung des Datums sorgen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marit.ag/2010/05/26/extbase-fluid-blog_example_amen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Die besten Wireframe-Tools im Vergleich</title>
		<link>http://blog.marit.ag/2010/05/10/wireframe-vergleich/</link>
		<comments>http://blog.marit.ag/2010/05/10/wireframe-vergleich/#comments</comments>
		<pubDate>Mon, 10 May 2010 13:43:14 +0000</pubDate>
		<dc:creator>Lasse</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Mockup]]></category>
		<category><![CDATA[Wireframe]]></category>

		<guid isPermaLink="false">http://blog.marit.ag/?p=744</guid>
		<description><![CDATA[Wireframes (Mockups) sind schematische Darstellungen, die zur Planung und Veranschaulichung von Websites und Bedienungsoberflächen dienen. In der letzten Zeit wurden viele neue Wireframe-Tools entwickelt und veröffentlicht. Deswegen gehen viele sehr gute Tools schnell in der Masse unter. Um dies zu verhindern habe ich einige getestet und meine daraus ermittelten Favoriten verglichen. Da die von mir [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Arial,sans-serif;">Wireframes (Mockups) sind schematische Darstellungen, die zur Planung und Veranschaulichung von Websites und Bedienungsoberflächen dienen.</span></p>
<p><span id="more-744"></span></p>
<p><span style="font-family: Arial,sans-serif;">In der letzten Zeit wurden viele neue Wireframe-Tools entwickelt und veröffentlicht. Deswegen gehen viele sehr gute Tools schnell in der Masse unter. Um dies zu verhindern habe ich einige getestet und meine daraus ermittelten Favoriten verglichen.</span></p>
<p><span style="font-family: Arial,sans-serif;">Da die von mir verglichenen Wireframe-Tools immer noch weiter entwickelt werden, könnte es schon Morgen weitere Features geben die ich in diesem Vergleich nicht beachtet habe.</span></p>
<p><a href="http://blog.marit.ag/wp-content/uploads/wireframes4.gif" rel="lightbox[744]"><img class="alignnone size-full wp-image-783" title="wireframes" src="http://blog.marit.ag/wp-content/uploads/wireframes4.gif" alt="Wireframe Tabelle" width="600" height="528" /></a></p>
<p>Links:</p>
<p><a href="http://www.mockflow.com">www.mockflow.com</a></p>
<p><a href="http://www.hotgloo.com">www.hotgloo.com</a></p>
<p><a href="http://www.gomockingbird.com">www.gomockingbird.com</a></p>
<p><a href="http://www.axure.com/">www.axure.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marit.ag/2010/05/10/wireframe-vergleich/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Im RTE Link-Popup CSS-Klassen für DAM-links ermöglichen</title>
		<link>http://blog.marit.ag/2010/05/10/rte-link-class-dam/</link>
		<comments>http://blog.marit.ag/2010/05/10/rte-link-class-dam/#comments</comments>
		<pubDate>Mon, 10 May 2010 12:59:37 +0000</pubDate>
		<dc:creator>Lina</dc:creator>
				<category><![CDATA[TYPO3 Extensions]]></category>
		<category><![CDATA[DAM]]></category>
		<category><![CDATA[Digital Asset Management]]></category>
		<category><![CDATA[htmlArea RTE integration]]></category>
		<category><![CDATA[RTE]]></category>
		<category><![CDATA[RTE Verlinkung]]></category>
		<category><![CDATA[RTE-Linkpopup]]></category>

		<guid isPermaLink="false">http://blog.marit.ag/?p=756</guid>
		<description><![CDATA[Verwendet man TYPO3 zusammen mit dem der Extension Digital Asset Management (DAM), so hat man im Installtoolfür den Umgang mit Links zu Dateien zwei Optionen: Verwendung von DAM, ohne Beeinflussung der RTE Verlinkung Setzt man im Installtool bei der Dam-Extension keinen Hacken bei &#8220;htmlArea RTE integration&#8221;, So wird das Link-Popup des RTE nicht beeinflusst. Links [...]]]></description>
			<content:encoded><![CDATA[<p>Verwendet man TYPO3 zusammen mit dem der Extension Digital Asset Management (DAM), so hat man im Installtoolfür den Umgang mit Links zu Dateien zwei Optionen:</p>
<p><span id="more-756"></span></p>
<h3>Verwendung von DAM, ohne Beeinflussung der RTE Verlinkung</h3>
<p>Setzt man im Installtool bei der Dam-Extension keinen Hacken bei &#8220;htmlArea RTE integration&#8221;, So wird das Link-Popup des RTE nicht beeinflusst. Links auf Dateien werden weiterhin direkt über das Dateisystem abgehandelt, verschiebt man eine Datei, die vom RTE aus verlinkt wurd, so geht der Link verloren</p>
<h3>Volle Integration vonb DAM in den RTE</h3>
<p>Hat man dagegen den Hacken bei  &#8220;htmlArea RTE integration&#8221; gesetzt, so wird das vorherige &#8220;Datei&#8221; Modul im RTE-Linkpopup versteckt und stattdesen erscheint ein Bereich &#8220;Media&#8221;. Sztandartmässig sind hier jedoch keine CSS-Klassen für den Link auszuwählen. So kann man hier dennoch Klassen auswählbar machen:</p>
<p>SeitenTSConfig des RTE</p>
<pre>
RTE{
  classesAnchor {
    # configure standart "download" class to function with DAM
    download.type = media
    # Define your own CSS class to work with Dam in the RTE
    lightbox{
        class = lightbox
        type = media
      }
  }
  default {
    #copy to default
    classesAnchor := addToList(lightbox)
    classesLinks  := addToList(lightbox)
  }
  # alow new class when processing
  proc.allowedClasses := addToList(flashcatalog)
}
</pre>
<p>Ausgabe:<br />
<a href="http://blog.marit.ag/wp-content/uploads/damRteClassen.png" rel="lightbox[756]"><img src="http://blog.marit.ag/wp-content/uploads/damRteClassen.png" alt="" title="Dam RTE Klassen" width="534" height="350" class="aligncenter size-full wp-image-761" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marit.ag/2010/05/10/rte-link-class-dam/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Teaserboxen mit Verlauf ohne Bilder (CSS3 linear-gradient)</title>
		<link>http://blog.marit.ag/2010/05/04/teaserboxen-mit-verlauf-ohne-bilder-css3-linear-gradient/</link>
		<comments>http://blog.marit.ag/2010/05/04/teaserboxen-mit-verlauf-ohne-bilder-css3-linear-gradient/#comments</comments>
		<pubDate>Tue, 04 May 2010 06:30:46 +0000</pubDate>
		<dc:creator>Sven</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[TYPO3 Technik]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[linear-gradient]]></category>

		<guid isPermaLink="false">http://blog.marit.ag/?p=688</guid>
		<description><![CDATA[Wie man in Zukunft Hintergrundverläufe mit CSS erstellt, möchte ich heute vorstellen. Da die Browserunterstützung für die Verläufe noch nicht sehr fortgeschritten ist, ist es eher ein Blick in die Zukunft, es sei denn, man kann auf eine browserweite optische Gleichheit verzichten oder man macht ein Workaround mit Bildern. Der aktuelle Stand der CSS3-Eigenschaft &#8220;linear-gradient&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Wie man in Zukunft Hintergrundverläufe mit CSS erstellt, möchte ich heute vorstellen.</strong></p>
<p>Da die Browserunterstützung für die Verläufe noch nicht sehr fortgeschritten ist, ist es eher ein Blick in die Zukunft, es sei denn, man kann auf eine browserweite optische Gleichheit verzichten oder man macht ein Workaround mit Bildern. Der aktuelle Stand der CSS3-Eigenschaft &#8220;linear-gradient&#8221; ist <a title="CSS3 linear-gradient Spec" href="http://dev.w3.org/csswg/css3-images/#linear-gradients">hier nachzulesen</a>. Die Vorreiter in der Entwicklung sind &#8211; wie gewohnt &#8211; Webkit (Safari ab 4.0, Chrome 4) und Gecko (Mozilla Firefox ab 3.6). Opera unterstützt die Eigenschaft bisher nicht. Die Internet Explorer kann zwar seit IE 5.5 über die filter-Eigenschaft bedient werden, aber das ist weder performant noch zielführend &#8211; da nur ein einfacher Verlauf erzeugt werden kann.</p>
<p>In der aktuellen Ausgabe des <a title="TYPO3 Magazin" href="http://ty-ma.de">TYPO3 Onlinemagazins TY-MA</a> habe ich beschrieben, wie man solche Teaserboxen in TYPO3 4.3  über die Inhaltsrahmen (<em>section_frames</em>) der Contentelemente erstellt.</p>
<p><span id="more-688"></span></p>
<p>Dabei werden für die Teaserboxen CSS-Klassen vergeben. Über CSS-Background-Images für die Überschrift und für den Inhaltsbereich wird dann der DIV-Block optisch zur Teaserbox. Da die Teaser-Boxen ein feste Breite haben, kann dabei 1 Bild für den Teaser-Top-Bereich und 1 Bild für den Teaser-Bottom-Bereich verwendet werden. So bleibt die Teaserbox in der Höhe flexibel.</p>
<p>Allerding werden wie schon erwähnt 2 Bilder, in unserem Fall also rund 2Kb Bilddaten geladen. Zudem sind das 2 HTTP-Request, die man in Zukunft mit dem Einsatz von CSS-Gradients einsparen kann &#8211; somit wird die Website beim Aufruf noch schneller. Als Vergleich folgende Übersicht der verschiedenen Varianten, 1x das Original mit 2 Bilddateien, 1x als CSS3 Version mit nur einem kleinen Bild und 1x ohne jegliche Bilder.</p>
<p><strong><img class="alignnone" title="Übersicht CSS3  linear-gradient Teaserbox" src="/wp-content/uploads/overview.png" alt="overview css3 linear-gradient" width="640" height="509" /></strong></p>
<p>Man kann sehen, dass der optische Unterschied zwischen der reinen CSS Umsetzung nur sehr gering ist. Dreieckige Objekte lassen sich bisher nur schwerlich mit CSS implementieren.</p>
<p><strong>Wir nehmen folgenden HTML-Schnippet als Basis:</strong></p>
<pre class="brush: xml;">
&lt;div class=&quot;css-block&quot;&gt;
 &lt;h3&gt;Block teaser blue&lt;/h3&gt;
 &lt;div class=&quot;css-block-inner&quot;&gt;
  &lt;p&gt;
  Cras tortor turpis, vulputate non, accumsan a, pretium in, magna.
  Cras turpis turpis, pretium pulvinar, pretium vel, nonummy eu, leo.
  Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus.
  Curabitur augue nibh, iaculis eget, suscipit ut, sodales in, lectus.
  &lt;/p&gt;
 &lt;/div&gt;
&lt;/div&gt;
</pre>
<p><strong>Das CSS dazu ist folgendes:</strong></p>
<pre class="brush: css;">
.css-block {
 /*
 W3C Spec
 background: linear-gradient(top, yellow, blue 20%, #0f0);
 */
 background: -moz-linear-gradient(top, #fff 0, #fff 67%, #d2d2d2 100%);
 background: -webkit-gradient(linear,
  left top, left bottom,
  color-stop(0, #fff),
  color-stop(0.67, #fff),
  color-stop(1, #d2d2d2));
 padding: 1px;

 border-radius: 5px;
 -moz-border-radius: 5px;
 -webkit-border-radius: 5px;

 box-shadow: 0 15px 20px -10px #e1e1e1;
 -moz-box-shadow: 0 15px 20px -10px #e1e1e1;
 -webkit-box-shadow: 0 15px 20px -10px #e1e1e1;
 }

.css-block-inner {
 background-color: #ebebeb; /*fallback color*/
 background: url(img/arrow.png) no-repeat, -moz-linear-gradient(top,
  #8598aa 0,
  #fff 17%,
  #fff 83%,
  #ebebeb 99%,
  #fff 100%);
 background: url(img/arrow.png) no-repeat, -webkit-gradient(linear,
  left top, left bottom,
  color-stop(0, #8598aa),
  color-stop(0.17, #fff),
  color-stop(0.83, #fff),
  color-stop(0.99, #ebebeb),
  color-stop(1, #fff));
 padding: 10px;
 border-radius: 5px;
 -moz-border-radius: 5px;
 -webkit-border-radius: 5px;
}

.css-block h3 {
 background-color: #2b4c6b;
 background: -moz-linear-gradient(top,
  #6b8298 0,
  #6b8298 50%,
  #2b4c6b 50%,
  #2b4c6b 100%);
 background: -webkit-gradient(linear,
  left top, left bottom,
  color-stop(0, #6b8298),
  color-stop(0.5, #6b8298),
  color-stop(0.5, #2b4c6b),
  color-stop(1, #2b4c6b));
 padding: 1px;
 border-radius: 5px;
 -moz-border-radius: 5px;
 -webkit-border-radius: 5px;
 border: 1px solid #2b4c6b;
 color: #fff;
 padding: 7px 10px;
 margin: 0;
 }
</pre>
<p>Der äußere DIV-Block &#8220;.css-block&#8221; erhält einen Verlauf von <em>#fff</em> (weiß) zu <em>#d2d2d2</em> (helles grau). Dabei sind für die Eigenschaft &#8220;<em>background</em>&#8221; folgende  Werte zugewiesen:</p>
<pre class="brush: css;">
background: -moz-linear-gradient(top, #fff 0%, #fff 67%, #d2d2d2 100%);
</pre>
<p><em>-moz-linear-gradient()</em> ist die Wertzuweisung für Mozilla (Firefox), die kommagetrennten Werte in der Klammer bedeuten dann folgendes</p>
<ul>
<li><em>top</em> = Verlauf beginnend oben</li>
<li><em>#fff  0</em> = start bei 0% mit der Farbe <em>#fff </em>(weiß), wobei man den Initialwert (0%) auch weglassen kann</li>
<li><em>#fff  67%</em> = bis 67% mit der Farbe <em>#fff</em> (weiß) weitermachen</li>
<li><em>#d2d2d2 100%</em> = Verlaufsende bei 100% mit der Farbe <em>#d2d2d2</em> (helles grau), wobei man den Endwert (100%) auch weglassen kann</li>
</ul>
<p>Die Anweisung für Webkits ist leicht unterschiedlich im Syntax:</p>
<pre class="brush: css;">
background: -webkit-gradient(linear,
  left top, left bottom,
  color-stop(0, #fff),
  color-stop(0.67, #fff),
  color-stop(1, #d2d2d2));
</pre>
<p>Der innere DIV-Block &#8220;.css-block-inner&#8221; mit einem zusätzlichen Bild erhält für unser Beispiel nun diese Werte für den Hintergrund:</p>
<pre class="brush: css;">
background-color: #ebebeb; /*fallback color*/
background: url(img/arrow.png) no-repeat, -moz-linear-gradient(top,
 #8598aa 0,
 #fff 17%,
 #fff 83%,
 #ebebeb 99%,
 #fff 100%);
</pre>
<p>Wir weisen eine &#8220;Fallback&#8221;-Farbe zu (<em>background-color: #ebebeb</em>) &#8211; für Browser, die Verläufe noch nicht darstellen können. Dann weisen wir ein Hintergrundbild zu &#8211; <em>url(img/arrow.png) no-repeat</em> &#8211; das ist der kleine Pfeil, der von der Überschrift in den Haupttext &#8220;ragt&#8221;. Hinter dem Komma wird der Verlauftshintergrund definiert. Es fängt bei 0 mit der Farbe <em>#8598aa</em> (helles blau) an, geht bis 17% ins <em>#fff</em> (weiß) über, weiter mit <em>#fff</em> bis 83% der Höhe, übergehend zu <em>#ebebeb</em> (helles grau) bis 99% und wieder zu <em>#fff</em> bis 100%. Das ergibt am unterem Rand ein leichtes &#8220;Blitzen&#8221; und wirkt ein wenig 3-Dimensional.</p>
<p><strong>Für die Überschrift h3 wird ebenfalls ein Verlauf benötig, allerdings mit einer &#8220;harten Kante&#8221;:</strong></p>
<pre class="brush: css;">
background: -moz-linear-gradient(top,
  #6b8298 0,
  #6b8298 50%,
  #2b4c6b 50%,
  #2b4c6b 100%);
</pre>
<p>Die Farbe <em>#6b8298</em> (mittelblau) geht von 0-50%. Das dunklere blau <em>#2b4c6b</em> geht direkt weiter von 50-100%. Dadurch entsteht beim Verlauf die &#8220;harte Kante&#8221;.</p>
<p>Noch ein wenig &#8220;box-shadow&#8221; und &#8220;border-radius&#8221; und schon ist unsere Teaserbox mit CSS3-Verlauf fertig.</p>
<p><strong>Fazit:</strong></p>
<p>Die Möglichkeiten mit CSS3 sind nahezu unbegrenzt für die Umsetzung moderner Layouts, leider müssen wir mit der Implementierung noch eine Weile warten, bis alle Browser die Eigenschaften unterstützen. Dann lassen sich die netten Effekte aus Photoshop wie Schatten, runde Ecken oder Verlauf ausschließlich mit CSS umsetzen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marit.ag/2010/05/04/teaserboxen-mit-verlauf-ohne-bilder-css3-linear-gradient/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
