<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://de.contaowiki.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://de.contaowiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zero</id>
		<title>Contao Community Documentation - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://de.contaowiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zero"/>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Spezial:Beitr%C3%A4ge/Zero"/>
		<updated>2026-04-30T07:54:17Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>https://de.contaowiki.org/Accordions_-_Direktes_anspringen_und_aufklappen</id>
		<title>Accordions - Direktes anspringen und aufklappen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Accordions_-_Direktes_anspringen_und_aufklappen"/>
				<updated>2013-07-29T21:44:50Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev_Snippets]]&lt;br /&gt;
== Lösung für j_accordion (jQuery) ==&lt;br /&gt;
&lt;br /&gt;
Um Accordions direkt zu verlinken reicht es eigentlich die ID des Headers mit anzugeben:&lt;br /&gt;
&lt;br /&gt;
z.B. seite.html#ui-accordion-1-header-1&lt;br /&gt;
&lt;br /&gt;
ui-accordion-1-header-1 ist dabei die des anzuspringenden Headers&lt;br /&gt;
&lt;br /&gt;
Wenn es nicht das erste Accordion ist, so ist dieses jetzt noch geschlossen. Wenn man nun noch eine Kopie des Templates j_accordion anlegt und folgenden Code nutzt, wird das Accordion auch aufgeklappt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=j&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;&amp;lt;?php echo TL_ASSETS_URL; ?&amp;gt;assets/jquery/ui/&amp;lt;?php echo JQUERY_UI; ?&amp;gt;/jquery-ui.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  (function($) {&lt;br /&gt;
    $(document).ready(function() {     &lt;br /&gt;
      $(document).accordion({&lt;br /&gt;
        // Put custom options here&lt;br /&gt;
        heightStyle: 'content',&lt;br /&gt;
        header: 'div.toggler',&lt;br /&gt;
        collapsible: true&lt;br /&gt;
      });&lt;br /&gt;
      var activate = function(tog) {&lt;br /&gt;
        var tgs = $('div.toggler');&lt;br /&gt;
        tgs.removeClass('active');&lt;br /&gt;
        tog.addClass('active');&lt;br /&gt;
        tgs.next('div.accordion').attr('aria-hidden', 'true');&lt;br /&gt;
        tog.next('div.accordion').attr('aria-hidden', 'false');&lt;br /&gt;
      };&lt;br /&gt;
      $('div.toggler').focus(function(e) {&lt;br /&gt;
        $('div.toggler').attr('tabindex', 0);&lt;br /&gt;
        $(this).attr('tabindex', -1);&lt;br /&gt;
      }).blur(function() {&lt;br /&gt;
        $(this).attr('tabindex', 0);&lt;br /&gt;
      }).click(function() {&lt;br /&gt;
        activate($(this));&lt;br /&gt;
      }).keypress(function(event) {&lt;br /&gt;
        if (event.keyCode == 13) activate($(this));&lt;br /&gt;
      });&lt;br /&gt;
      &lt;br /&gt;
      // direkt anspringen über Anker(ID)&lt;br /&gt;
      $('div.toggler').each(function(el, index){&lt;br /&gt;
        if (window.location.href.split('#')[1] == $(index).attr('id') &amp;amp;&amp;amp; el &amp;gt; 0)&lt;br /&gt;
        {&lt;br /&gt;
           index.click(); &lt;br /&gt;
        }&lt;br /&gt;
      });      &lt;br /&gt;
    });&lt;br /&gt;
  })(jQuery);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Tags_oxygen.css</id>
		<title>Tags oxygen.css</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Tags_oxygen.css"/>
				<updated>2013-07-17T21:17:31Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tags]]&lt;br /&gt;
[[Category:Dev Snippets]]&lt;br /&gt;
[[Category:CSS_HOWTOS]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Style sheet tags&lt;br /&gt;
 */&lt;br /&gt;
ul.cloud&lt;br /&gt;
{&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0.5em 0em;&lt;br /&gt;
	text-align:justify;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
	clear:both!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li&lt;br /&gt;
{&lt;br /&gt;
	width:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0px 4px;&lt;br /&gt;
	text-decoration:none;&lt;br /&gt;
	color:#0053b7;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a span&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
	background:transparent;&lt;br /&gt;
	border:none!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a em&lt;br /&gt;
{&lt;br /&gt;
	display:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size1 a&lt;br /&gt;
{&lt;br /&gt;
	font-size:100%;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size2 a&lt;br /&gt;
{&lt;br /&gt;
	font-size:100%;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size3 a&lt;br /&gt;
{&lt;br /&gt;
	font-size:120%;&lt;br /&gt;
	line-height:1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size4 a&lt;br /&gt;
{&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	font-size:120%;&lt;br /&gt;
	line-height:1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size1 a&lt;br /&gt;
{&lt;br /&gt;
	color:#005fd3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size2 a&lt;br /&gt;
{&lt;br /&gt;
	color:#0053b7;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size3 a&lt;br /&gt;
{&lt;br /&gt;
	color:#00459b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size4 a&lt;br /&gt;
{&lt;br /&gt;
	color:#003679;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.isCurrentTag a span, ul.cloud li a:hover&lt;br /&gt;
{&lt;br /&gt;
	background-color:#005fd3;&lt;br /&gt;
	color:#fff!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a:hover span&lt;br /&gt;
{&lt;br /&gt;
	color:#fff!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .toggle-button&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background-image:url(&amp;quot;tl_files/tags/del_sprite_arrows.gif&amp;quot;);&lt;br /&gt;
	background-repeat:no-repeat;&lt;br /&gt;
	background-position:3px -318px;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .yes&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background-image:url(&amp;quot;tl_files/tags/del_sprite_arrows.gif&amp;quot;);&lt;br /&gt;
	background-repeat:no-repeat;&lt;br /&gt;
	background-position:3px -359px;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .off&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background:none;&lt;br /&gt;
	cursor:default;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud h3&lt;br /&gt;
{&lt;br /&gt;
	background-color:#e9e9e9;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	font-size:90%;&lt;br /&gt;
	color:#666666;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related&lt;br /&gt;
{&lt;br /&gt;
	width:100%;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0px;&lt;br /&gt;
	list-style-type:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li&lt;br /&gt;
{&lt;br /&gt;
	width:100%;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0pt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li span.reltext&lt;br /&gt;
{&lt;br /&gt;
	width:48%;&lt;br /&gt;
	float:left;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0% 0.5%;&lt;br /&gt;
	text-align:left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li span.relcount&lt;br /&gt;
{&lt;br /&gt;
	width:49%;&lt;br /&gt;
	float:left;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0% 0.5%;&lt;br /&gt;
	text-align:right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li a&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
	text-decoration:none;&lt;br /&gt;
	color:#0053b7;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li a:hover, ul.related li a:hover span&lt;br /&gt;
{&lt;br /&gt;
	color:#fff;&lt;br /&gt;
	background-color: #0053b7;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.tag-chain&lt;br /&gt;
{&lt;br /&gt;
        text-align:right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item&lt;br /&gt;
{&lt;br /&gt;
        display:inline;&lt;br /&gt;
        margin:0px;&lt;br /&gt;
        padding:0px;&lt;br /&gt;
        list-style-type:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item a&lt;br /&gt;
{&lt;br /&gt;
        padding:0.25em;&lt;br /&gt;
        background-color:#eee;&lt;br /&gt;
        text-decoration:none;&lt;br /&gt;
        color:#666;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item a:hover&lt;br /&gt;
{&lt;br /&gt;
        background-color:#666;&lt;br /&gt;
        text-decoration:none;&lt;br /&gt;
        color:#fff;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Tags_orange.css</id>
		<title>Tags orange.css</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Tags_orange.css"/>
				<updated>2013-07-17T21:17:08Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tags]]&lt;br /&gt;
[[Category:Dev Snippets]]&lt;br /&gt;
[[Category:CSS_HOWTOS]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Style sheet tags_orange&lt;br /&gt;
 */&lt;br /&gt;
ul.cloud&lt;br /&gt;
{&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0.5em 0em;&lt;br /&gt;
	text-align:justify;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
	clear:both!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li&lt;br /&gt;
{&lt;br /&gt;
	width:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0px 4px;&lt;br /&gt;
	text-decoration:none;&lt;br /&gt;
	color:#f39a37;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a span&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
	background:transparent;&lt;br /&gt;
	border:none!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a em&lt;br /&gt;
{&lt;br /&gt;
	display:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size1&lt;br /&gt;
{&lt;br /&gt;
	font-size:100%;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size2&lt;br /&gt;
{&lt;br /&gt;
	font-size:100%;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size3&lt;br /&gt;
{&lt;br /&gt;
	font-size:120%;&lt;br /&gt;
	line-height:1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size4&lt;br /&gt;
{&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	font-size:120%;&lt;br /&gt;
	line-height:1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size1 a&lt;br /&gt;
{&lt;br /&gt;
	color:#f39a37;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size2 a&lt;br /&gt;
{&lt;br /&gt;
	color:#CC812F;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size3 a&lt;br /&gt;
{&lt;br /&gt;
	color:#B27029;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size4 a&lt;br /&gt;
{&lt;br /&gt;
	color:#996023;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.isCurrentTag a span, ul.cloud li a:hover&lt;br /&gt;
{&lt;br /&gt;
	background-color:#f39a37;&lt;br /&gt;
	color:#fff!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a:hover span&lt;br /&gt;
{&lt;br /&gt;
	color:#fff!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .toggle-button&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background-image:url(&amp;quot;tl_files/tags/del_sprite_arrows.gif&amp;quot;);&lt;br /&gt;
	background-repeat:no-repeat;&lt;br /&gt;
	background-position:3px -318px;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .yes&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background-image:url(&amp;quot;tl_files/tags/del_sprite_arrows.gif&amp;quot;);&lt;br /&gt;
	background-repeat:no-repeat;&lt;br /&gt;
	background-position:3px -359px;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .off&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background:none;&lt;br /&gt;
	cursor:default;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud h3&lt;br /&gt;
{&lt;br /&gt;
	background-color:#e9e9e9;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	font-size:90%;&lt;br /&gt;
	color:#666666;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related&lt;br /&gt;
{&lt;br /&gt;
	width:100%;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0px;&lt;br /&gt;
	list-style-type:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li&lt;br /&gt;
{&lt;br /&gt;
	width:100%;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0pt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li span.reltext&lt;br /&gt;
{&lt;br /&gt;
	width:48%;&lt;br /&gt;
	float:left;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0% 0.5%;&lt;br /&gt;
	text-align:left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li span.relcount&lt;br /&gt;
{&lt;br /&gt;
	width:49%;&lt;br /&gt;
	float:left;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0% 0.5%;&lt;br /&gt;
	text-align:right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li a&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
	text-decoration:none;&lt;br /&gt;
	color:#f39a37;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li a:hover, ul.related li a:hover span&lt;br /&gt;
{&lt;br /&gt;
	color:#fff;&lt;br /&gt;
	background-color: #f39a37;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.tag-chain&lt;br /&gt;
{&lt;br /&gt;
        text-align:right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item&lt;br /&gt;
{&lt;br /&gt;
        display:inline;&lt;br /&gt;
        margin:0px;&lt;br /&gt;
        padding:0px;&lt;br /&gt;
        list-style-type:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item a&lt;br /&gt;
{&lt;br /&gt;
        padding:0.25em;&lt;br /&gt;
        background-color:#eee;&lt;br /&gt;
        text-decoration:none;&lt;br /&gt;
        color:#666;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item a:hover&lt;br /&gt;
{&lt;br /&gt;
        background-color:#666;&lt;br /&gt;
        text-decoration:none;&lt;br /&gt;
        color:#fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Kategorie:MetaModels</id>
		<title>Kategorie:MetaModels</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Kategorie:MetaModels"/>
				<updated>2013-07-17T21:07:39Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
B = Basics | &lt;br /&gt;
M = MetaModels Backend-Einstellungen | &lt;br /&gt;
T = Tipps &amp;amp; Tricks&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_List_Modul_Filter_Condition_per_GET_%C3%BCbergeben</id>
		<title>Catalog List Modul Filter Condition per GET übergeben</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_List_Modul_Filter_Condition_per_GET_%C3%BCbergeben"/>
				<updated>2013-07-17T20:58:33Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Catalog]]&lt;br /&gt;
[[Category:Dev Snippets]]&lt;br /&gt;
Folgendes Szenario:&lt;br /&gt;
Ein Testkatalog mit verschiedene Kategorien.&lt;br /&gt;
Der Aufruf über das Catalog List Modul unterscheidet sich nur durch die geänderte SQL Syntax&lt;br /&gt;
( ...AND cat= 1... ; ... AND cat = 2..., etc.).&lt;br /&gt;
&lt;br /&gt;
Um nicht für jeden Aufruf ein neues Modul erstellen zu müssen, kann man mit der [http://www.contao.org/erweiterungsliste/view/inputvar.10010009.de.html inputvar] Erweiterung behelfen.&lt;br /&gt;
&lt;br /&gt;
Mit diesem Kniff kann man nun in den Moduleinstellungen bei &amp;quot;Bedingung&amp;quot; des Catalog-Listers folgendes nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
cat='{{get::variableName}}'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{msgWarning|Inputvalidation verwenden}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Ab Version 1.1 besteht als dritter Parameter die Möglichkeit, den Text zu verändern.&lt;br /&gt;
&lt;br /&gt;
Beispiel: {{get::var::strtoupper}}&lt;br /&gt;
&lt;br /&gt;
//Folgende PHP-Funktionen werden unterstützt:&lt;br /&gt;
&lt;br /&gt;
mysql_real_escape_string&lt;br /&gt;
addslashes&lt;br /&gt;
stripslashes&lt;br /&gt;
standardize&lt;br /&gt;
ampersand&lt;br /&gt;
specialchars&lt;br /&gt;
nl2br&lt;br /&gt;
nl2br_pre&lt;br /&gt;
strtolower&lt;br /&gt;
utf8_strtolower&lt;br /&gt;
strtoupper&lt;br /&gt;
utf8_strtoupper&lt;br /&gt;
ucfirst&lt;br /&gt;
lcfirst&lt;br /&gt;
ucwords&lt;br /&gt;
trim&lt;br /&gt;
rtrim&lt;br /&gt;
ltrim&lt;br /&gt;
utf8_romanize&lt;br /&gt;
strlen&lt;br /&gt;
strrev&lt;br /&gt;
Folgende Contao-Funktionen werden unterstützt (String Library):&lt;br /&gt;
&lt;br /&gt;
decodeEntities&lt;br /&gt;
encodeEmail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ausserdem können Zahlen entsprechen der aktuellen Seitensprache formatiert werden mittels&lt;br /&gt;
&lt;br /&gt;
number_format (ohne Dezimalstellen)&lt;br /&gt;
number_format_2 (zwei Dezimalstellen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Z_modulealias</id>
		<title>Z modulealias</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Z_modulealias"/>
				<updated>2013-07-17T20:56:55Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
= Modul Alias =&lt;br /&gt;
&lt;br /&gt;
Unterschiedliche Module pro Seitenbaum in einem Seitenlayout verwenden.&lt;br /&gt;
&lt;br /&gt;
Dieses Modul ist insbesondere bei mehrsprachigen Webseiten sehr hilfreich. Weisen Sie Frontend-Module einem Seitenbaum zu, sodass nur die sprachlich passenden Module angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Nachdem das Modul installiert ist, sehen sie in jedem Frontend-Modul eine neue Einstellung für die &amp;quot;Verknüpften Seiten&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Hier kann man wählen auf welcher Seite das Modul erscheinen soll. In den meisten Fällen ist hier nur die Root-Seiten zu wählen, die Auswahl wird im Baum nach unten vererbt.&lt;br /&gt;
&lt;br /&gt;
So legt man sich dann verschiedene Module für die jeweiligen Seitenbäume an.&lt;br /&gt;
&lt;br /&gt;
Am Beispiel der Suche mit individuellen Formular&lt;br /&gt;
- Search | de --&amp;gt; Seitenbaum de&lt;br /&gt;
- Search | fr --&amp;gt; Seitenbaum fr&lt;br /&gt;
- Search | en --&amp;gt; Seitenbaum en&lt;br /&gt;
&lt;br /&gt;
Nachdem jetzt mehrere &amp;quot;identische&amp;quot; Module für die entsprechenden Root-Seiten angelegt wurden, erstellen man ein Modul vom Typ &amp;quot;Modul Alias&amp;quot; und markieren dort die entsprechenden Module. &lt;br /&gt;
Mit gedrückter STRG (CTRL) - Taste kann man mehrere Einträge selektieren.&lt;br /&gt;
&lt;br /&gt;
Dieses Frontend-Modul nennt man dann z.B. Search. Dieses kann nun im Seitenlayout ausgewählt werden. Passend zur aktuellen Root-Seite wird eines der vorhandenen &amp;quot;individualisierten&amp;quot; Frontend-Module ausgegeben.&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Tags_oxygen.css</id>
		<title>Tags oxygen.css</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Tags_oxygen.css"/>
				<updated>2013-07-17T20:56:14Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tags]]&lt;br /&gt;
[[Category:Dev Snippets]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Style sheet tags&lt;br /&gt;
 */&lt;br /&gt;
ul.cloud&lt;br /&gt;
{&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0.5em 0em;&lt;br /&gt;
	text-align:justify;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
	clear:both!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li&lt;br /&gt;
{&lt;br /&gt;
	width:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0px 4px;&lt;br /&gt;
	text-decoration:none;&lt;br /&gt;
	color:#0053b7;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a span&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
	background:transparent;&lt;br /&gt;
	border:none!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a em&lt;br /&gt;
{&lt;br /&gt;
	display:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size1 a&lt;br /&gt;
{&lt;br /&gt;
	font-size:100%;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size2 a&lt;br /&gt;
{&lt;br /&gt;
	font-size:100%;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size3 a&lt;br /&gt;
{&lt;br /&gt;
	font-size:120%;&lt;br /&gt;
	line-height:1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size4 a&lt;br /&gt;
{&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	font-size:120%;&lt;br /&gt;
	line-height:1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size1 a&lt;br /&gt;
{&lt;br /&gt;
	color:#005fd3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size2 a&lt;br /&gt;
{&lt;br /&gt;
	color:#0053b7;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size3 a&lt;br /&gt;
{&lt;br /&gt;
	color:#00459b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size4 a&lt;br /&gt;
{&lt;br /&gt;
	color:#003679;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.isCurrentTag a span, ul.cloud li a:hover&lt;br /&gt;
{&lt;br /&gt;
	background-color:#005fd3;&lt;br /&gt;
	color:#fff!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a:hover span&lt;br /&gt;
{&lt;br /&gt;
	color:#fff!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .toggle-button&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background-image:url(&amp;quot;tl_files/tags/del_sprite_arrows.gif&amp;quot;);&lt;br /&gt;
	background-repeat:no-repeat;&lt;br /&gt;
	background-position:3px -318px;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .yes&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background-image:url(&amp;quot;tl_files/tags/del_sprite_arrows.gif&amp;quot;);&lt;br /&gt;
	background-repeat:no-repeat;&lt;br /&gt;
	background-position:3px -359px;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .off&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background:none;&lt;br /&gt;
	cursor:default;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud h3&lt;br /&gt;
{&lt;br /&gt;
	background-color:#e9e9e9;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	font-size:90%;&lt;br /&gt;
	color:#666666;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related&lt;br /&gt;
{&lt;br /&gt;
	width:100%;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0px;&lt;br /&gt;
	list-style-type:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li&lt;br /&gt;
{&lt;br /&gt;
	width:100%;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0pt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li span.reltext&lt;br /&gt;
{&lt;br /&gt;
	width:48%;&lt;br /&gt;
	float:left;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0% 0.5%;&lt;br /&gt;
	text-align:left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li span.relcount&lt;br /&gt;
{&lt;br /&gt;
	width:49%;&lt;br /&gt;
	float:left;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0% 0.5%;&lt;br /&gt;
	text-align:right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li a&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
	text-decoration:none;&lt;br /&gt;
	color:#0053b7;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li a:hover, ul.related li a:hover span&lt;br /&gt;
{&lt;br /&gt;
	color:#fff;&lt;br /&gt;
	background-color: #0053b7;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.tag-chain&lt;br /&gt;
{&lt;br /&gt;
        text-align:right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item&lt;br /&gt;
{&lt;br /&gt;
        display:inline;&lt;br /&gt;
        margin:0px;&lt;br /&gt;
        padding:0px;&lt;br /&gt;
        list-style-type:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item a&lt;br /&gt;
{&lt;br /&gt;
        padding:0.25em;&lt;br /&gt;
        background-color:#eee;&lt;br /&gt;
        text-decoration:none;&lt;br /&gt;
        color:#666;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item a:hover&lt;br /&gt;
{&lt;br /&gt;
        background-color:#666;&lt;br /&gt;
        text-decoration:none;&lt;br /&gt;
        color:#fff;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Tags_orange.css</id>
		<title>Tags orange.css</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Tags_orange.css"/>
				<updated>2013-07-17T20:55:30Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tags]]&lt;br /&gt;
[[Category:Dev Snippets]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Style sheet tags_orange&lt;br /&gt;
 */&lt;br /&gt;
ul.cloud&lt;br /&gt;
{&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0.5em 0em;&lt;br /&gt;
	text-align:justify;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
	clear:both!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li&lt;br /&gt;
{&lt;br /&gt;
	width:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0px 4px;&lt;br /&gt;
	text-decoration:none;&lt;br /&gt;
	color:#f39a37;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a span&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
	background:transparent;&lt;br /&gt;
	border:none!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a em&lt;br /&gt;
{&lt;br /&gt;
	display:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size1&lt;br /&gt;
{&lt;br /&gt;
	font-size:100%;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size2&lt;br /&gt;
{&lt;br /&gt;
	font-size:100%;&lt;br /&gt;
	line-height:1.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size3&lt;br /&gt;
{&lt;br /&gt;
	font-size:120%;&lt;br /&gt;
	line-height:1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size4&lt;br /&gt;
{&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	font-size:120%;&lt;br /&gt;
	line-height:1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size1 a&lt;br /&gt;
{&lt;br /&gt;
	color:#f39a37;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size2 a&lt;br /&gt;
{&lt;br /&gt;
	color:#CC812F;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size3 a&lt;br /&gt;
{&lt;br /&gt;
	color:#B27029;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.size4 a&lt;br /&gt;
{&lt;br /&gt;
	color:#996023;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li.isCurrentTag a span, ul.cloud li a:hover&lt;br /&gt;
{&lt;br /&gt;
	background-color:#f39a37;&lt;br /&gt;
	color:#fff!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.cloud li a:hover span&lt;br /&gt;
{&lt;br /&gt;
	color:#fff!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .toggle-button&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background-image:url(&amp;quot;tl_files/tags/del_sprite_arrows.gif&amp;quot;);&lt;br /&gt;
	background-repeat:no-repeat;&lt;br /&gt;
	background-position:3px -318px;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .yes&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background-image:url(&amp;quot;tl_files/tags/del_sprite_arrows.gif&amp;quot;);&lt;br /&gt;
	background-repeat:no-repeat;&lt;br /&gt;
	background-position:3px -359px;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud .off&lt;br /&gt;
{&lt;br /&gt;
	padding-left:20px;&lt;br /&gt;
	background:none;&lt;br /&gt;
	cursor:default;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod_tagcloud h3&lt;br /&gt;
{&lt;br /&gt;
	background-color:#e9e9e9;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	font-size:90%;&lt;br /&gt;
	color:#666666;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related&lt;br /&gt;
{&lt;br /&gt;
	width:100%;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0px;&lt;br /&gt;
	list-style-type:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li&lt;br /&gt;
{&lt;br /&gt;
	width:100%;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0pt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li span.reltext&lt;br /&gt;
{&lt;br /&gt;
	width:48%;&lt;br /&gt;
	float:left;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0% 0.5%;&lt;br /&gt;
	text-align:left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li span.relcount&lt;br /&gt;
{&lt;br /&gt;
	width:49%;&lt;br /&gt;
	float:left;&lt;br /&gt;
	margin:0px;&lt;br /&gt;
	padding:0% 0.5%;&lt;br /&gt;
	text-align:right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li a&lt;br /&gt;
{&lt;br /&gt;
	height:auto;&lt;br /&gt;
	position:static;&lt;br /&gt;
	float:none;&lt;br /&gt;
	display:inline;&lt;br /&gt;
	margin:0;&lt;br /&gt;
	padding:0;&lt;br /&gt;
	text-decoration:none;&lt;br /&gt;
	color:#f39a37;&lt;br /&gt;
	cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.related li a:hover, ul.related li a:hover span&lt;br /&gt;
{&lt;br /&gt;
	color:#fff;&lt;br /&gt;
	background-color: #f39a37;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul.tag-chain&lt;br /&gt;
{&lt;br /&gt;
        text-align:right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item&lt;br /&gt;
{&lt;br /&gt;
        display:inline;&lt;br /&gt;
        margin:0px;&lt;br /&gt;
        padding:0px;&lt;br /&gt;
        list-style-type:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item a&lt;br /&gt;
{&lt;br /&gt;
        padding:0.25em;&lt;br /&gt;
        background-color:#eee;&lt;br /&gt;
        text-decoration:none;&lt;br /&gt;
        color:#666;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.tag-chain-item a:hover&lt;br /&gt;
{&lt;br /&gt;
        background-color:#666;&lt;br /&gt;
        text-decoration:none;&lt;br /&gt;
        color:#fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Node.js</id>
		<title>Node.js</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Node.js"/>
				<updated>2013-07-17T20:54:45Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev Snippets]]&lt;br /&gt;
=Node.js=&lt;br /&gt;
[http://nodejs.org/ Node.js] ist eine JavaScript Engine für die Kommandozeile.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung [[Layout additional sources]] verwendet Node.js um less.js Dateien am Server vor zu kompilieren.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
===Node.js===&lt;br /&gt;
&lt;br /&gt;
Es gibt offizielle nodejs Packete bei debian und ubuntu, diese installieren Node.js jedoch mit einer Executable die '''nodejs''' heißt und nicht '''node'''. Das führt dazu, dass der '''node package manager''' (npm) nicht erkennt, dass Node.js installiert ist. Es gibt aber auch alternative RPM und DEP Pakete aus der Node.js Gemeinde, dass Node.js mit der Executable '''node''' installiert: https://github.com/ry/node/wiki/RPM-and-DEB-packages-for-Node.js&lt;br /&gt;
Außerdem ist das offizielle Paket dazu noch extrem veraltet:&lt;br /&gt;
* Debian package version: 0.2.0&lt;br /&gt;
* current stable release: 0.2.6&lt;br /&gt;
* current testing release: 0.3.7&lt;br /&gt;
(31. Jan 2011)&lt;br /&gt;
&lt;br /&gt;
===node package manager===&lt;br /&gt;
&lt;br /&gt;
Für die Installation des npm wird auf der offiziellen Homepage ein Script bereit gestellt http://npmjs.org/.&lt;br /&gt;
Die npm Entwickler sehen eine Installation als nicht-root User vor, was für einen Client PC durchaus Sinn machen kann, auf einem Server aber nicht unbedingt sinnvoll ist.&lt;br /&gt;
&lt;br /&gt;
Ob der npm-Weg sinnvoller ist oder nicht, sei mal dahin gestellt, wer Node.js auf seinem Server nur in begrenztem Maße nutzen will, der kann npm auch als root installieren und ausführen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sudo sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pakete lassen sich danach mit dem npm Befehl installieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo npm install less&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Formulare_bei_onchange_absenden</id>
		<title>Formulare bei onchange absenden</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Formulare_bei_onchange_absenden"/>
				<updated>2013-07-17T20:52:00Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev Snippets]]&lt;br /&gt;
{{AppliesTo|Version=Alle Versionen}}&lt;br /&gt;
&lt;br /&gt;
Um ein Formular (in diesem Tutorial das Modul Quicknavigation von Contao) innerhalb der Website ohne einen Submit Button abzuschicken, schreibt man innerhalb des [[Seitenlayout|Seitenlayouts]] bei &amp;quot;Eigener JavaScript-Code&amp;quot; einen kleinen Codeschnipsel in das dafür vorgefertige Feld.&lt;br /&gt;
&lt;br /&gt;
jQuery Code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
$(document).ready(function(){ &lt;br /&gt;
&lt;br /&gt;
$('.mod_quicknav').change(function(){&lt;br /&gt;
	$('.mod_quicknav form').attr('action', $(this).val()).submit();&lt;br /&gt;
	return false;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mootools Code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
window.addEvent('domready', function() {&lt;br /&gt;
	&lt;br /&gt;
if ($$('div.mod_quicknav') &amp;amp;&amp;amp; $$('div.mod_quicknav').length &amp;gt; 0) {&lt;br /&gt;
	$$('div.mod_quicknav select').addEvent('change', function() {&lt;br /&gt;
		var optionVal = $(this).getProperty('value');&lt;br /&gt;
		$(this).getParent('form').setProperty('action', optionVal).submit();&lt;br /&gt;
		return false;&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;code&amp;gt;$('.mod_quicknav')&amp;lt;/code&amp;gt; wählt man den Container aus, der das Formular umschließt und fügt diesem mit &amp;lt;code&amp;gt;.change(function)&amp;lt;/code&amp;gt; eine Funktion hinzu. Im nächsten Schritt geht man eine Ebene tiefer, wählt das Formular innerhalb des Containers aus und sagt der Funktion was passieren soll wenn man sie betätigt. &lt;br /&gt;
&lt;br /&gt;
So wird bei der Auswahl einer Seite innerhalb der Quicknavigation kein Submit Button mehr benötigt, sichtbar ist er aber nach wie vor. Um den Button bei aktiviertem Javascript unsichtbar zu machen fügt man dem oberen Codeschnippsel eine weitere Zeile hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
document.documentElement.className += &amp;quot;js&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$(document).ready(function(){ &lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Durch diese Zeile wird dem HTML Element der Website eine Klasse &amp;quot;js&amp;quot; hinzugefügt falls Javascript aktiviert sein sollte. Jetzt gilt es nur noch via CSS diesen Zustand abzufragen und den Button zu verstecken.&lt;br /&gt;
&lt;br /&gt;
Dafür öffnet man die für die Website zuständige CSS und ergänzt sie um folgende Zeilen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
.js .mod_quicknav .submit { &lt;br /&gt;
   display:none;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/FacebookWall</id>
		<title>FacebookWall</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/FacebookWall"/>
				<updated>2013-07-17T20:51:13Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev Snippets]]&lt;br /&gt;
== Einrichten einer Facebook Wall ==&lt;br /&gt;
&lt;br /&gt;
(1) 	Unter Inhalte &amp;gt; FacebookWallSettings eine beliebige Facebook Fanseite einbinden&lt;br /&gt;
&lt;br /&gt;
    (1.1) Legen Sie unter https://developers.facebook.com/apps eine Facebook Anwendung an.&lt;br /&gt;
[[Datei:FacebookWallAppSettings.png]]&lt;br /&gt;
    (1.2) Einen Access Token generieren:&lt;br /&gt;
            - Wir benötigen einen Offline Access Token von Facebook um die Inhalte von der Seite Abfragen zu können.&lt;br /&gt;
            - Am besten ist ein Access Token von dem Account, der Administrator für die gewünschte Fanseite ist.&lt;br /&gt;
            - Abhängig von den Einstellungen der gewünschten Fanpage muss der User von dem der Access Token stammt, die Fanseite Liken.&lt;br /&gt;
            - Nähere Infos dazu unter https://developers.facebook.com/docs/authentication/&lt;br /&gt;
            - Ein kleines PHP Script mit dessen Hilfe Sie den Access Token kriegen:&lt;br /&gt;
                          &amp;lt;?php&lt;br /&gt;
                          $app_id = YOUR_FACBOOK_APP_ID;&lt;br /&gt;
                          $app_secret = 'YOUR_FACBOOK_APP_SECRET';&lt;br /&gt;
                          $my_url = 'THE URL WHERE THIS SCRIPT IS RUNNING';&lt;br /&gt;
&lt;br /&gt;
                          $code = $_REQUEST[&amp;quot;code&amp;quot;];&lt;br /&gt;
			&lt;br /&gt;
                          if(empty($code)) {&lt;br /&gt;
                              $dialog_url = &amp;quot;http://www.facebook.com/dialog/oauth?client_id=&amp;quot; &lt;br /&gt;
                                             . $app_id . &amp;quot;&amp;amp;redirect_uri=&amp;quot; . urlencode($my_url).&amp;quot;&amp;amp;scope=offline_access,publish_stream&amp;quot;;&lt;br /&gt;
                              echo(&amp;quot;&amp;lt;script&amp;gt; top.location.href='&amp;quot; . $dialog_url . &amp;quot;'&amp;lt;/script&amp;gt;&amp;quot;);&lt;br /&gt;
                          }&lt;br /&gt;
						&lt;br /&gt;
                          $token_url = &amp;quot;https://graph.facebook.com/oauth/access_token?client_id=&amp;quot;&lt;br /&gt;
                                        . $app_id . &amp;quot;&amp;amp;redirect_uri=&amp;quot; . urlencode($my_url) . &amp;quot;&amp;amp;client_secret=&amp;quot;&lt;br /&gt;
                                        . $app_secret . &amp;quot;&amp;amp;code=&amp;quot; . $code;&lt;br /&gt;
&lt;br /&gt;
                          $access_token = file_get_contents($token_url);&lt;br /&gt;
&lt;br /&gt;
                          echo $access_token;&lt;br /&gt;
                          echo &amp;quot;------------------------------------&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
                          $graph_url = &amp;quot;https://graph.facebook.com/me?&amp;quot; . $access_token;&lt;br /&gt;
                          $user = json_decode(file_get_contents($graph_url));&lt;br /&gt;
                          echo(&amp;quot;Hello &amp;quot; . $user-&amp;gt;name);&lt;br /&gt;
                          ?&amp;gt;&lt;br /&gt;
(1.3) Legen Sie eine neue Facebook Wall an und tragen Sie die Daten richtig ein.&lt;br /&gt;
&lt;br /&gt;
(2) Erzeugen Sie ein Frontend-Modul mit der gewünschten Facebook Wall.&lt;br /&gt;
&lt;br /&gt;
(3) Binden Sie das Frontend-Modul auf einer beliebigen Seiten ein.&lt;br /&gt;
&lt;br /&gt;
(4) Um die Inhalte von Facebook öfter als einmal pro Stunde (TL_CRON) zu holen, tragen Sie einen richtigen Cronjob ein.&lt;br /&gt;
    Das machen Sie die Seite auf der die FB-Wall eingebunden ist, einen GET-Parameter mitgeben (?force_cron=1)&lt;br /&gt;
&lt;br /&gt;
(5) Binden Sie auf der gewünschten Seite die facebook.js ein. (DIESE BENÖTIGT JQUERY ALS JAVASCIRPT FRAMEWORK)&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Bearbeiten_von_Catalog_und_Formular_vergibt_Mitglieder-Gruppenzuweisung</id>
		<title>Bearbeiten von Catalog und Formular vergibt Mitglieder-Gruppenzuweisung</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Bearbeiten_von_Catalog_und_Formular_vergibt_Mitglieder-Gruppenzuweisung"/>
				<updated>2013-07-17T20:49:49Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev Snippets]]&lt;br /&gt;
== '''Mitgliedergruppen  Vergabe per Formular und Katalog''' ==&lt;br /&gt;
&lt;br /&gt;
{{Anmerkung|Die Mitgliedergruppen Funktion in Contao ist wirklich ein feine Sache. Wenn man sie noch flexibler gestalten könnte,&lt;br /&gt;
würden man noch mehr nette Features umsetzen können.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
''Ein neuer User bekommt die Gruppe &amp;quot;Neuling&amp;quot; und &amp;quot;Mitglied&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
Alle Neulinge sehen speziell für sie eingerichtete Werbeinfos/Funktion/Anmelde-infos.&amp;lt;br&amp;gt;&lt;br /&gt;
Zudem haben Neulinge nicht gleich vollen Zugang.&lt;br /&gt;
&lt;br /&gt;
Meldet er sich für einen Newsletter oder bewirbt sich über ein Formular, oder erstellen sein eigenes Karteprofil über den Katalog, so kann er die Gruppe &amp;quot;vip&amp;quot; erlangen und verliert den Status &amp;quot;neuling&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch verändert sich für ihn die Website und die Zugangsberechtigung.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein anderer User registriert sich als &amp;quot;Partner&amp;quot; und bekommt erweiterte Berechtigungen,&amp;lt;br&amp;gt;&lt;br /&gt;
soll aber auch seinen Account umwandeln können zu ein Normales Mitglied.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Käufer soll nach Teilnahme an einem Gewinnspiel besondere Produkte sehen können......''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Um diese Vielfalt nutzen zu können gibt es hier ein kleines Script das über einen Hook gestartet wird.}}&lt;br /&gt;
&lt;br /&gt;
{{msgInfo|Bitte keine Experimente auf produktiven Plattformen. Immer brav im Sandkasten testen. Niemand übernimmt die Garantie für etwaige Schäden}}&lt;br /&gt;
{{msgInfo|Dieses Script wurde getestet mit Contao 2.11.2 ## efg 1.16.0 stable und catalog 2.0.0 beta2 61}}&lt;br /&gt;
&lt;br /&gt;
== Funktion erstellen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''FORMULAR(GENERATOR) GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Für die Werteübermittlung wird ein verstecktes Feld angelegt mit Namen &amp;quot;'''dex'''&amp;quot; zum hinzufügen einer Gruppe&amp;lt;br&amp;gt;&lt;br /&gt;
und(oder) ein Feld  mit namen &amp;quot;'''kil'''&amp;quot; zum entfernen einer Gruppe.&amp;lt;br&amp;gt;&lt;br /&gt;
Dem versteckten Feld gibt ihr einen echten Wert und einen eigenen Sicherheitscode(Kontrollwert) ein.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script überprüft anhand einer Formel ob der Sicherheitscode gleich dem echten Wert ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Ausdruck sieht so aus &amp;quot;'''id*cz#####'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
In das Sternchen kommt die echte ID der Mitgliedergruppe und die Raute bekommt den Sicherheitscode.&amp;lt;br&amp;gt;&lt;br /&gt;
Den Code errechnet ihr euch selbst indem ihr die Formel benutzt:&amp;lt;br&amp;gt;&lt;br /&gt;
FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für Gruppe ID 8:'''   8*15=120 +344=464 *23=10672&amp;lt;br&amp;gt;&lt;br /&gt;
Unser Wert für HIDDEN Feld ist also &amp;quot;'''id8cz10672'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei manipulationsversuche wird das Script also nicht ausgeführt.&amp;lt;br&amp;gt;&lt;br /&gt;
{{msgWarning|Die Formel MÜSST ihr natürlich noch ändern, sonst ist die Sicherheit für die Katz.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Würde ich ein Anmeldeformular nun um das HIDDEN Feld &amp;quot;'''dex'''&amp;quot; mit Wert &amp;quot;id8cz10672&amp;quot; erweitern,&amp;lt;br&amp;gt;&lt;br /&gt;
so wird der User nach abschicken des Formulars die Gruppenzuweisung mit id 8 bekommen.&amp;lt;br&amp;gt;&lt;br /&gt;
Gebe ich dem HIDDEN Feld &amp;quot;'''kil'''&amp;quot; den Wert &amp;quot;id8cz10672&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
so wird dem User nach abschicken die Gruppenzuweisung ID 8 entzogen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CATALOG GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Hier ebenfalls ein HIDDEN Feld anlegen. Bis dato ist im Catalog keine vorhanden, daher folgendes:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unter '''modules/catalog/templates/'''&amp;lt;br&amp;gt;&lt;br /&gt;
befindet sich das catalog_edit.xyz  Template das ihr modifiziert oder euch ''erstmal eine Kopie davon anlegt.''&amp;lt;br&amp;gt;&lt;br /&gt;
Im Template setzt ihr unter dem hidden REQUEST_TOKEN ein neues Hidden Feld&amp;lt;br&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; value=&amp;quot;id8cz10672&amp;quot; name=&amp;quot;dex&amp;quot;/&amp;gt;'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das neue Template dann auch im CatalogEdit Modul auswählen. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jetzt zum Eigentlichen...'''&amp;lt;br&amp;gt;&lt;br /&gt;
unter '''modules/''' legt ihr einen neuen Ordner an zb. &amp;quot;'''eigenefunktionen'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Jetzt erstellt darin eine &amp;quot;'''Extrafunktionen.php'''&amp;quot; mit folgedem Inhalt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!defined('TL_ROOT')) die('You can not access this file directly!');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * TYPOlight webCMS&lt;br /&gt;
 *&lt;br /&gt;
 * The TYPOlight webCMS is an accessible web content management system that&lt;br /&gt;
 * specializes in accessibility and generates W3C-compliant HTML code. It&lt;br /&gt;
 * provides a wide range of functionality to develop professional websites&lt;br /&gt;
 * including a built-in search engine, form generator, file and user manager,&lt;br /&gt;
 * CSS engine, multi-language support and many more. For more information and&lt;br /&gt;
 * additional TYPOlight applications like the TYPOlight MVC Framework please&lt;br /&gt;
 * visit the project website http://www.typolight.org.&lt;br /&gt;
 *&lt;br /&gt;
 * This is not a complete extension. Its only a little Script for group assignment over form submitted and catalog edited&lt;br /&gt;
 * Script powered by www.mediadistrict.de &lt;br /&gt;
 * PHP version 5&lt;br /&gt;
 * @copyright  MediaDistrict e.K.&lt;br /&gt;
 * @author     Marco Groß&lt;br /&gt;
 * @package    &lt;br /&gt;
 * @license    free for all :) &lt;br /&gt;
 * @filesource this file only&lt;br /&gt;
 */ &lt;br /&gt;
class Extrafunktionen extends Frontend&lt;br /&gt;
{&lt;br /&gt;
	public function gruppenzuweisung($arrPost, $arrForm, $arrFiles){&lt;br /&gt;
&lt;br /&gt;
		/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
	public function gruppenzuweisungcat(){&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
				/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Bei der eigenen Funktion darf es in der PHP kein Close Tag geben. Das &amp;quot;?&amp;gt;&amp;quot; darf hier am Ende nicht stehen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Kurz zur Erläuterung'''&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisung&amp;quot; Funktion ist für das abschicken von Formulardaten&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisungcat&amp;quot; Funktion ist eine seperate für das abschicken von Katalog(item)daten, da es von der &amp;lt;br&amp;gt;ContaoCore Routine nicht erfasst wird.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Funktion starten ==&lt;br /&gt;
&lt;br /&gt;
Zum Schluß müssen wir nur noch festlegen wann und wo wir diese Funktion abfrufen möchten.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Ordner '''system/config/'''&amp;lt;br&amp;gt;&lt;br /&gt;
die Datei '''dcaconfig.php''' bearbeiten und folgendes einsetzen:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_HOOKS']['processFormData'][] = array('Extrafunktionen', 'gruppenzuweisung');&lt;br /&gt;
//$GLOBALS['TL_HOOKS']['catalogFrontendUpdate'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
$GLOBALS['TL_HOOKS']['catalogFrontendInsert'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird unsere Funktion nach dem Abschicken eines Formulars ausgeführt und nachdem der User (im FE) &amp;lt;br&amp;gt;einen neuen KatalogItem erstellt hat. Je nach dem was man erreichen möchte setzt man es hier fest.&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Delicious_in_Contao_einbinden</id>
		<title>Delicious in Contao einbinden</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Delicious_in_Contao_einbinden"/>
				<updated>2013-07-17T20:49:02Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev Snippets]]&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|Version=Alle Versionen}}&lt;br /&gt;
&lt;br /&gt;
Folgende Anleitung ermöglicht es, die letzten Bookmarks von Delicious in Contao einzubinden:&lt;br /&gt;
&lt;br /&gt;
* Füge folgenden Code in eine neue PHP-Datei ein und speichere diese in deiner Contao-Installation im Ordner Templates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// @see http://briancray.com/2009/08/24/delicious-bookmarks-api-php/&lt;br /&gt;
&lt;br /&gt;
function get_delicious()&lt;br /&gt;
{&lt;br /&gt;
	$cache = dirname(__FILE__) . '/caches/delicious';&lt;br /&gt;
	if(filemtime($cache) &amp;lt; (time() - 300))&lt;br /&gt;
	{&lt;br /&gt;
		@mkdir(dirname(__FILE__) . '/caches', 0777);&lt;br /&gt;
		$url = 'https://api.del.icio.us/v1/posts/recent?count=5'; /* choose number of bookmarks */&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
		curl_setopt($ch, CURLOPT_URL, $url);&lt;br /&gt;
		curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);&lt;br /&gt;
		curl_setopt($ch, CURLOPT_TIMEOUT, 5);&lt;br /&gt;
		curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);&lt;br /&gt;
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
		// add delicious.com username and password below&lt;br /&gt;
		curl_setopt($ch, CURLOPT_USERPWD, 'username:password');&lt;br /&gt;
		$data = curl_exec($ch);&lt;br /&gt;
		curl_close($ch);&lt;br /&gt;
		$cachefile = fopen($cache, 'wb');&lt;br /&gt;
		fwrite($cachefile, $data);&lt;br /&gt;
		fclose($cachefile);&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		$data = file_get_contents($cache);&lt;br /&gt;
	}&lt;br /&gt;
	$xml = simplexml_load_string($data);&lt;br /&gt;
 &lt;br /&gt;
	$html = '&amp;lt;ul&amp;gt;';&lt;br /&gt;
	foreach($xml as $item)&lt;br /&gt;
	{&lt;br /&gt;
		$html .= '&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;' . $item['href'] . '&amp;quot; title=&amp;quot;' . $item['description'] . '&amp;quot;&amp;gt;' . $item['description'] . '&amp;lt;/a&amp;gt;: ' . $item['extended'] . '&amp;lt;/li&amp;gt;';&lt;br /&gt;
	}&lt;br /&gt;
	$html .= '&amp;lt;/ul&amp;gt;';&lt;br /&gt;
	echo $html;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
// display them&lt;br /&gt;
get_delicious();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ersetzte in Zeile 21 ''username:password'' mit deinem Delicious Benutzernamen (delicious ID) und deinem Passwort. Bei Bedarf kannst du noch in Zeile 11 die Anzahl Bookmarks ändern.&lt;br /&gt;
* Wenn du das nicht sowieso schon gemacht hast, kopiere die Datei auf den Webserver (natürlich wieder in den Ordner Templates).&lt;br /&gt;
* Erstelle ein neues Modul und wähle als Elementtyp HTML. Füge mit dem Insert-Tag ''{{file::delicious_boookmarks.php}}'' die entsprechende PHP-Datei ein.&lt;br /&gt;
&lt;br /&gt;
That's it! Schon hast du deine letzten Bookmarks automatisch auf deiner Website angezeigt.&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Cron-Jobs_f%C3%BCr_Erweiterung_Cron</id>
		<title>Cron-Jobs für Erweiterung Cron</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Cron-Jobs_f%C3%BCr_Erweiterung_Cron"/>
				<updated>2013-07-17T20:47:06Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
Für die Erweiterung [[Cron]] ist ein Demo Job mitgeliefert.&amp;lt;br&amp;gt;&lt;br /&gt;
Hier sollen weitere Jobs gezeigt oder verlinkt werden.&lt;br /&gt;
&lt;br /&gt;
=Erweiterung: cron_jobs_bugbuster=&lt;br /&gt;
Diese Erweiterung bringt derzeit einen Job mit, zu finden im Extension Repository: [https://contao.org/de/extension-list/view/cron_jobs_bugbuster.html cron_jobs_bugbuster].&lt;br /&gt;
==Löschen der Music Academy Demo Dateien (Bilder + sql Template)==&lt;br /&gt;
* Contao Version: ab 3.1.0&lt;br /&gt;
* Cron Version: ab 3.1.0&lt;br /&gt;
* Job-Pfad: system/modules/cron_jobs_bugbuster/jobs/PurgeDemoFiles.php&lt;br /&gt;
Sinnvoll als einmaliger Job, den man dann nur kurz aktiviert nach einem Contao Update.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Jobs werden in dieser Erweiterung noch folgen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
--[[Benutzer:BugBuster|BugBuster]] 15:46, 2. Jun. 2013 (CEST)&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2013-07-17T20:45:07Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie an Anfang verschoben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder eine Immobilienverwaltung (mit Frontendeingabe und Workflow) oder einer Rezeptdatenbank (zu sehen auf [http://catalogdemo.dasprojekt.org http://catalogdemo.dasprojekt.org] ).&lt;br /&gt;
&lt;br /&gt;
Da dieses Modul sehr komplex ist, findet man einzelne Dokumentationen in der Kategorie [[:Category:Catalog|Catalog]].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Beschreibung=&lt;br /&gt;
Definieren von mehrfachen individuellen Katalogen, individuellen Feldtypen und zahlreichen Frontend-Anzeige-Formatierungs-Möglichkeiten.&lt;br /&gt;
Dieses Modul erlaubt es Benutzern, Kataloge mit Einträgen zu definieren und zu verwalten. Stellen Sie sich vor, Sie möchten einem Besucher Ihrer Seite eine Liste mit Ihren Spielen zeigen. Sie haben viele Spiele, aber alle haben gleiche bestimmte Eigenschaften, wie z.B. Titel, Autor, Genre, Konsolenformat, Veröffentlichungsdatum usw. Sie möchten nun alle diese Informationen speichern und später dann Besuchern zeigen, ihnen dabei nur Spiele zeigen aus dem Motorsport-Bereich oder Spiele mit einem Preis über einer bestimmten Höhe, nur Spiele, die verfügbar sind usw. Dieses Modul erlaubt Ihnen, solche Dinge zu tun. &lt;br /&gt;
&lt;br /&gt;
Quelle: [http://www.contao.org/erweiterungsliste/view/catalog.html Beschreibungstext des Catalog-Moduls in der Extension-Repository]&lt;br /&gt;
&lt;br /&gt;
=Contao2go Catalog Version=&lt;br /&gt;
&lt;br /&gt;
Da die größte Schwierigkeit darin besteht, zu sehen was man einstellen muss um gewisse Ergebnisse zu bekommen wurde ein Catalog erstellt, mit dem man ein wenig rumspielen kann. Die aktuelle Version kann immer über diesen Link bezogen werden: [http://catalog.mediendepot-ruhr.de http://catalog.mediendepot-ruhr.de] &lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
==Catalog aus dem Contao-Repository==&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
==Catalog aus dem Entwicklungs-Repository==&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. &lt;br /&gt;
&lt;br /&gt;
Man sollte darauf achten, welche Ordner wohin in der Installation kommen:&lt;br /&gt;
* der Inhalt von /drivers nach /system/drivers/&lt;br /&gt;
* alle anderen Ordner (bis auf /custumnav) nach /system/modules/&lt;br /&gt;
* /customnav wird nicht benötigt&lt;br /&gt;
&lt;br /&gt;
Danach muss ein Update der Datenbank gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Eventuell fehlende Sprachdateien können aus den Übersetzungen der Version im Contao-Extension-Repository manuell hinzugefügt werden. So kann dafür gesorgt werden, dass der Catalog dann (weitgehend) in einer Übersetzung benutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Bei einem Update muss seit Version r239 einmal unter Katalog (Menü von Contao) ganz oben rechts auf 'Maintenance' geklickt werden um die Tags Felder neu aufbauen lassen.}}&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
Katalogfelder vom Typ &amp;quot;Taxonomie&amp;quot; müssen umgestellt werden auf &amp;quot;Auswahl&amp;quot; mit der Datentabelle &amp;quot;tl_taxonomy&amp;quot;, Option Spaltenwert = name. Für eine schönere Darstellung aktiviert man &amp;quot;Die Optionsauswahl individualisieren&amp;quot;, dann kann man auch Teilbereiche aus der Taxonomie vorgeben und die Anzeige auf &amp;quot;Baum nur mit auswählbaren Kindeinträgen&amp;quot; stellen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Mit '''Taxonomie''' können Stichworte hierarchisch angelegt und verwaltet werden. Diese sind Grundlage für Filter, Navigation und Verschlagwortung (sog. ''Tagging'') in den Katalogen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Frontend-Module==&lt;br /&gt;
Für eine Basisanwendung der Katalog-Erweiterung können folgende Module eingesetzt werden:&lt;br /&gt;
* Mit '''Catalog List''' kann eine Liste von Einträgen angezeigt werden.&lt;br /&gt;
* Eine Detailansicht eines Eintrags kann mit Hilfe des '''Catalog Reader''' angezeigt werden. Eine ''Catalog List'' verweist dabei auf den ''Catalog Reader''. Der ''Catalog Reader'' muss natürlich nur dann verwendet werden, wenn von einer Auflistung aus eine Detailseite eines Eintrags angezeigt werden soll.&lt;br /&gt;
&lt;br /&gt;
Für eine weiterführende Benutzung der Katalog-Erweiterung stehen optional diese Module zur Verfügung:&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
==Inhaltselemente==&lt;br /&gt;
Mit der Erweiterung [http://www.contao.org/de/extension-list/view/catalogcontentelement.de.html Catalogcontentelement] kann über ein Inhaltselement einzelne Katalogeinträge auf Seiten dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
=Erstellen eines Katalogs (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird für die URLs der Alias genutzt. Es muss kein Alias-Feld erstellt werden, es werden dann Text-Felder mit der Eigenschaft 'Eindeutig' zur Auswahl angeboten. Bei dieser Methode (ohne Alias-Feld) wird der Alias allerdings nicht in eine sichere Form konvertiert. 'Föö Bar' !-&amp;gt; 'foefoe-bar'.&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID.)&lt;br /&gt;
{{Hinweis|Es ist darauf zu achten, dass beim Anlegen der Felder das Feld ''Alias'' '''nach''' dem Feld ''Titel'' plaziert wird, da sonst der Alias nicht korrekt generiert bzw. nur die ID gesetzt wird.}}&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
Möchte man im Feld ''Date'' immer das aktuelle Datum beim Anlegen eines Items verwenden, kann man in den erweiterten Einstellungen des Date-Feldes beim Standartwert den Wert  '''date()''' eintragen.&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
Bis catalog Version 2.0.0 beta2 Build 59 kann man nicht [https://www.contao-community.de/showthread.php?27484-Wieso-kein-BE-Filter-f%FCr-Feld-vom-Typ-quot-Tags-quot&amp;amp;p=183047&amp;amp;viewfull=1#post183047 Tags Felder als Filter in Backend-Listenansichten verwenden]. Ein par Zeilen Code helfen dem aber nach. Wie das geht steht im verlinkten Forumbeitrag.&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen. Falls die ausgewählte Datei nicht unter den Contao-Einstellungen eingetragen ist, so bleibt das Feld &amp;quot;value&amp;quot; (mehr dazu siehe &amp;quot;Welche Variablen hat man in einem Template zur Verfügung?&amp;quot;) leer. Aus diesem Grund sollte man im Vorhinein die entsprechenden Dateitypen freischalten.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Berechnen===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Berechnungsformel&lt;br /&gt;
** Beispiel einer SQL-Berechnung, wenn man einen numerischen Wert erhalten will -&amp;gt; (price*1.15)*qty&lt;br /&gt;
** Beispiel einer SQL-Berechnung, wenn man mehrere Texte zu einer Textzeichenfolge verknüpfen will -&amp;gt; CONCAT('Adresse: ', col_adresse , ', ' , col_plz , ' ' , col_ort)&lt;br /&gt;
* Format-Einstellungen&lt;br /&gt;
** Vor- und Nachsilben&lt;br /&gt;
** Format&lt;br /&gt;
*** Format-Funktion&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung oder Parameter&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermit wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick pro IP und Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
{{Anmerkung|der Feldtyp &amp;quot;Meta Keywords&amp;quot; ist veraltet, da in der Katalog Konfiguration direkt nun ein Textfeld als Quelle der META Keywords gewählt werden kann.}}&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Attribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Fields (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Selectfield aus dem gewählten Katalog. (Andere Felder wie Tagfield gehen nicht und stehen deswegen nicht zur Auswahl!)&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
{{Anmerkung|Der folgende Punkt ist in catalog 2.0.0 beta1 Build 51 nicht, oder nicht mehr vorhanden!}}&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
==Inhaltselemente==&lt;br /&gt;
Mit der Erweiterung [http://www.contao.org/de/extension-list/view/catalogcontentelement.de.html Catalogcontentelement] kann über ein Inhaltselement einzelne Katalogeinträge auf Seiten dargestellt werden. &lt;br /&gt;
&lt;br /&gt;
Vorgehensweise:&lt;br /&gt;
* Installation der Erweiterung [http://www.contao.org/de/extension-list/view/catalogcontentelement.de.html Catalogcontentelement]&lt;br /&gt;
* In ''Inhalte -- Katalog'' auf die Büroklammer klicken, um ein Template für das Inhaltselement anzulegen. ''Wichtig:'' Erst den Katalog auswählen, dann auf ''speichern'' klicken. Nun erscheint zwar eine Fehlermeldung, aber auch alle nötigen Informationen, um die Einstellungen vollständig vorzunehmen.&lt;br /&gt;
* Nun kann unter ''Inhalte -- Artikel'' das Inhaltselement auf eienr beliebigen Seite plaziert werden. Das vorher konfigurierte Template und den Katalogeintrag können in den Einstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;showTemplateVars(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
'''Achtung: Diese Anweisung stellt ein potenzielles Sicherheitsrisiko dar und muss vor dem Produktiveinsatz entfernt werden.'''&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Titel so beeinflussen, das die aktuelle Kategorie einer Liste dort steht==&lt;br /&gt;
Im Catalog Template folgendes nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if(strlen($this-&amp;gt;Input-&amp;gt;get('kategorie')))&lt;br /&gt;
{&lt;br /&gt;
   global $objPage;&lt;br /&gt;
   $objPage-&amp;gt;pageTitle = &amp;quot;&amp;quot;.$entry['data']['kategorie']['value'].&amp;quot; - XYZ&amp;quot;;  &lt;br /&gt;
}&lt;br /&gt;
?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In dem Beispiel wird jetzt (nur wenn eine Kategorie gewählt ist) der Wert von '''$entry['data']['kategorie']['value']''' eingesetzt.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu braucht man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden, sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
Wenn das Aliasfeld nicht angelegt ist wird das Item per ID verlinkt.&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort,search&amp;quot; angegeben werden. Dadurch ignoriert Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht im Feld &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC). Im Backend können Einträge nur dann manuell sortiert (verschoben) werden, wenn bei keinem Feld die Einstellung 'Sortier DropDown aktivieren' aktiv ist.&lt;br /&gt;
&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]&lt;br /&gt;
[[http://code.google.com/p/typolight-catalog/issues/detail?id=199 Bug-Report]] [[http://code.google.com/p/typolight-catalog/source/detail?r=198 fixed in r198]]}}&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Mit der Erweiterung [[catalog_manualsort]] ist es möglich die Reihenfolge der Einträge im Backend trotzdem zu ändern, auch wenn die Sortieroption für bestimmte Felder aktiv ist.}}&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf die '''Sortierungs Option''' (Feld-Eigenschaften-&amp;gt;Backend Filter Einstellungen-&amp;gt;'Sortierungs Dropdown aktivieren') '''bei keinem Feld aktiviert''' sein.&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]}}&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
FIND_IN_SET(7, kategorie)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
D.h.: es soll innerhalb von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatieren der Felder vom Typ Text, Nummer und Dezimal==&lt;br /&gt;
Options-Checkbox: '''Zusätzliche Format-Funktionen aktivieren.'''&lt;br /&gt;
&lt;br /&gt;
Das Auswahlmenü '''Format-Funktion''' erlaubt es, die Feldtypen '''Text''', '''Nummer''' und '''Dezimal''' zu formatieren. So gehts:&lt;br /&gt;
&lt;br /&gt;
=== Zeichenkette ===&lt;br /&gt;
Hier gibt man einen sprintf Formatierungs-String ein (siehe [http://de3.php.net/sprintf PHP: sprintf - Manual]) &lt;br /&gt;
&lt;br /&gt;
''Beispiel Zeichenkette:''&lt;br /&gt;
* '''Feldinhalt:''' Broccoli&lt;br /&gt;
* '''Formatierungs-String:''' Auf zum %s!&lt;br /&gt;
* '''Ausgabe:''' Auf zum Broccoli!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nummer ===&lt;br /&gt;
Hier gibt man nur die Anzahl der gewünschten Nachkommastellen an. In der Ausgabe erscheinen nun die in Contao festgelegten Tausender- und Dezimal-Trennzeichen.&lt;br /&gt;
&lt;br /&gt;
''Beispiel Nummer:''&lt;br /&gt;
* '''Feldinhalt:''' 1000&lt;br /&gt;
* '''Nachkommastellen:''' 2&lt;br /&gt;
* '''Ausgabe:''' 1.000,00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
Hier gibt man ein Formatierungsmuster ein (siehe [http://de.php.net/manual/de/function.date.php PHP: date - Manual])&lt;br /&gt;
&lt;br /&gt;
''Beispiel Datum:''&lt;br /&gt;
* '''Feldinhalt (Unix Timestamp):''' 1293217200&lt;br /&gt;
* '''Formatierungsmuster:''' Y-m-d H:i&lt;br /&gt;
* '''Ausgabe:''' 2010-12-24 18:00&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ausgabe für das aktuelle Jahr + 1 weiteres Jahr:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP(DATE_ADD('{{date::Y}}-12-31',INTERVAL 1 YEAR))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Probleme die bei Unix Timestamp auftreten können===&lt;br /&gt;
Es kann passieren, das der Unix Timestamp beim Verarbeiten von PHP falsch interpretiert wird (nicht als Zahl).&lt;br /&gt;
Daher kann es nötig sein, diesen erst durch einen kleinen Trick auf jeden Fall in einen Zahlenwert umzuwandeln:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit wird auf einen Zahlenwert gerundet (da es sich schon um Integer Werte handelt geht dabei nichts verloren).&lt;br /&gt;
&lt;br /&gt;
Beispiel (von do_while) aus dem Forum:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Hier wird nach dem Datum sortiert.&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesentlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann man die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CSV import==&lt;br /&gt;
Um die Daten richtig importieren zu können, muss darauf geachtet werden, dass diese UTF-8 kodiert sind. Das wird von Excel nicht direkt so gemacht.&lt;br /&gt;
Hier ist OpenOffice eine valable Alternative. Hier bieten sich sowohl beim Import (wie auch beim Export) von .csv Dateien diverse Einstellungsmöglichkeiten an.&lt;br /&gt;
&lt;br /&gt;
Der Import von Daten kann in zwei Varianten erfolgen:&lt;br /&gt;
# Variante: Die Daten werden nach dem letzten Eintrag in der Datenbank eingetragen.&lt;br /&gt;
# Variante: Die bestehehenden werden gelöscht und dann neu eingetragen. Hierbei zählt aber die ID weiter!&lt;br /&gt;
&lt;br /&gt;
[[Datei:Cat-openoffice-import.png|Screen Textimport]]&lt;br /&gt;
&lt;br /&gt;
Standardmässig ist die Möglichkeit .csv Dateien zu importieren nicht aktiviert. Klick hierzu zuerst im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
Dann unter 'Import' die jeweilige Option anklicken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Cat-csv-import.png|Option CSV-Import aktivieren]]&lt;br /&gt;
&lt;br /&gt;
==Mehrsprachige Filter mit dem Taxonomie Modul==&lt;br /&gt;
Möchte man einen Mehrsprachigen Katalog erstellen und diesen nach Taxonomien Filtern, so gibt es u.a. zwei Möglichkeiten dies zu tun:&lt;br /&gt;
* Für jede Sprache einen Taxonomiebaum erstellen. Problem: Doppelte Zuweisung im Katalog-Item + mehrere Taxonomiebäume&lt;br /&gt;
* Bessere Lösung: Man arbeitet mit den sprachabhängigen Inserttags. So kann man je nach Spracheinstellungen der Seite eine passende Frontend-Ausgabe erreichen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Möchte man jedem Item ein Land zuordnen, so erstellt man einen Taxonomie-Eintrag &amp;quot;Länder&amp;quot; und in fügt in diesen die auswählbaren Länder ein. Für &amp;quot;Deutschland&amp;quot; könnte das dann z.B. so aussehen:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{iflng::de}}&amp;lt;/nowiki&amp;gt;Deutschland&amp;lt;nowiki&amp;gt;{{iflng}}{{iflng::en}}&amp;lt;/nowiki&amp;gt;Germany&amp;lt;nowiki&amp;gt;{{iflng}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nun sollte der Filter auf der deutschen Seite &amp;quot;Deutschland&amp;quot;, und auf der englischen &amp;quot;Germany&amp;quot; ausgeben.&lt;br /&gt;
Dabei gibt es allerdings ein Problem mit dem Feldtyp in der Datenbank. Dieser ist auf wenige Zeichen beschränkt, wird somit bei entsprechender Länge gekürzt. Um dies '''nicht updatesicher''' zu korrigieren, muss man ins phpMyAdmin gehen und unter tl_taxonomy die Länge des entsprechenden Feldes (ich glaube es ist: &amp;quot;name&amp;quot;) ändern. (wird später genauer beschrieben)&lt;br /&gt;
&lt;br /&gt;
==Frontendausgabe Sortieren bei einem Feld was von einem anderen Catalog oder der Taxonomie kommt==&lt;br /&gt;
Beispiel:&lt;br /&gt;
Katalog A hat ein Select wo man Items aus Katalog B auswählen kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;(SELECT sorting FROM catalog_tabellenname AS cs WHERE cs.id=catalog_feld) ASC&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
catalog_tabellenname = Tabelle die das Feld beinhaltet (Katalog B)&lt;br /&gt;
catalog_feld = Name von dem Feld welches im Select genutz wird. (Feld in Katalog B)&lt;br /&gt;
&lt;br /&gt;
==Sortierung des Datums per Endzeit bzw. Anfangszeit (für Veranstaltungskalender o.ä.) ==&lt;br /&gt;
Beispiel:&lt;br /&gt;
Damit werden vom Enddatum abhängig sämtliche Datensätze (Events) angezeigt, die jetzt oder später stattfinden, unabhängig davon ob ein Enddatum gewählt wurde oder nicht.&lt;br /&gt;
Wenn nicht, wird stattdessen das Beginndatum als Grundlage genommen. Die Anweisung gehört in das Bedingungsfeld (Conditions) innerhalb des Cataloglistenmoduls.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
publish = 1 AND kategorie IN (82, 77, 80, 81) AND &lt;br /&gt;
( &lt;br /&gt;
(ende != '' AND ende &amp;gt;= UNIX_TIMESTAMP()) &lt;br /&gt;
OR beginn &amp;gt;= UNIX_TIMESTAMP() &lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Felder:'''&lt;br /&gt;
beginn = Startdatum&lt;br /&gt;
ende = Enddatum&lt;br /&gt;
kategorie = Taxonomie&lt;br /&gt;
&lt;br /&gt;
==Frontendausgabe über Taxonomie sortieren==&lt;br /&gt;
Problemstellung: Wenn man bei einem Katalog ein Selectfeld einsetzt, welches man auf eine Taxonomie referenziert, kommt es zu Problemen in der Sortierung.&lt;br /&gt;
&lt;br /&gt;
Beispielausgabe im FE:&lt;br /&gt;
&lt;br /&gt;
[[Taxonomie 1]]&lt;br /&gt;
- Item 1&lt;br /&gt;
- Item 2&lt;br /&gt;
- Item 3&lt;br /&gt;
&lt;br /&gt;
[[Taxonomie 2]]&lt;br /&gt;
- Item 1&lt;br /&gt;
- Item 2&lt;br /&gt;
- Item 3&lt;br /&gt;
&lt;br /&gt;
[[Taxonomie 3]]&lt;br /&gt;
- Item 1&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;FIND_IN_SET(servicesolutions, (&lt;br /&gt;
&lt;br /&gt;
SELECT GROUP_CONCAT(CAST(id AS CHAR) ORDER BY cs.sorting) FROM tl_taxonomy AS cs WHERE cs.pid=34 group by cs.pid&lt;br /&gt;
&lt;br /&gt;
)) ,name&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
servicesolutions (Feldname des genutzten Kataloges, welches auf die Taxonomie referenziert wird)&lt;br /&gt;
pid=34 (Das Elternelement in der Taxonomie, nach denen die Kindelemente sortiert werden soll.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Katalogeinträge an den Frontend-Benutzer binden==&lt;br /&gt;
&lt;br /&gt;
Um Katalogeinträge an den Frontend-Benutzer zu binden, kann die Erweiterung [http://www.contao.org/erweiterungsliste/view/catalogitemuseridfield.de.html catalogitemuseridfield] installiert werden.&lt;br /&gt;
&lt;br /&gt;
Nach der Installation besteht die Möglichkeit ein Feld mit dem Feldtyp Frontend-Benutzer im Catalog zu definieren.&lt;br /&gt;
In diesem Feld wird die User ID des Frontend-Benutzers gespeichert und kann so z.B. in den Bedingungen verknüpft werden.&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Nils.riel|Nils.riel]] 12:04, 24. Nov. 2010 (CET)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Carino|Carino]] 19:00, 24. Nov. 2012 (UTC+1)&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Avatar</id>
		<title>Avatar</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Avatar"/>
				<updated>2013-07-17T20:40:35Z</updated>
		
		<summary type="html">&lt;p&gt;Zero: Kategorie hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
* Adds an avatar to both, user and member settings&lt;br /&gt;
* Includes a module to let frontend members upload a personal avatar&lt;br /&gt;
* Avarars can be included anywhere with the &amp;lt;nowiki&amp;gt;{{avatar}}&amp;lt;/nowiki&amp;gt; insert tag&lt;br /&gt;
* Simple usage and API for other extensions&lt;br /&gt;
&lt;br /&gt;
===Manual Installation===&lt;br /&gt;
&lt;br /&gt;
* Download the install package from here.&lt;br /&gt;
* Unzip the content of TL_ROOT to your TYPOlight base directory on your webserver.&lt;br /&gt;
* Unzip the content of TL_FILES to the file upload directory on your webserver.&lt;br /&gt;
* Point your browser to http://www.yourdomain.com/contao/install.php&lt;br /&gt;
* Enter the installation password and click Login&lt;br /&gt;
* Scroll down to Update database tables and click on Update database&lt;br /&gt;
&lt;br /&gt;
===Getting started===&lt;br /&gt;
&lt;br /&gt;
You need to adjust some settings first. Login to the backend as administrator and scroll down to the avatar settings. :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Select the avatar file directory in the first input. In case you want to use another one than the default avatars directory, you need to move the existing files there manually.&lt;br /&gt;
&lt;br /&gt;
In the user and member settings you will now find a section for the avatar:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Frontend module for avatar upload===&lt;br /&gt;
&lt;br /&gt;
The module has no special settings. However you should apply some CSS for the frontend to style it, here is a suggestion for a start:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
  /**&lt;br /&gt;
   * Avatar frontend module&lt;br /&gt;
   */&lt;br /&gt;
  .mod_avatar .checkbox_container * { vertical-align:middle; }&lt;br /&gt;
  .mod_avatar .label_container { margin-top:10px; }&lt;br /&gt;
  .mod_avatar .textlabel { font-weight:bold; }&lt;br /&gt;
  .mod_avatar .error_message { color:red; }&lt;br /&gt;
  .mod_avatar .hint { color:#888; margin-bottom:10px; }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using avatars by insert tag===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  {{avatar}}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This will insert the avatar of the currently logged in frontend member as HTML IMG tag.&lt;br /&gt;
For not logged in guest, the tag will not insert anything.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  {{avatar::123}}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Inserts the avatar of the frontend member with ID 123.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  {{avatar::25::be}}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Inserts the avatar of the backend user with ID 25.&lt;br /&gt;
&lt;br /&gt;
===API for using avatars in other extensions===&lt;br /&gt;
&lt;br /&gt;
You will find the avatar image file path (relative to TL_ROOT) in the column avatar of the tables tl_member and tl_user. When this column is empty, the default avatar should be displayed. This simple logic is implemented in the Avatar::filename method, for example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  if (FE_USER_LOGGED_IN) {&lt;br /&gt;
    $this-&amp;gt;import('FrontendUser', 'User');&lt;br /&gt;
    $avatarFile = Avatar::filename($this-&amp;gt;User-&amp;gt;avatar);&lt;br /&gt;
    // avatarfile will be the filename of the avatar, relative to TL_ROOT&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
For even more convenience, you may use the method Avatar::img to create a IMG tag:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  if (TL_MODE == 'BE') {&lt;br /&gt;
    $this-&amp;gt;import('BackendUser', 'User');&lt;br /&gt;
    echo Avatar::img($this-&amp;gt;User-&amp;gt;avatar);&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Avatar::img has some optional parameters for more fine control over the IMG tag:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  public static function img(&lt;br /&gt;
    $avatar,                // the filename from tl_user.avatar or tl_member.avatar&lt;br /&gt;
    $alt = 'Avatar',        // The alt text&lt;br /&gt;
    $classes = 'avatar',    // The class(es) to assign&lt;br /&gt;
    $attribs = ''           // additional attributes, for example 'title=&amp;quot;Your avatar&amp;quot;'&lt;br /&gt;
  )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zero</name></author>	</entry>

	</feed>