<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=93.208.102.183</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=93.208.102.183"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/93.208.102.183"/>
	<updated>2026-05-06T15:36:48Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Interaktive_Karten_mit_d3.js&amp;diff=23372</id>
		<title>Interaktive Karten mit d3.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Interaktive_Karten_mit_d3.js&amp;diff=23372"/>
		<updated>2018-10-12T08:10:28Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: Die Seite wurde neu angelegt: „D3.js ist ein Tool zur Visualisierung von Daten. Man kann auch interaktive Karten damit erstellen. Der Prozess von Gis Shape Files bis zur fertigen Karte wird…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;D3.js ist ein Tool zur Visualisierung von Daten. Man kann auch interaktive Karten damit erstellen. Der Prozess von Gis Shape Files bis zur fertigen Karte wird hier erklärt.&lt;br /&gt;
&lt;br /&gt;
== Links: ==&lt;br /&gt;
 http://www.tnoda.com/blog/2013-12-07 (Vorbild für dieses Tutorial)&lt;br /&gt;
 http://www.naturalearthdata.com/ (Geodaten)&lt;br /&gt;
 http://www.gdal.org/ (Geospatial Data Abstraction Library - GDAL, Tools zum Arbeiten mit Geodaten)&lt;br /&gt;
&lt;br /&gt;
== Geodaten konvertieren - Tools installieren ==&lt;br /&gt;
Wir gehen von Shapefiles aus (.shp / Quelle s.o.). Damit man die Daten für eine WebApp nutzen kann wandeln wir sie in GeoJSON Daten um. Diese wiederum in TopoJSON um die Größe zu veringern (Kurven werden dadurch etwas weniger detailiert).&lt;br /&gt;
&lt;br /&gt;
Größenvergleich ausgehend von Shapefile mit ca. 9MB&lt;br /&gt;
&lt;br /&gt;
 Shapefile: 9MB&lt;br /&gt;
 GeoJSON: 25 MB&lt;br /&gt;
 Topojson: 2,5 MB&lt;br /&gt;
&lt;br /&gt;
Tipp: Viele Daten gibt es mittlerweile direkt als GeoJSON. So spart man sich den ersten Schritt.&lt;br /&gt;
=== .shp -&amp;gt; geojson ===&lt;br /&gt;
Geht mit dem Command Line Tool &amp;#039;&amp;#039;&amp;#039;ogr2ogr&amp;#039;&amp;#039;&amp;#039; aus der GDAL (siehe Links)&lt;br /&gt;
&lt;br /&gt;
Installation unter MacOS (mit brew):&lt;br /&gt;
 brew install gdal&lt;br /&gt;
&lt;br /&gt;
=== GeoJSON -&amp;gt; Topojson ===&lt;br /&gt;
Für die Konvertierung nach Topojson gibt es das topojson Tool. Es läßt sich über node.js installieren:&lt;br /&gt;
Installation&lt;br /&gt;
 sudo npm install -g topojson&lt;br /&gt;
&lt;br /&gt;
== Konvertieren und vereinfachen ==&lt;br /&gt;
 &lt;br /&gt;
Konvertierung von .shp nach .json:&lt;br /&gt;
 ogr2ogr -f GeoJSON meinJsonFile.json meinShapeFile.shp&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=PHP_-_Mailformular&amp;diff=23371</id>
		<title>PHP - Mailformular</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=PHP_-_Mailformular&amp;diff=23371"/>
		<updated>2018-10-11T05:20:27Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: /* Beispiel1 (Lifekinetik) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Siehe auch (TODO)&lt;br /&gt;
&lt;br /&gt;
== Libs ==&lt;br /&gt;
Todo -&amp;gt; PHP-Mailer etc...&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
=== Beispiel 1 - einfaches Mailform mit AJAX Versand (Lifekinetik) ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PHP&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
	if($_POST) {&lt;br /&gt;
&lt;br /&gt;
		$to = &amp;quot;info@angelajochum.de&amp;quot;; // Your email here&lt;br /&gt;
		$subject = &amp;#039;Nachricht von angelajochum.de&amp;#039;; // Standard Subject&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Send mail function&lt;br /&gt;
	function send_mail($to,$subject,$message,$headers){&lt;br /&gt;
		if(@mail($to,$subject,$message,$headers)){&lt;br /&gt;
			echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;success&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Ihre Nachricht wurde versandt. Vielen Dank.&amp;quot;));&lt;br /&gt;
		} else {&lt;br /&gt;
			echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Fehler, ihre Nachricht konnte nicht versendet werden.&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Check if $_POST vars are set&lt;br /&gt;
	if(!isset($_POST[&amp;#039;name&amp;#039;]) || !isset($_POST[&amp;#039;mail&amp;#039;]) || !isset($_POST[&amp;#039;comment&amp;#039;])){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;#039;Bitte füllen Sie alle Felder aus.&amp;#039;));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Sanitize input data, remove all illegal characters&lt;br /&gt;
	$name    = filter_var($_POST[&amp;#039;name&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$mail    = filter_var($_POST[&amp;#039;mail&amp;#039;], FILTER_SANITIZE_EMAIL);&lt;br /&gt;
	$subject = filter_var($_POST[&amp;#039;subject&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$website = filter_var($_POST[&amp;#039;website&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$comment = filter_var($_POST[&amp;#039;comment&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
&lt;br /&gt;
	//Validation&lt;br /&gt;
	if($name == &amp;#039;&amp;#039;) {&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben Sie Ihren Namen ein..&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
	if(!filter_var($mail, FILTER_VALIDATE_EMAIL)){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben sie eine gültige E-Mail Adresse ein.&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
	if($comment == &amp;#039;&amp;#039;){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben sie Ihre Nachricht ein.&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Send Mail&lt;br /&gt;
	$headers = &amp;#039;From: &amp;#039; . $mail .&amp;#039;&amp;#039;. &amp;quot;\r\n&amp;quot;.&lt;br /&gt;
	&amp;#039;Reply-To: &amp;#039;.$mail.&amp;#039;&amp;#039; . &amp;quot;\r\n&amp;quot; .&lt;br /&gt;
	&amp;#039;X-Mailer: PHP/&amp;#039; . phpversion();&lt;br /&gt;
&lt;br /&gt;
	send_mail($to, $subject, $comment . &amp;quot;\r\n\n&amp;quot;  .&amp;#039;Name: &amp;#039;.$name. &amp;quot;\r\n&amp;quot; .&amp;#039;E-Mail: &amp;#039;.$mail, $headers);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HTML&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form id=&amp;quot;contact-form&amp;quot; action=&amp;quot;#&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div class=&amp;quot;row contact-row&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;col-md-6 contact-name&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;input name=&amp;quot;name&amp;quot; id=&amp;quot;name&amp;quot; placeholder=&amp;quot;Name*&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;col-md-6 contact-email&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;input name=&amp;quot;mail&amp;quot; id=&amp;quot;mail&amp;quot; placeholder=&amp;quot;E-Mail*&amp;quot; type=&amp;quot;email&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;input name=&amp;quot;subject&amp;quot; id=&amp;quot;subject&amp;quot; placeholder=&amp;quot;Betreff&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;textarea name=&amp;quot;comment&amp;quot; id=&amp;quot;comment&amp;quot; placeholder=&amp;quot;Ihre Nachricht&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
              &amp;lt;div class=&amp;quot;col-md-12&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;DATENSCHUTZHINWEIS&amp;lt;br&amp;gt;&lt;br /&gt;
                  Mit meiner Kontaktaufnahme willige ich ein, dass meine Daten gespeichert und zur Bearbeitung meiner Anfrage/Kontaktaufnahme&lt;br /&gt;
                  sowie für die Zusendung von Informationsmaterial genutzt werden. Eine Weiterleitung an Dritte ist ausgeschlossen.&lt;br /&gt;
                  Diese Einwilligung kann jederzeit widerrufen werden.&amp;lt;br&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
                &amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;input class=&amp;quot;btn btn-lg btn-color btn-submit&amp;quot; value=&amp;quot;Absenden&amp;quot; id=&amp;quot;submit-message&amp;quot; type=&amp;quot;submit&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div id=&amp;quot;msg&amp;quot; class=&amp;quot;message success&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;Ihre Nachricht wurde versandt. Vielen Dank.&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;JavaScript (jQuery)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;quot;&amp;gt;&lt;br /&gt;
/* ---------------------------------------------------------------------- */&lt;br /&gt;
    /*  Contact Form&lt;br /&gt;
    /* ---------------------------------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
    var submitContact = $(&amp;#039;#submit-message&amp;#039;),&lt;br /&gt;
        message = $(&amp;#039;#msg&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    submitContact.on(&amp;#039;click&amp;#039;, function(e){&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
&lt;br /&gt;
        var $this = $(this);&lt;br /&gt;
        &lt;br /&gt;
        $.ajax({&lt;br /&gt;
            type: &amp;quot;POST&amp;quot;,&lt;br /&gt;
            url: &amp;#039;contact.php&amp;#039;,&lt;br /&gt;
            dataType: &amp;#039;json&amp;#039;,&lt;br /&gt;
            cache: false,&lt;br /&gt;
            data: $(&amp;#039;#contact-form&amp;#039;).serialize(),&lt;br /&gt;
            success: function(data) {&lt;br /&gt;
&lt;br /&gt;
                if(data.info !== &amp;#039;error&amp;#039;){&lt;br /&gt;
                    $this.parents(&amp;#039;form&amp;#039;).find(&amp;#039;input[type=text],input[type=email],textarea,select&amp;#039;).filter(&amp;#039;:visible&amp;#039;).val(&amp;#039;&amp;#039;);&lt;br /&gt;
                    message.hide().removeClass(&amp;#039;success&amp;#039;).removeClass(&amp;#039;error&amp;#039;).addClass(&amp;#039;success&amp;#039;).html(data.msg).fadeIn(&amp;#039;slow&amp;#039;).delay(5000).fadeOut(&amp;#039;slow&amp;#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    message.hide().removeClass(&amp;#039;success&amp;#039;).removeClass(&amp;#039;error&amp;#039;).addClass(&amp;#039;error&amp;#039;).html(data.msg).fadeIn(&amp;#039;slow&amp;#039;).delay(5000).fadeOut(&amp;#039;slow&amp;#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=PHP_-_Mailformular&amp;diff=23370</id>
		<title>PHP - Mailformular</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=PHP_-_Mailformular&amp;diff=23370"/>
		<updated>2018-10-11T05:18:23Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: /* Beispiel1 (Lifekinetik) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Siehe auch (TODO)&lt;br /&gt;
&lt;br /&gt;
== Libs ==&lt;br /&gt;
Todo -&amp;gt; PHP-Mailer etc...&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
=== Beispiel1 (Lifekinetik) ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PHP&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
	if($_POST) {&lt;br /&gt;
&lt;br /&gt;
		$to = &amp;quot;info@angelajochum.de&amp;quot;; // Your email here&lt;br /&gt;
		$subject = &amp;#039;Nachricht von angelajochum.de&amp;#039;; // Standard Subject&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Send mail function&lt;br /&gt;
	function send_mail($to,$subject,$message,$headers){&lt;br /&gt;
		if(@mail($to,$subject,$message,$headers)){&lt;br /&gt;
			echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;success&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Ihre Nachricht wurde versandt. Vielen Dank.&amp;quot;));&lt;br /&gt;
		} else {&lt;br /&gt;
			echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Fehler, ihre Nachricht konnte nicht versendet werden.&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Check if $_POST vars are set&lt;br /&gt;
	if(!isset($_POST[&amp;#039;name&amp;#039;]) || !isset($_POST[&amp;#039;mail&amp;#039;]) || !isset($_POST[&amp;#039;comment&amp;#039;])){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;#039;Bitte füllen Sie alle Felder aus.&amp;#039;));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Sanitize input data, remove all illegal characters&lt;br /&gt;
	$name    = filter_var($_POST[&amp;#039;name&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$mail    = filter_var($_POST[&amp;#039;mail&amp;#039;], FILTER_SANITIZE_EMAIL);&lt;br /&gt;
	$subject = filter_var($_POST[&amp;#039;subject&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$website = filter_var($_POST[&amp;#039;website&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$comment = filter_var($_POST[&amp;#039;comment&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
&lt;br /&gt;
	//Validation&lt;br /&gt;
	if($name == &amp;#039;&amp;#039;) {&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben Sie Ihren Namen ein..&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
	if(!filter_var($mail, FILTER_VALIDATE_EMAIL)){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben sie eine gültige E-Mail Adresse ein.&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
	if($comment == &amp;#039;&amp;#039;){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben sie Ihre Nachricht ein.&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Send Mail&lt;br /&gt;
	$headers = &amp;#039;From: &amp;#039; . $mail .&amp;#039;&amp;#039;. &amp;quot;\r\n&amp;quot;.&lt;br /&gt;
	&amp;#039;Reply-To: &amp;#039;.$mail.&amp;#039;&amp;#039; . &amp;quot;\r\n&amp;quot; .&lt;br /&gt;
	&amp;#039;X-Mailer: PHP/&amp;#039; . phpversion();&lt;br /&gt;
&lt;br /&gt;
	send_mail($to, $subject, $comment . &amp;quot;\r\n\n&amp;quot;  .&amp;#039;Name: &amp;#039;.$name. &amp;quot;\r\n&amp;quot; .&amp;#039;E-Mail: &amp;#039;.$mail, $headers);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HTML&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form id=&amp;quot;contact-form&amp;quot; action=&amp;quot;#&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div class=&amp;quot;row contact-row&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;col-md-6 contact-name&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;input name=&amp;quot;name&amp;quot; id=&amp;quot;name&amp;quot; placeholder=&amp;quot;Name*&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;col-md-6 contact-email&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;input name=&amp;quot;mail&amp;quot; id=&amp;quot;mail&amp;quot; placeholder=&amp;quot;E-Mail*&amp;quot; type=&amp;quot;email&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;input name=&amp;quot;subject&amp;quot; id=&amp;quot;subject&amp;quot; placeholder=&amp;quot;Betreff&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;textarea name=&amp;quot;comment&amp;quot; id=&amp;quot;comment&amp;quot; placeholder=&amp;quot;Ihre Nachricht&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
              &amp;lt;div class=&amp;quot;col-md-12&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;DATENSCHUTZHINWEIS&amp;lt;br&amp;gt;&lt;br /&gt;
                  Mit meiner Kontaktaufnahme willige ich ein, dass meine Daten gespeichert und zur Bearbeitung meiner Anfrage/Kontaktaufnahme&lt;br /&gt;
                  sowie für die Zusendung von Informationsmaterial genutzt werden. Eine Weiterleitung an Dritte ist ausgeschlossen.&lt;br /&gt;
                  Diese Einwilligung kann jederzeit widerrufen werden.&amp;lt;br&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
                &amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;input class=&amp;quot;btn btn-lg btn-color btn-submit&amp;quot; value=&amp;quot;Absenden&amp;quot; id=&amp;quot;submit-message&amp;quot; type=&amp;quot;submit&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div id=&amp;quot;msg&amp;quot; class=&amp;quot;message success&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;Ihre Nachricht wurde versandt. Vielen Dank.&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;JavaScript (jQuery)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;quot;&amp;gt;&lt;br /&gt;
/* ---------------------------------------------------------------------- */&lt;br /&gt;
    /*  Contact Form&lt;br /&gt;
    /* ---------------------------------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
    var submitContact = $(&amp;#039;#submit-message&amp;#039;),&lt;br /&gt;
        message = $(&amp;#039;#msg&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    submitContact.on(&amp;#039;click&amp;#039;, function(e){&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
&lt;br /&gt;
        var $this = $(this);&lt;br /&gt;
        &lt;br /&gt;
        $.ajax({&lt;br /&gt;
            type: &amp;quot;POST&amp;quot;,&lt;br /&gt;
            url: &amp;#039;contact.php&amp;#039;,&lt;br /&gt;
            dataType: &amp;#039;json&amp;#039;,&lt;br /&gt;
            cache: false,&lt;br /&gt;
            data: $(&amp;#039;#contact-form&amp;#039;).serialize(),&lt;br /&gt;
            success: function(data) {&lt;br /&gt;
&lt;br /&gt;
                if(data.info !== &amp;#039;error&amp;#039;){&lt;br /&gt;
                    $this.parents(&amp;#039;form&amp;#039;).find(&amp;#039;input[type=text],input[type=email],textarea,select&amp;#039;).filter(&amp;#039;:visible&amp;#039;).val(&amp;#039;&amp;#039;);&lt;br /&gt;
                    message.hide().removeClass(&amp;#039;success&amp;#039;).removeClass(&amp;#039;error&amp;#039;).addClass(&amp;#039;success&amp;#039;).html(data.msg).fadeIn(&amp;#039;slow&amp;#039;).delay(5000).fadeOut(&amp;#039;slow&amp;#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    message.hide().removeClass(&amp;#039;success&amp;#039;).removeClass(&amp;#039;error&amp;#039;).addClass(&amp;#039;error&amp;#039;).html(data.msg).fadeIn(&amp;#039;slow&amp;#039;).delay(5000).fadeOut(&amp;#039;slow&amp;#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=PHP_-_Mailformular&amp;diff=23369</id>
		<title>PHP - Mailformular</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=PHP_-_Mailformular&amp;diff=23369"/>
		<updated>2018-10-11T05:17:42Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Siehe auch (TODO)&lt;br /&gt;
&lt;br /&gt;
== Libs ==&lt;br /&gt;
Todo -&amp;gt; PHP-Mailer etc...&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
=== Beispiel1 (Lifekinetik) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
	if($_POST) {&lt;br /&gt;
&lt;br /&gt;
		$to = &amp;quot;info@angelajochum.de&amp;quot;; // Your email here&lt;br /&gt;
		$subject = &amp;#039;Nachricht von angelajochum.de&amp;#039;; // Standard Subject&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Send mail function&lt;br /&gt;
	function send_mail($to,$subject,$message,$headers){&lt;br /&gt;
		if(@mail($to,$subject,$message,$headers)){&lt;br /&gt;
			echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;success&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Ihre Nachricht wurde versandt. Vielen Dank.&amp;quot;));&lt;br /&gt;
		} else {&lt;br /&gt;
			echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Fehler, ihre Nachricht konnte nicht versendet werden.&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Check if $_POST vars are set&lt;br /&gt;
	if(!isset($_POST[&amp;#039;name&amp;#039;]) || !isset($_POST[&amp;#039;mail&amp;#039;]) || !isset($_POST[&amp;#039;comment&amp;#039;])){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;#039;Bitte füllen Sie alle Felder aus.&amp;#039;));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Sanitize input data, remove all illegal characters&lt;br /&gt;
	$name    = filter_var($_POST[&amp;#039;name&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$mail    = filter_var($_POST[&amp;#039;mail&amp;#039;], FILTER_SANITIZE_EMAIL);&lt;br /&gt;
	$subject = filter_var($_POST[&amp;#039;subject&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$website = filter_var($_POST[&amp;#039;website&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$comment = filter_var($_POST[&amp;#039;comment&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
&lt;br /&gt;
	//Validation&lt;br /&gt;
	if($name == &amp;#039;&amp;#039;) {&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben Sie Ihren Namen ein..&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
	if(!filter_var($mail, FILTER_VALIDATE_EMAIL)){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben sie eine gültige E-Mail Adresse ein.&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
	if($comment == &amp;#039;&amp;#039;){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben sie Ihre Nachricht ein.&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Send Mail&lt;br /&gt;
	$headers = &amp;#039;From: &amp;#039; . $mail .&amp;#039;&amp;#039;. &amp;quot;\r\n&amp;quot;.&lt;br /&gt;
	&amp;#039;Reply-To: &amp;#039;.$mail.&amp;#039;&amp;#039; . &amp;quot;\r\n&amp;quot; .&lt;br /&gt;
	&amp;#039;X-Mailer: PHP/&amp;#039; . phpversion();&lt;br /&gt;
&lt;br /&gt;
	send_mail($to, $subject, $comment . &amp;quot;\r\n\n&amp;quot;  .&amp;#039;Name: &amp;#039;.$name. &amp;quot;\r\n&amp;quot; .&amp;#039;E-Mail: &amp;#039;.$mail, $headers);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form id=&amp;quot;contact-form&amp;quot; action=&amp;quot;#&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div class=&amp;quot;row contact-row&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;col-md-6 contact-name&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;input name=&amp;quot;name&amp;quot; id=&amp;quot;name&amp;quot; placeholder=&amp;quot;Name*&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;col-md-6 contact-email&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;input name=&amp;quot;mail&amp;quot; id=&amp;quot;mail&amp;quot; placeholder=&amp;quot;E-Mail*&amp;quot; type=&amp;quot;email&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;input name=&amp;quot;subject&amp;quot; id=&amp;quot;subject&amp;quot; placeholder=&amp;quot;Betreff&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;textarea name=&amp;quot;comment&amp;quot; id=&amp;quot;comment&amp;quot; placeholder=&amp;quot;Ihre Nachricht&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
              &amp;lt;div class=&amp;quot;col-md-12&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;DATENSCHUTZHINWEIS&amp;lt;br&amp;gt;&lt;br /&gt;
                  Mit meiner Kontaktaufnahme willige ich ein, dass meine Daten gespeichert und zur Bearbeitung meiner Anfrage/Kontaktaufnahme&lt;br /&gt;
                  sowie für die Zusendung von Informationsmaterial genutzt werden. Eine Weiterleitung an Dritte ist ausgeschlossen.&lt;br /&gt;
                  Diese Einwilligung kann jederzeit widerrufen werden.&amp;lt;br&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
                &amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;input class=&amp;quot;btn btn-lg btn-color btn-submit&amp;quot; value=&amp;quot;Absenden&amp;quot; id=&amp;quot;submit-message&amp;quot; type=&amp;quot;submit&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div id=&amp;quot;msg&amp;quot; class=&amp;quot;message success&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;Ihre Nachricht wurde versandt. Vielen Dank.&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JavaScript (jQuery)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;quot;&amp;gt;&lt;br /&gt;
/* ---------------------------------------------------------------------- */&lt;br /&gt;
    /*  Contact Form&lt;br /&gt;
    /* ---------------------------------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
    var submitContact = $(&amp;#039;#submit-message&amp;#039;),&lt;br /&gt;
        message = $(&amp;#039;#msg&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    submitContact.on(&amp;#039;click&amp;#039;, function(e){&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
&lt;br /&gt;
        var $this = $(this);&lt;br /&gt;
        &lt;br /&gt;
        $.ajax({&lt;br /&gt;
            type: &amp;quot;POST&amp;quot;,&lt;br /&gt;
            url: &amp;#039;contact.php&amp;#039;,&lt;br /&gt;
            dataType: &amp;#039;json&amp;#039;,&lt;br /&gt;
            cache: false,&lt;br /&gt;
            data: $(&amp;#039;#contact-form&amp;#039;).serialize(),&lt;br /&gt;
            success: function(data) {&lt;br /&gt;
&lt;br /&gt;
                if(data.info !== &amp;#039;error&amp;#039;){&lt;br /&gt;
                    $this.parents(&amp;#039;form&amp;#039;).find(&amp;#039;input[type=text],input[type=email],textarea,select&amp;#039;).filter(&amp;#039;:visible&amp;#039;).val(&amp;#039;&amp;#039;);&lt;br /&gt;
                    message.hide().removeClass(&amp;#039;success&amp;#039;).removeClass(&amp;#039;error&amp;#039;).addClass(&amp;#039;success&amp;#039;).html(data.msg).fadeIn(&amp;#039;slow&amp;#039;).delay(5000).fadeOut(&amp;#039;slow&amp;#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    message.hide().removeClass(&amp;#039;success&amp;#039;).removeClass(&amp;#039;error&amp;#039;).addClass(&amp;#039;error&amp;#039;).html(data.msg).fadeIn(&amp;#039;slow&amp;#039;).delay(5000).fadeOut(&amp;#039;slow&amp;#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=PHP_-_Mailformular&amp;diff=23368</id>
		<title>PHP - Mailformular</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=PHP_-_Mailformular&amp;diff=23368"/>
		<updated>2018-10-11T05:10:11Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: Die Seite wurde neu angelegt: „Siehe auch (TODO)  == Libs == Todo -&amp;gt; PHP-Mailer etc...  == Beispiele == === Beispiel1 (Lifekinetik) === &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt; &amp;lt;?php 	if($_POST) {  		$t…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Siehe auch (TODO)&lt;br /&gt;
&lt;br /&gt;
== Libs ==&lt;br /&gt;
Todo -&amp;gt; PHP-Mailer etc...&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
=== Beispiel1 (Lifekinetik) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
	if($_POST) {&lt;br /&gt;
&lt;br /&gt;
		$to = &amp;quot;info@angelajochum.de&amp;quot;; // Your email here&lt;br /&gt;
		$subject = &amp;#039;Nachricht von angelajochum.de&amp;#039;; // Standard Subject&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Send mail function&lt;br /&gt;
	function send_mail($to,$subject,$message,$headers){&lt;br /&gt;
		if(@mail($to,$subject,$message,$headers)){&lt;br /&gt;
			echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;success&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Ihre Nachricht wurde versandt. Vielen Dank.&amp;quot;));&lt;br /&gt;
		} else {&lt;br /&gt;
			echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Fehler, ihre Nachricht konnte nicht versendet werden.&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Check if $_POST vars are set&lt;br /&gt;
	if(!isset($_POST[&amp;#039;name&amp;#039;]) || !isset($_POST[&amp;#039;mail&amp;#039;]) || !isset($_POST[&amp;#039;comment&amp;#039;])){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;#039;Bitte füllen Sie alle Felder aus.&amp;#039;));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Sanitize input data, remove all illegal characters&lt;br /&gt;
	$name    = filter_var($_POST[&amp;#039;name&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$mail    = filter_var($_POST[&amp;#039;mail&amp;#039;], FILTER_SANITIZE_EMAIL);&lt;br /&gt;
	$subject = filter_var($_POST[&amp;#039;subject&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$website = filter_var($_POST[&amp;#039;website&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
	$comment = filter_var($_POST[&amp;#039;comment&amp;#039;], FILTER_SANITIZE_STRING);&lt;br /&gt;
&lt;br /&gt;
	//Validation&lt;br /&gt;
	if($name == &amp;#039;&amp;#039;) {&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben Sie Ihren Namen ein..&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
	if(!filter_var($mail, FILTER_VALIDATE_EMAIL)){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben sie eine gültige E-Mail Adresse ein.&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
	if($comment == &amp;#039;&amp;#039;){&lt;br /&gt;
		echo json_encode(array(&amp;#039;info&amp;#039; =&amp;gt; &amp;#039;error&amp;#039;, &amp;#039;msg&amp;#039; =&amp;gt; &amp;quot;Bitte geben sie Ihre Nachricht ein.&amp;quot;));&lt;br /&gt;
		exit();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Send Mail&lt;br /&gt;
	$headers = &amp;#039;From: &amp;#039; . $mail .&amp;#039;&amp;#039;. &amp;quot;\r\n&amp;quot;.&lt;br /&gt;
	&amp;#039;Reply-To: &amp;#039;.$mail.&amp;#039;&amp;#039; . &amp;quot;\r\n&amp;quot; .&lt;br /&gt;
	&amp;#039;X-Mailer: PHP/&amp;#039; . phpversion();&lt;br /&gt;
&lt;br /&gt;
	send_mail($to, $subject, $comment . &amp;quot;\r\n\n&amp;quot;  .&amp;#039;Name: &amp;#039;.$name. &amp;quot;\r\n&amp;quot; .&amp;#039;E-Mail: &amp;#039;.$mail, $headers);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form id=&amp;quot;contact-form&amp;quot; action=&amp;quot;#&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div class=&amp;quot;row contact-row&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;col-md-6 contact-name&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;input name=&amp;quot;name&amp;quot; id=&amp;quot;name&amp;quot; placeholder=&amp;quot;Name*&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;col-md-6 contact-email&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;input name=&amp;quot;mail&amp;quot; id=&amp;quot;mail&amp;quot; placeholder=&amp;quot;E-Mail*&amp;quot; type=&amp;quot;email&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;input name=&amp;quot;subject&amp;quot; id=&amp;quot;subject&amp;quot; placeholder=&amp;quot;Betreff&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;textarea name=&amp;quot;comment&amp;quot; id=&amp;quot;comment&amp;quot; placeholder=&amp;quot;Ihre Nachricht&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
              &amp;lt;div class=&amp;quot;col-md-12&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;DATENSCHUTZHINWEIS&amp;lt;br&amp;gt;&lt;br /&gt;
                  Mit meiner Kontaktaufnahme willige ich ein, dass meine Daten gespeichert und zur Bearbeitung meiner Anfrage/Kontaktaufnahme&lt;br /&gt;
                  sowie für die Zusendung von Informationsmaterial genutzt werden. Eine Weiterleitung an Dritte ist ausgeschlossen.&lt;br /&gt;
                  Diese Einwilligung kann jederzeit widerrufen werden.&amp;lt;br&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
                &amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;input class=&amp;quot;btn btn-lg btn-color btn-submit&amp;quot; value=&amp;quot;Absenden&amp;quot; id=&amp;quot;submit-message&amp;quot; type=&amp;quot;submit&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div id=&amp;quot;msg&amp;quot; class=&amp;quot;message success&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;Ihre Nachricht wurde versandt. Vielen Dank.&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Formulare&amp;diff=23367</id>
		<title>ProcessWire - Formulare</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Formulare&amp;diff=23367"/>
		<updated>2018-10-10T12:28:19Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
 https://processwire.com/talk/topic/2089-create-simple-forms-using-api/ von Soma&lt;br /&gt;
 https://processwire.com/talk/topic/14206-contact-form-tutorial/ Mit Google ReCaptcha&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
=== Soma Beispiel ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$out = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
// create a new form field (also field wrapper)&lt;br /&gt;
$form = $modules-&amp;gt;get(&amp;quot;InputfieldForm&amp;quot;);&lt;br /&gt;
$form-&amp;gt;action = &amp;quot;./&amp;quot;;&lt;br /&gt;
$form-&amp;gt;method = &amp;quot;post&amp;quot;;&lt;br /&gt;
$form-&amp;gt;attr(&amp;quot;id+name&amp;quot;,&amp;#039;subscribe-form&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// create a text input&lt;br /&gt;
$field = $modules-&amp;gt;get(&amp;quot;InputfieldText&amp;quot;);&lt;br /&gt;
$field-&amp;gt;label = &amp;quot;Name&amp;quot;;&lt;br /&gt;
$field-&amp;gt;attr(&amp;#039;id+name&amp;#039;,&amp;#039;name&amp;#039;);&lt;br /&gt;
$field-&amp;gt;required = 1;&lt;br /&gt;
$form-&amp;gt;append($field); // append the field to the form&lt;br /&gt;
&lt;br /&gt;
// create email field&lt;br /&gt;
$field = $modules-&amp;gt;get(&amp;quot;InputfieldEmail&amp;quot;);&lt;br /&gt;
$field-&amp;gt;label = &amp;quot;E-Mail&amp;quot;;&lt;br /&gt;
$field-&amp;gt;attr(&amp;#039;id+name&amp;#039;,&amp;#039;email&amp;#039;);&lt;br /&gt;
$field-&amp;gt;required = 1;&lt;br /&gt;
$form-&amp;gt;append($field); // append the field&lt;br /&gt;
&lt;br /&gt;
// you get the idea&lt;br /&gt;
$field = $modules-&amp;gt;get(&amp;quot;InputfieldPassword&amp;quot;);&lt;br /&gt;
$field-&amp;gt;label = &amp;quot;Passwort&amp;quot;;&lt;br /&gt;
$field-&amp;gt;attr(&amp;quot;id+name&amp;quot;,&amp;quot;pass&amp;quot;);&lt;br /&gt;
$field-&amp;gt;required = 1;&lt;br /&gt;
$form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
// oh a submit button!&lt;br /&gt;
$submit = $modules-&amp;gt;get(&amp;quot;InputfieldSubmit&amp;quot;);&lt;br /&gt;
$submit-&amp;gt;attr(&amp;quot;value&amp;quot;,&amp;quot;Subscribe&amp;quot;);&lt;br /&gt;
$submit-&amp;gt;attr(&amp;quot;id+name&amp;quot;,&amp;quot;submit&amp;quot;);&lt;br /&gt;
$form-&amp;gt;append($submit);&lt;br /&gt;
&lt;br /&gt;
// form was submitted so we process the form&lt;br /&gt;
if($input-&amp;gt;post-&amp;gt;submit) {&lt;br /&gt;
&lt;br /&gt;
    // user submitted the form, process it and check for errors&lt;br /&gt;
    $form-&amp;gt;processInput($input-&amp;gt;post);&lt;br /&gt;
&lt;br /&gt;
    // here is a good point for extra/custom validation and manipulate fields&lt;br /&gt;
    $email = $form-&amp;gt;get(&amp;quot;email&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if($email &amp;amp;&amp;amp; (strpos($email-&amp;gt;value,&amp;#039;@hotmail&amp;#039;) !== FALSE)){        // attach an error to the field&lt;br /&gt;
        // and it will get displayed along the field&lt;br /&gt;
        $email-&amp;gt;error(&amp;quot;Sorry we don&amp;#039;t accept hotmail addresses for now.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if($form-&amp;gt;getErrors()) {&lt;br /&gt;
        // the form is processed and populated&lt;br /&gt;
        // but contains errors&lt;br /&gt;
        $out .= $form-&amp;gt;render();&lt;br /&gt;
    } else {&lt;br /&gt;
&lt;br /&gt;
        // do with the form what you like, create and save it as page&lt;br /&gt;
        // or send emails. to get the values you can use&lt;br /&gt;
        // $email = $form-&amp;gt;get(&amp;quot;email&amp;quot;)-&amp;gt;value;&lt;br /&gt;
        // $name = $form-&amp;gt;get(&amp;quot;name&amp;quot;)-&amp;gt;value;&lt;br /&gt;
        // $pass = $form-&amp;gt;get(&amp;quot;pass&amp;quot;)-&amp;gt;value;&lt;br /&gt;
        //&lt;br /&gt;
        // to sanitize input&lt;br /&gt;
        // $name = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;name);&lt;br /&gt;
        // $email = $sanitizer-&amp;gt;email($form-&amp;gt;get(&amp;quot;email&amp;quot;)-&amp;gt;value);&lt;br /&gt;
&lt;br /&gt;
        $out .= &amp;quot;&amp;lt;p&amp;gt;Thanks! Your submission was successful.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
} else {&lt;br /&gt;
    // render out form without processing&lt;br /&gt;
    $out .= $form-&amp;gt;render();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
include(&amp;quot;./head.inc&amp;quot;);&lt;br /&gt;
echo $out;&lt;br /&gt;
include(&amp;quot;./foot.inc&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einfaches Formular (ohne Spamschutz)===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php namespace ProcessWire;&lt;br /&gt;
&lt;br /&gt;
function renderContactForm($backend_email, $subject) {&lt;br /&gt;
  $out = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  $modules = wire(&amp;#039;modules&amp;#039;); // get access to pw modules object&lt;br /&gt;
  $input = wire(&amp;#039;input&amp;#039;);&lt;br /&gt;
  $sanitizer = wire(&amp;#039;sanitizer&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
  // Create the new &amp;lt;form&amp;gt;&lt;br /&gt;
  $form = $modules-&amp;gt;get(&amp;quot;InputfieldForm&amp;quot;); // get InputfieldForm Object&lt;br /&gt;
  $form-&amp;gt;action = &amp;quot;./&amp;quot;;&lt;br /&gt;
  $form-&amp;gt;method = &amp;quot;post&amp;quot;;&lt;br /&gt;
  $form-&amp;gt;attr(&amp;quot;id+name&amp;quot;,&amp;#039;contact-form&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	// Set markup for form elements&lt;br /&gt;
  $form-&amp;gt;setMarkup(array(&lt;br /&gt;
    &amp;#039;list&amp;#039; =&amp;gt; &amp;quot;&amp;lt;div {attrs}&amp;gt;{out}&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item&amp;#039; =&amp;gt; &amp;quot;&amp;lt;div {attrs}&amp;gt;{out}&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
    //&amp;#039;item_label&amp;#039; =&amp;gt; &amp;quot;&amp;lt;label for=&amp;#039;{for}&amp;#039;&amp;gt;{out}&amp;lt;/label&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_label&amp;#039; =&amp;gt; &amp;quot;&amp;quot;, // no label markup for this form&lt;br /&gt;
    &amp;#039;item_content&amp;#039; =&amp;gt; &amp;quot;{out}&amp;quot;,&lt;br /&gt;
    &amp;#039;item_error&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p class=\&amp;quot;error\&amp;quot;&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_description&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_head&amp;#039; =&amp;gt; &amp;quot;&amp;lt;h2&amp;gt;{out}&amp;lt;/h2&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_notes&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p class=&amp;#039;notes&amp;#039;&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
  ));&lt;br /&gt;
&lt;br /&gt;
	// Set classes for form elements&lt;br /&gt;
  $form-&amp;gt;setClasses(array(&lt;br /&gt;
    &amp;#039;list&amp;#039; =&amp;gt; &amp;#039;form-list&amp;#039;,&lt;br /&gt;
    &amp;#039;list_clearfix&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item&amp;#039; =&amp;gt; &amp;#039;{class}&amp;#039;,&lt;br /&gt;
    &amp;#039;item_required&amp;#039; =&amp;gt; &amp;#039;required&amp;#039;,&lt;br /&gt;
    &amp;#039;item_error&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_collapsed&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_column_width&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_column_width_first&amp;#039; =&amp;gt; &amp;#039;&amp;#039;&lt;br /&gt;
  ));&lt;br /&gt;
&lt;br /&gt;
	// New field: First name&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldText&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Name&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;name&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihr Name&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: E-Mail&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldEmail&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;E-mail&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;email&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre E-Mail Adresse&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: Phone&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldText&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Telefon&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;phone&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre Telefonnummer&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: Message&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldTextarea&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Nachricht&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;message&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre Nachricht&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;textarea&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // SUBMIT button!&lt;br /&gt;
  $submit = $modules-&amp;gt;get(&amp;quot;InputfieldSubmit&amp;quot;);&lt;br /&gt;
  $submit-&amp;gt;attr(&amp;quot;id+name&amp;quot;, &amp;quot;submit&amp;quot;);&lt;br /&gt;
  $submit-&amp;gt;attr(&amp;quot;class&amp;quot;, &amp;quot;submit&amp;quot;);&lt;br /&gt;
  $form-&amp;gt;append($submit);&lt;br /&gt;
&lt;br /&gt;
  // POST request, process the form&lt;br /&gt;
  if($input-&amp;gt;post-&amp;gt;submit) {&lt;br /&gt;
      $form-&amp;gt;processInput($input-&amp;gt;post);&lt;br /&gt;
&lt;br /&gt;
      $name = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;firstname);&lt;br /&gt;
      $email = $sanitizer-&amp;gt;email($input-&amp;gt;post-&amp;gt;email);&lt;br /&gt;
      $message = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;message);&lt;br /&gt;
      $phone = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;phone);&lt;br /&gt;
&lt;br /&gt;
      // ERRORS...&lt;br /&gt;
      if($form-&amp;gt;getErrors()) {&lt;br /&gt;
        $out .= $form-&amp;gt;render();&lt;br /&gt;
      } else {&lt;br /&gt;
        // FORM OK...&lt;br /&gt;
      	// Process the form here!&lt;br /&gt;
&lt;br /&gt;
        $mail = wireMail();&lt;br /&gt;
        $mail-&amp;gt;to($backend_email)-&amp;gt;from($email);&lt;br /&gt;
        $mail-&amp;gt;subject($subject);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $body = &amp;quot;Name: &amp;quot; . $firstname . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;E-Mail: &amp;quot; . $email . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;Telefon: &amp;quot; . $phone . &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;Nachricht:\n&amp;quot; . $message;&lt;br /&gt;
&lt;br /&gt;
        $mail-&amp;gt;body($body);&lt;br /&gt;
&lt;br /&gt;
        echo &amp;#039;&amp;lt;pre&amp;gt;&amp;#039;.$body.&amp;#039;&amp;lt;/pre&amp;gt;&amp;#039;;&lt;br /&gt;
        $numSent = $mail-&amp;gt;send();&lt;br /&gt;
&lt;br /&gt;
        $out .= &amp;#039;&amp;lt;p&amp;gt;&amp;#039;.__(&amp;quot;Vielen Dank für Ihre Nachricht! Wir melden uns so bald wie möglich.&amp;quot;).&amp;#039;&amp;lt;/p&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
      }&lt;br /&gt;
  } else {&lt;br /&gt;
      // GET request, simply show the form&lt;br /&gt;
      $out .= $form-&amp;gt;render();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return $out;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Formulare&amp;diff=23366</id>
		<title>ProcessWire - Formulare</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Formulare&amp;diff=23366"/>
		<updated>2018-10-10T12:18:26Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
 https://processwire.com/talk/topic/2089-create-simple-forms-using-api/ von Soma&lt;br /&gt;
 https://processwire.com/talk/topic/14206-contact-form-tutorial/ Mit Google ReCaptcha&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Einfaches Formular (ohne Spamschutz)===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php namespace ProcessWire;&lt;br /&gt;
&lt;br /&gt;
function renderContactForm($backend_email, $subject) {&lt;br /&gt;
  $out = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  $modules = wire(&amp;#039;modules&amp;#039;); // get access to pw modules object&lt;br /&gt;
  $input = wire(&amp;#039;input&amp;#039;);&lt;br /&gt;
  $sanitizer = wire(&amp;#039;sanitizer&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
  // Create the new &amp;lt;form&amp;gt;&lt;br /&gt;
  $form = $modules-&amp;gt;get(&amp;quot;InputfieldForm&amp;quot;); // get InputfieldForm Object&lt;br /&gt;
  $form-&amp;gt;action = &amp;quot;./&amp;quot;;&lt;br /&gt;
  $form-&amp;gt;method = &amp;quot;post&amp;quot;;&lt;br /&gt;
  $form-&amp;gt;attr(&amp;quot;id+name&amp;quot;,&amp;#039;contact-form&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	// Set markup for form elements&lt;br /&gt;
  $form-&amp;gt;setMarkup(array(&lt;br /&gt;
    &amp;#039;list&amp;#039; =&amp;gt; &amp;quot;&amp;lt;div {attrs}&amp;gt;{out}&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item&amp;#039; =&amp;gt; &amp;quot;&amp;lt;div {attrs}&amp;gt;{out}&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
    //&amp;#039;item_label&amp;#039; =&amp;gt; &amp;quot;&amp;lt;label for=&amp;#039;{for}&amp;#039;&amp;gt;{out}&amp;lt;/label&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_label&amp;#039; =&amp;gt; &amp;quot;&amp;quot;, // no label markup for this form&lt;br /&gt;
    &amp;#039;item_content&amp;#039; =&amp;gt; &amp;quot;{out}&amp;quot;,&lt;br /&gt;
    &amp;#039;item_error&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p class=\&amp;quot;error\&amp;quot;&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_description&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_head&amp;#039; =&amp;gt; &amp;quot;&amp;lt;h2&amp;gt;{out}&amp;lt;/h2&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_notes&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p class=&amp;#039;notes&amp;#039;&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
  ));&lt;br /&gt;
&lt;br /&gt;
	// Set classes for form elements&lt;br /&gt;
  $form-&amp;gt;setClasses(array(&lt;br /&gt;
    &amp;#039;list&amp;#039; =&amp;gt; &amp;#039;form-list&amp;#039;,&lt;br /&gt;
    &amp;#039;list_clearfix&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item&amp;#039; =&amp;gt; &amp;#039;{class}&amp;#039;,&lt;br /&gt;
    &amp;#039;item_required&amp;#039; =&amp;gt; &amp;#039;required&amp;#039;,&lt;br /&gt;
    &amp;#039;item_error&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_collapsed&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_column_width&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_column_width_first&amp;#039; =&amp;gt; &amp;#039;&amp;#039;&lt;br /&gt;
  ));&lt;br /&gt;
&lt;br /&gt;
	// New field: First name&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldText&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Name&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;name&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihr Name&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: E-Mail&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldEmail&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;E-mail&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;email&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre E-Mail Adresse&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: Phone&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldText&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Telefon&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;phone&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre Telefonnummer&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: Message&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldTextarea&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Nachricht&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;message&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre Nachricht&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;textarea&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // SUBMIT button!&lt;br /&gt;
  $submit = $modules-&amp;gt;get(&amp;quot;InputfieldSubmit&amp;quot;);&lt;br /&gt;
  $submit-&amp;gt;attr(&amp;quot;id+name&amp;quot;, &amp;quot;submit&amp;quot;);&lt;br /&gt;
  $submit-&amp;gt;attr(&amp;quot;class&amp;quot;, &amp;quot;submit&amp;quot;);&lt;br /&gt;
  $form-&amp;gt;append($submit);&lt;br /&gt;
&lt;br /&gt;
  // POST request, process the form&lt;br /&gt;
  if($input-&amp;gt;post-&amp;gt;submit) {&lt;br /&gt;
      $form-&amp;gt;processInput($input-&amp;gt;post);&lt;br /&gt;
&lt;br /&gt;
      $name = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;firstname);&lt;br /&gt;
      $email = $sanitizer-&amp;gt;email($input-&amp;gt;post-&amp;gt;email);&lt;br /&gt;
      $message = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;message);&lt;br /&gt;
      $phone = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;phone);&lt;br /&gt;
&lt;br /&gt;
      // ERRORS...&lt;br /&gt;
      if($form-&amp;gt;getErrors()) {&lt;br /&gt;
        $out .= $form-&amp;gt;render();&lt;br /&gt;
      } else {&lt;br /&gt;
        // FORM OK...&lt;br /&gt;
      	// Process the form here!&lt;br /&gt;
&lt;br /&gt;
        $mail = wireMail();&lt;br /&gt;
        $mail-&amp;gt;to($backend_email)-&amp;gt;from($email);&lt;br /&gt;
        $mail-&amp;gt;subject($subject);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $body = &amp;quot;Name: &amp;quot; . $firstname . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;E-Mail: &amp;quot; . $email . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;Telefon: &amp;quot; . $phone . &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;Nachricht:\n&amp;quot; . $message;&lt;br /&gt;
&lt;br /&gt;
        $mail-&amp;gt;body($body);&lt;br /&gt;
&lt;br /&gt;
        echo &amp;#039;&amp;lt;pre&amp;gt;&amp;#039;.$body.&amp;#039;&amp;lt;/pre&amp;gt;&amp;#039;;&lt;br /&gt;
        $numSent = $mail-&amp;gt;send();&lt;br /&gt;
&lt;br /&gt;
        $out .= &amp;#039;&amp;lt;p&amp;gt;&amp;#039;.__(&amp;quot;Vielen Dank für Ihre Nachricht! Wir melden uns so bald wie möglich.&amp;quot;).&amp;#039;&amp;lt;/p&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
      }&lt;br /&gt;
  } else {&lt;br /&gt;
      // GET request, simply show the form&lt;br /&gt;
      $out .= $form-&amp;gt;render();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return $out;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Formulare&amp;diff=23365</id>
		<title>ProcessWire - Formulare</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Formulare&amp;diff=23365"/>
		<updated>2018-10-10T12:17:36Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: /* Einfaches Formular (ohne Spamschutz) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
&lt;br /&gt;
 https://processwire.com/talk/topic/14206-contact-form-tutorial/ Mit Google ReCaptcha&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Einfaches Formular (ohne Spamschutz)===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php namespace ProcessWire;&lt;br /&gt;
&lt;br /&gt;
function renderContactForm($backend_email, $subject) {&lt;br /&gt;
  $out = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  $modules = wire(&amp;#039;modules&amp;#039;); // get access to pw modules object&lt;br /&gt;
  $input = wire(&amp;#039;input&amp;#039;);&lt;br /&gt;
  $sanitizer = wire(&amp;#039;sanitizer&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
  // Create the new &amp;lt;form&amp;gt;&lt;br /&gt;
  $form = $modules-&amp;gt;get(&amp;quot;InputfieldForm&amp;quot;); // get InputfieldForm Object&lt;br /&gt;
  $form-&amp;gt;action = &amp;quot;./&amp;quot;;&lt;br /&gt;
  $form-&amp;gt;method = &amp;quot;post&amp;quot;;&lt;br /&gt;
  $form-&amp;gt;attr(&amp;quot;id+name&amp;quot;,&amp;#039;contact-form&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	// Set markup for form elements&lt;br /&gt;
  $form-&amp;gt;setMarkup(array(&lt;br /&gt;
    &amp;#039;list&amp;#039; =&amp;gt; &amp;quot;&amp;lt;div {attrs}&amp;gt;{out}&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item&amp;#039; =&amp;gt; &amp;quot;&amp;lt;div {attrs}&amp;gt;{out}&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
    //&amp;#039;item_label&amp;#039; =&amp;gt; &amp;quot;&amp;lt;label for=&amp;#039;{for}&amp;#039;&amp;gt;{out}&amp;lt;/label&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_label&amp;#039; =&amp;gt; &amp;quot;&amp;quot;, // no label markup for this form&lt;br /&gt;
    &amp;#039;item_content&amp;#039; =&amp;gt; &amp;quot;{out}&amp;quot;,&lt;br /&gt;
    &amp;#039;item_error&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p class=\&amp;quot;error\&amp;quot;&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_description&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_head&amp;#039; =&amp;gt; &amp;quot;&amp;lt;h2&amp;gt;{out}&amp;lt;/h2&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_notes&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p class=&amp;#039;notes&amp;#039;&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
  ));&lt;br /&gt;
&lt;br /&gt;
	// Set classes for form elements&lt;br /&gt;
  $form-&amp;gt;setClasses(array(&lt;br /&gt;
    &amp;#039;list&amp;#039; =&amp;gt; &amp;#039;form-list&amp;#039;,&lt;br /&gt;
    &amp;#039;list_clearfix&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item&amp;#039; =&amp;gt; &amp;#039;{class}&amp;#039;,&lt;br /&gt;
    &amp;#039;item_required&amp;#039; =&amp;gt; &amp;#039;required&amp;#039;,&lt;br /&gt;
    &amp;#039;item_error&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_collapsed&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_column_width&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_column_width_first&amp;#039; =&amp;gt; &amp;#039;&amp;#039;&lt;br /&gt;
  ));&lt;br /&gt;
&lt;br /&gt;
	// New field: First name&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldText&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Name&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;name&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihr Name&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: E-Mail&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldEmail&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;E-mail&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;email&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre E-Mail Adresse&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: Phone&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldText&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Telefon&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;phone&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre Telefonnummer&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: Message&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldTextarea&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Nachricht&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;message&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre Nachricht&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;textarea&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // SUBMIT button!&lt;br /&gt;
  $submit = $modules-&amp;gt;get(&amp;quot;InputfieldSubmit&amp;quot;);&lt;br /&gt;
  $submit-&amp;gt;attr(&amp;quot;id+name&amp;quot;, &amp;quot;submit&amp;quot;);&lt;br /&gt;
  $submit-&amp;gt;attr(&amp;quot;class&amp;quot;, &amp;quot;submit&amp;quot;);&lt;br /&gt;
  $form-&amp;gt;append($submit);&lt;br /&gt;
&lt;br /&gt;
  // POST request, process the form&lt;br /&gt;
  if($input-&amp;gt;post-&amp;gt;submit) {&lt;br /&gt;
      $form-&amp;gt;processInput($input-&amp;gt;post);&lt;br /&gt;
&lt;br /&gt;
      $name = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;firstname);&lt;br /&gt;
      $email = $sanitizer-&amp;gt;email($input-&amp;gt;post-&amp;gt;email);&lt;br /&gt;
      $message = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;message);&lt;br /&gt;
      $phone = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;phone);&lt;br /&gt;
&lt;br /&gt;
      // ERRORS...&lt;br /&gt;
      if($form-&amp;gt;getErrors()) {&lt;br /&gt;
        $out .= $form-&amp;gt;render();&lt;br /&gt;
      } else {&lt;br /&gt;
        // FORM OK...&lt;br /&gt;
      	// Process the form here!&lt;br /&gt;
&lt;br /&gt;
        $mail = wireMail();&lt;br /&gt;
        $mail-&amp;gt;to($backend_email)-&amp;gt;from($email);&lt;br /&gt;
        $mail-&amp;gt;subject($subject);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $body = &amp;quot;Name: &amp;quot; . $firstname . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;E-Mail: &amp;quot; . $email . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;Telefon: &amp;quot; . $phone . &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;Nachricht:\n&amp;quot; . $message;&lt;br /&gt;
&lt;br /&gt;
        $mail-&amp;gt;body($body);&lt;br /&gt;
&lt;br /&gt;
        echo &amp;#039;&amp;lt;pre&amp;gt;&amp;#039;.$body.&amp;#039;&amp;lt;/pre&amp;gt;&amp;#039;;&lt;br /&gt;
        $numSent = $mail-&amp;gt;send();&lt;br /&gt;
&lt;br /&gt;
        $out .= &amp;#039;&amp;lt;p&amp;gt;&amp;#039;.__(&amp;quot;Vielen Dank für Ihre Nachricht! Wir melden uns so bald wie möglich.&amp;quot;).&amp;#039;&amp;lt;/p&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
      }&lt;br /&gt;
  } else {&lt;br /&gt;
      // GET request, simply show the form&lt;br /&gt;
      $out .= $form-&amp;gt;render();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return $out;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Formulare&amp;diff=23364</id>
		<title>ProcessWire - Formulare</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Formulare&amp;diff=23364"/>
		<updated>2018-10-10T12:17:05Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: Die Seite wurde neu angelegt: „== Links ==   https://processwire.com/talk/topic/14206-contact-form-tutorial/ Mit Google ReCaptcha == Beispiele ==  === Einfaches Formular (ohne Spamschutz)===…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
&lt;br /&gt;
 https://processwire.com/talk/topic/14206-contact-form-tutorial/ Mit Google ReCaptcha&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Einfaches Formular (ohne Spamschutz)===&lt;br /&gt;
&amp;lt;?php namespace ProcessWire;&lt;br /&gt;
&lt;br /&gt;
function renderContactForm($backend_email, $subject) {&lt;br /&gt;
  $out = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  $modules = wire(&amp;#039;modules&amp;#039;); // get access to pw modules object&lt;br /&gt;
  $input = wire(&amp;#039;input&amp;#039;);&lt;br /&gt;
  $sanitizer = wire(&amp;#039;sanitizer&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
  // Create the new &amp;lt;form&amp;gt;&lt;br /&gt;
  $form = $modules-&amp;gt;get(&amp;quot;InputfieldForm&amp;quot;); // get InputfieldForm Object&lt;br /&gt;
  $form-&amp;gt;action = &amp;quot;./&amp;quot;;&lt;br /&gt;
  $form-&amp;gt;method = &amp;quot;post&amp;quot;;&lt;br /&gt;
  $form-&amp;gt;attr(&amp;quot;id+name&amp;quot;,&amp;#039;contact-form&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	// Set markup for form elements&lt;br /&gt;
  $form-&amp;gt;setMarkup(array(&lt;br /&gt;
    &amp;#039;list&amp;#039; =&amp;gt; &amp;quot;&amp;lt;div {attrs}&amp;gt;{out}&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item&amp;#039; =&amp;gt; &amp;quot;&amp;lt;div {attrs}&amp;gt;{out}&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
    //&amp;#039;item_label&amp;#039; =&amp;gt; &amp;quot;&amp;lt;label for=&amp;#039;{for}&amp;#039;&amp;gt;{out}&amp;lt;/label&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_label&amp;#039; =&amp;gt; &amp;quot;&amp;quot;, // no label markup for this form&lt;br /&gt;
    &amp;#039;item_content&amp;#039; =&amp;gt; &amp;quot;{out}&amp;quot;,&lt;br /&gt;
    &amp;#039;item_error&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p class=\&amp;quot;error\&amp;quot;&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_description&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_head&amp;#039; =&amp;gt; &amp;quot;&amp;lt;h2&amp;gt;{out}&amp;lt;/h2&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;#039;item_notes&amp;#039; =&amp;gt; &amp;quot;&amp;lt;p class=&amp;#039;notes&amp;#039;&amp;gt;{out}&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
  ));&lt;br /&gt;
&lt;br /&gt;
	// Set classes for form elements&lt;br /&gt;
  $form-&amp;gt;setClasses(array(&lt;br /&gt;
    &amp;#039;list&amp;#039; =&amp;gt; &amp;#039;form-list&amp;#039;,&lt;br /&gt;
    &amp;#039;list_clearfix&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item&amp;#039; =&amp;gt; &amp;#039;{class}&amp;#039;,&lt;br /&gt;
    &amp;#039;item_required&amp;#039; =&amp;gt; &amp;#039;required&amp;#039;,&lt;br /&gt;
    &amp;#039;item_error&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_collapsed&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_column_width&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    &amp;#039;item_column_width_first&amp;#039; =&amp;gt; &amp;#039;&amp;#039;&lt;br /&gt;
  ));&lt;br /&gt;
&lt;br /&gt;
	// New field: First name&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldText&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Name&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;name&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihr Name&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: E-Mail&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldEmail&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;E-mail&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;email&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre E-Mail Adresse&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: Phone&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldText&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Telefon&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;phone&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre Telefonnummer&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;text&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
	// New field: Message&lt;br /&gt;
  $field = $modules-&amp;gt;get(&amp;quot;InputfieldTextarea&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;label = __(&amp;quot;Nachricht&amp;quot;);&lt;br /&gt;
  $field-&amp;gt;attr([&lt;br /&gt;
    &amp;#039;id+name&amp;#039; =&amp;gt; &amp;#039;message&amp;#039;,&lt;br /&gt;
    &amp;#039;placeholder&amp;#039; =&amp;gt; &amp;#039;Ihre Nachricht&amp;#039;,&lt;br /&gt;
    &amp;#039;class&amp;#039; =&amp;gt; &amp;#039;textarea&amp;#039;&lt;br /&gt;
    ]);&lt;br /&gt;
  $field-&amp;gt;required = 1;&lt;br /&gt;
  $form-&amp;gt;append($field);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // SUBMIT button!&lt;br /&gt;
  $submit = $modules-&amp;gt;get(&amp;quot;InputfieldSubmit&amp;quot;);&lt;br /&gt;
  $submit-&amp;gt;attr(&amp;quot;id+name&amp;quot;, &amp;quot;submit&amp;quot;);&lt;br /&gt;
  $submit-&amp;gt;attr(&amp;quot;class&amp;quot;, &amp;quot;submit&amp;quot;);&lt;br /&gt;
  $form-&amp;gt;append($submit);&lt;br /&gt;
&lt;br /&gt;
  // POST request, process the form&lt;br /&gt;
  if($input-&amp;gt;post-&amp;gt;submit) {&lt;br /&gt;
      $form-&amp;gt;processInput($input-&amp;gt;post);&lt;br /&gt;
&lt;br /&gt;
      $name = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;firstname);&lt;br /&gt;
      $email = $sanitizer-&amp;gt;email($input-&amp;gt;post-&amp;gt;email);&lt;br /&gt;
      $message = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;message);&lt;br /&gt;
      $phone = $sanitizer-&amp;gt;text($input-&amp;gt;post-&amp;gt;phone);&lt;br /&gt;
&lt;br /&gt;
      // ERRORS...&lt;br /&gt;
      if($form-&amp;gt;getErrors()) {&lt;br /&gt;
        $out .= $form-&amp;gt;render();&lt;br /&gt;
      } else {&lt;br /&gt;
        // FORM OK...&lt;br /&gt;
      	// Process the form here!&lt;br /&gt;
&lt;br /&gt;
        $mail = wireMail();&lt;br /&gt;
        $mail-&amp;gt;to($backend_email)-&amp;gt;from($email);&lt;br /&gt;
        $mail-&amp;gt;subject($subject);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $body = &amp;quot;Name: &amp;quot; . $firstname . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;E-Mail: &amp;quot; . $email . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;Telefon: &amp;quot; . $phone . &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
        $body .= &amp;quot;Nachricht:\n&amp;quot; . $message;&lt;br /&gt;
&lt;br /&gt;
        $mail-&amp;gt;body($body);&lt;br /&gt;
&lt;br /&gt;
        echo &amp;#039;&amp;lt;pre&amp;gt;&amp;#039;.$body.&amp;#039;&amp;lt;/pre&amp;gt;&amp;#039;;&lt;br /&gt;
        $numSent = $mail-&amp;gt;send();&lt;br /&gt;
&lt;br /&gt;
        $out .= &amp;#039;&amp;lt;p&amp;gt;&amp;#039;.__(&amp;quot;Vielen Dank für Ihre Nachricht! Wir melden uns so bald wie möglich.&amp;quot;).&amp;#039;&amp;lt;/p&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
      }&lt;br /&gt;
  } else {&lt;br /&gt;
      // GET request, simply show the form&lt;br /&gt;
      $out .= $form-&amp;gt;render();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return $out;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Seitenstatus&amp;diff=23363</id>
		<title>ProcessWire - Seitenstatus</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Seitenstatus&amp;diff=23363"/>
		<updated>2018-10-10T11:38:41Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auf den ersten Blick verwirrend ist der Seitenstatus bzw. die verschiedenen Optionen die es in den Seiteneinstellungen gibt.&lt;br /&gt;
&lt;br /&gt;
Siehe auch hier: http://wiki.zone30.info/wikizone/index.php?title=ProcessWire_-_Navigation_Snippets#Unterschiede_zwischen_Verstecken.2C_Ver.C3.B6ffentlichen.2C_Sperren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Published (Veröffentlicht) -&amp;gt; Nicht veröffentlichte können für bestimmte Besucher erreicht werden.&lt;br /&gt;
Hidden (Versteckt -&amp;gt; taucht nicht in Suchen mit Selektoren auf.)&lt;br /&gt;
Locked (Backendbearbeitung gesperrt)&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Navigation_Snippets&amp;diff=23362</id>
		<title>ProcessWire - Navigation Snippets</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Navigation_Snippets&amp;diff=23362"/>
		<updated>2018-10-10T11:37:31Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: /* Unterschiede zwischen Verstecken, Veröffentlichen, Sperren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TODO Seite aufräumen ==&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[Processwire Module: MarkupSimpleNavigation]]&lt;br /&gt;
&lt;br /&gt;
== Navigation in Pagewire - Einführung ==&lt;br /&gt;
=== Navigationstypen allgemein ===&lt;br /&gt;
Es gibt verschiedene &amp;#039;&amp;#039;&amp;#039;Typen von Navigationen&amp;#039;&amp;#039;&amp;#039;. In Processwire hat man ein &amp;#039;&amp;#039;&amp;#039;Pages Objekt&amp;#039;&amp;#039;&amp;#039;, indem auch Zugriff auf Kind- und Elternseiten möglich sind. Es bildet also immer die Sitestruktur ab. Daher übergibt man an die unten aufgeführten Funktionen entweder die Homepage oder die aktuelle Seite.&lt;br /&gt;
&lt;br /&gt;
Unter dem Aspekt auf welcher Seite man sich befindet kann man unterscheiden zwischen:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;absolute Navigation&amp;#039;&amp;#039;&amp;#039; normalerweise ausgehend von der Rootseite. diese ist dann auf allen Seiten gleich.&lt;br /&gt;
** z.B. alle Seiten des ersten Levels stehen in der Hauptnavigation egal auf welcher Seite ich im Moment bin&lt;br /&gt;
** z.B. verschachtelte Liste mit 2 oder mehr Leveln für Dropdown Navigationen wie Superfish, Megamenüs (mit zusätzlichen Infos...) oder Bootstrap Navigationen.&lt;br /&gt;
** Sitemap&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Navigation relativ zur Seite&amp;#039;&amp;#039;&amp;#039; Diese kann sich von Seite zu Seite unterscheiden.&lt;br /&gt;
** Alle &amp;#039;&amp;#039;&amp;#039;Seiten der aktuellen Ebene&amp;#039;&amp;#039;&amp;#039; (oft kombiniert mit Breadcrumb / Hier-bin-ich) ) &lt;br /&gt;
** Hauptebene &amp;#039;&amp;#039;&amp;#039;und&amp;#039;&amp;#039;&amp;#039; aktueller Level&lt;br /&gt;
** Alle Ebenen &amp;#039;&amp;#039;&amp;#039;bis zur aktuellen Seite + deren Unterseiten&amp;#039;&amp;#039;&amp;#039; falls vorhanden. &lt;br /&gt;
In letzten Fall könnte man auch Varianten bauen in denen eine Verschachtelte Liste erzeugt wird aber nur bestimmte Teile absolut Positioniert angezeigt werden und andere versteckt werden. Manchmal möchte man bestimmte Level aber auch an anderer Position zeigen (z.B. Sidebar)&lt;br /&gt;
In der Praxis hat man in der Regel&lt;br /&gt;
* Mindestens eine Hauptnavigation mit allen Seiten der 1. Ebene oder eine Hauptnavigation mit mehreren Ebenen für Dropdown Navigationen, mobile Navigation oder auch Sitemapartige Navigationen für den Footer (oft mit kleinen Beschreibungen).&lt;br /&gt;
* Eine Metanavigation mit Service Seiten wie Kontakt, Impressum etc. oft ist diese im Footer.&lt;br /&gt;
&lt;br /&gt;
=== Unterschiede zwischen Verstecken, Veröffentlichen, Sperren ===&lt;br /&gt;
In Processwire sind diese Begriffe mit Userrechten verknüpft. Eine unveröffentlichte Seite kann also durchaus im Frontend aufgerufen werden (es sei denn man regelt das anders.) Vielmehr geht es darum das man User Rollen so gestalten kann, dass man z.B. einem User nur erlaubt unveröffentlichte Seiten zu editieren.&lt;br /&gt;
&lt;br /&gt;
Denoch gibt es auch ein paar weitere Unterschiede.&lt;br /&gt;
&lt;br /&gt;
Gesperrt -&amp;gt; Man kann die Seite nicht zum Editieren aufrufen. Über die Url kann Sie aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
Unpublished -&amp;gt; Die Seite kann sobald sie gespeichert ist auch aufgerufen werden, WENN der User berechtigt ist. Nicht für Guest User (der normale Viewer)&lt;br /&gt;
&lt;br /&gt;
TODO checken ob die Tabelle so für nicht angemeldete User stimmt.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  !! Im Menü ($pages-&amp;gt;find) !! Über URL erreichbar($pages-&amp;gt;get) !! Ausgabe im Frontend !! &lt;br /&gt;
|-&lt;br /&gt;
| Unpublished / Unveröffentlicht || Nein || Nur User mit passenden Rechten. Gäste -&amp;gt; leere Seite ||&lt;br /&gt;
|-&lt;br /&gt;
| Hidden / Versteckt || Nein || Ja || Ja - leere Seite (keine Feldausgabe)&lt;br /&gt;
|-&lt;br /&gt;
| Locked / Gesperrt || Ja || Ja  || Ja&lt;br /&gt;
|-&lt;br /&gt;
| Trash || Nein || Nein ||&lt;br /&gt;
|}&lt;br /&gt;
==== Seiten auf unveröffentlicht stellen ====&lt;br /&gt;
https://processwire.com/talk/topic/29-how-to-unpublish-a-page-without-deleting-it/&lt;br /&gt;
&lt;br /&gt;
Was soll man tun wenn man eine Seite tatsächlich nicht mehr anzeigen will, sie aber noch nicht wegwerfen will?&lt;br /&gt;
Ryan schlägt folgendes vor:&lt;br /&gt;
* Mülleimer&lt;br /&gt;
* Remove Guest Role in Template&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
&lt;br /&gt;
=== Page Level ===&lt;br /&gt;
In which level in page tree we are?&lt;br /&gt;
 $level = count($page-&amp;gt;parents);&lt;br /&gt;
&lt;br /&gt;
=== Link to Subpage und Platzhalter (Spacer) ===&lt;br /&gt;
Kann man gut für Superfish Menüs etc. benutzen. Bildet das Verhalten von Shortcuts und Spacern aus TYPO3 nach.&lt;br /&gt;
&lt;br /&gt;
Anpassung der renderNavTree() Funktion von Ryan Cramer. Options Field Installieren und als globales Feld &amp;quot;navigation_type&amp;quot; mit den Optionen &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1=normal|Normal&lt;br /&gt;
2=doNotLink|Do not link&lt;br /&gt;
3=linkToFirstChild|Link to first childpage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
konfigurieren. Dann Funktion etwa so anpassen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
// cycle through all the items&lt;br /&gt;
	foreach($items as $item) {&lt;br /&gt;
&lt;br /&gt;
		// markup for the list item...&lt;br /&gt;
		// if current item is the same as the page being viewed, add a &amp;quot;current&amp;quot; class to it&lt;br /&gt;
		$out .= $item-&amp;gt;id == wire(&amp;#039;page&amp;#039;)-&amp;gt;id ? &amp;quot;&amp;lt;li class=&amp;#039;current&amp;#039;&amp;gt;&amp;quot; : &amp;quot;&amp;lt;li&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// markup for the link&lt;br /&gt;
		$navigation_type = $item-&amp;gt;navigation_type-&amp;gt;id;&lt;br /&gt;
		switch ( $navigation_type ) {&lt;br /&gt;
			case 2: // do not link&lt;br /&gt;
				$out .= &amp;quot;&amp;lt;span class=&amp;#039;spacer&amp;#039;&amp;gt;$item-&amp;gt;title&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
				break;&lt;br /&gt;
			case 3: // link to subpage&lt;br /&gt;
				if( $item-&amp;gt;hasChildren() ){&lt;br /&gt;
					$out .= &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.$item-&amp;gt;child-&amp;gt;url.&amp;#039;&amp;quot;&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
				}else{&lt;br /&gt;
					$out .= &amp;quot;&amp;lt;span class=&amp;#039;spacer&amp;#039;&amp;gt;$item-&amp;gt;title&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			default:&lt;br /&gt;
				$out .= &amp;quot;&amp;lt;a href=&amp;#039;$item-&amp;gt;url&amp;#039;&amp;gt;$item-&amp;gt;title&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
				break;&lt;br /&gt;
		}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redirect (301) ===&lt;br /&gt;
==== Redirect zu erster Unterseite ====&lt;br /&gt;
https://processwire.com/talk/topic/15-how-do-i-create-a-page-that-redirects-to-its-first-child/&lt;br /&gt;
&lt;br /&gt;
Field &amp;#039;&amp;#039;redirects_to_first_child&amp;#039;&amp;#039; erstellen und im Template einfügen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
  if($page-&amp;gt;numChildren &amp;amp;&amp;amp; $page-&amp;gt;redirects_to_first_child) &lt;br /&gt;
  $session-&amp;gt;redirect($page-&amp;gt;child()-&amp;gt;url); &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Erzeugt 301 Weiterleitung&lt;br /&gt;
&lt;br /&gt;
Anderer Ansatz wäre evtl. den Link bei der Menügenerierung direkt zu generieren. finde ich persönlich besser siehe &amp;#039;&amp;#039;Link to subpage und Platzhalter&amp;#039;&amp;#039; Beispiel. Allerdings sollte man dann vielleicht die Seite trotzdem per 301 Weiterleiten, falls die URL mal direkt aufgerufen wird oder bei Google gelistet ist.&lt;br /&gt;
&lt;br /&gt;
==== Redirect zu anderer Seite in der Navigation ====&lt;br /&gt;
https://processwire.com/talk/topic/762-howto-menu-item-that-links-to-another-page/&lt;br /&gt;
&lt;br /&gt;
1. Create a new field and call it &amp;#039;redirect_url&amp;#039; or something like that, and use the &amp;#039;URL&amp;#039; fieldtype. &lt;br /&gt;
&lt;br /&gt;
2. Add that field to your template where you&amp;#039;d want to use it, or create a new template just for the purpose, like a template named &amp;#039;redirect&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
3. Edit the page that you want to be a symlink and populate the &amp;#039;redirect_url&amp;#039; field with the URL you want it to redirect to.&lt;br /&gt;
&lt;br /&gt;
4. In your nav-generation code that links to the pages, do something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$url = $subpage-&amp;gt;get(&amp;quot;redirect_url|url&amp;quot;); // use redirect_url if there, otherwise use url&lt;br /&gt;
echo &amp;quot;&amp;lt;a href=&amp;#039;$url&amp;#039;&amp;gt;{$subpage-&amp;gt;title}&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
5. You might also want to add this to your template that has the &amp;#039;redirect_url&amp;#039; field: just in case there&amp;#039;s anything linking to it directly. That way it&amp;#039;ll send people to the right place either way:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 if($page-&amp;gt;redirect_url) $session-&amp;gt;redirect($page-&amp;gt;redirect_url); &lt;br /&gt;
&lt;br /&gt;
=== Breadcrumb ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;!-- breadcrumbs --&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;#039;breadcrumbs&amp;#039;&amp;gt;&amp;lt;?php &lt;br /&gt;
		// breadcrumbs are the current page&amp;#039;s parents&lt;br /&gt;
		foreach($page-&amp;gt;parents() as $item) {&lt;br /&gt;
			echo &amp;quot;&amp;lt;span&amp;gt;&amp;lt;a href=&amp;#039;$item-&amp;gt;url&amp;#039;&amp;gt;$item-&amp;gt;title&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt; &amp;quot;; &lt;br /&gt;
		}&lt;br /&gt;
		// optionally output the current page as the last item&lt;br /&gt;
		echo &amp;quot;&amp;lt;span&amp;gt;$page-&amp;gt;title&amp;lt;/span&amp;gt; &amp;quot;; &lt;br /&gt;
	?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== One Level Navigation Bar ===&lt;br /&gt;
[[ProcessWire - One Level Navigation]]&lt;br /&gt;
=== Nächste Seite / Next Page Navigation ===&lt;br /&gt;
Beispiel 1&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if($page-&amp;gt;next-&amp;gt;id){&lt;br /&gt;
  $next = &amp;#039;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;next&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;i&amp;gt;Next:&amp;lt;/i&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
      &amp;lt;a class=&amp;quot;ajax-link&amp;quot; name=&amp;quot;&amp;#039;.$page-&amp;gt;next-&amp;gt;title.&amp;#039;&amp;quot; href=&amp;quot;&amp;#039;. $page-&amp;gt;next-&amp;gt;url .&amp;#039;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;#039;. $page-&amp;gt;next-&amp;gt;title .&amp;#039;&amp;lt;span class=&amp;quot;fa fa-arrow-right&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&lt;br /&gt;
      &amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel 2 (mit zurück zur Elternseite)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$next = &amp;#039;&amp;#039;;&lt;br /&gt;
if($page-&amp;gt;next-&amp;gt;id){&lt;br /&gt;
  $next = &amp;#039;&lt;br /&gt;
  &amp;lt;a href=&amp;quot;&amp;#039;.$page-&amp;gt;next-&amp;gt;url.&amp;#039;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;i class=&amp;quot;fa fa-angle-right&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$prev = &amp;#039;&amp;#039;;&lt;br /&gt;
if($page-&amp;gt;prev-&amp;gt;id){&lt;br /&gt;
  $prev = &amp;#039;&lt;br /&gt;
  &amp;lt;a href=&amp;quot;&amp;#039;.$page-&amp;gt;prev-&amp;gt;url.&amp;#039;&amp;quot; class=&amp;quot;w-inline-block paginaton-but&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;i class=&amp;quot;fa fa-angle-left&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  &amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$pagination = &amp;#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;container pagination&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div class=&amp;quot;col col-md-4&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;align-center&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;#039;.$prev.&amp;#039;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div class=&amp;quot;col col-md-4&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;align-center&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;&amp;#039;.$page-&amp;gt;parent-&amp;gt;url.&amp;#039;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;i class=&amp;quot;fa fa-th&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
        &amp;lt;/a&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div class=&amp;quot;col col-md-4&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;align-right center&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;#039;.$next.&amp;#039;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
echo $pagination;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zurück zur Elternseite ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;back&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;&amp;#039;.$page-&amp;gt;parent()-&amp;gt;url.&amp;#039;&amp;quot;&amp;gt;zurück&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kindseiten mit $page-&amp;gt;children ===&lt;br /&gt;
 &amp;lt;?=$page-&amp;gt;children?&amp;gt;&lt;br /&gt;
Output&lt;br /&gt;
 5723,4958,5937&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
foreach($page-&amp;gt;children as $child)&lt;br /&gt;
  echo &amp;quot;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;#039;{$child-&amp;gt;url}&amp;#039;&amp;gt;{$child-&amp;gt;title}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Ergebnis:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;#039;/about/contact/&amp;#039;&amp;gt;Contact Us&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;#039;/about/press/&amp;#039;&amp;gt;Press Releases&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;#039;/about/staff/&amp;#039;&amp;gt;Our Staff&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Children Tree ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function listChildrenTree($children, $current, $w) {&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;&amp;lt;ul&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
foreach($children as $page) {&lt;br /&gt;
&lt;br /&gt;
	$class = &amp;#039;&amp;#039;;&lt;br /&gt;
	if($page === $current || $current-&amp;gt;parents-&amp;gt;slice(1)-&amp;gt;has($page) ) {&lt;br /&gt;
		$class = &amp;quot;class=&amp;#039;on&amp;#039; style=&amp;#039;font-weight:bold&amp;#039;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	$rootid = $w-&amp;gt;pages-&amp;gt;get(&amp;quot;/&amp;quot;)-&amp;gt;id;&lt;br /&gt;
&lt;br /&gt;
	echo &amp;quot;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;#039;{$page-&amp;gt;url}&amp;#039; $class&amp;gt;&amp;quot;;&lt;br /&gt;
	if($page-&amp;gt;id == $rootid) echo &amp;quot;&amp;lt;img src=&amp;#039;&amp;quot; . $w-&amp;gt;config-&amp;gt;urls-&amp;gt;templates . &amp;quot;styles/images/home.png&amp;#039; width=&amp;#039;24&amp;#039; height=&amp;#039;28&amp;#039; alt=&amp;#039;&amp;#039; /&amp;gt;&amp;quot;;&lt;br /&gt;
	echo &amp;quot;{$page-&amp;gt;title}&amp;lt;/a&amp;gt; &amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	if($page-&amp;gt;numChildren &amp;amp;&amp;amp; $page-&amp;gt;id != $rootid) listChildrenTree($page-&amp;gt;children, $current, $w);&lt;br /&gt;
&lt;br /&gt;
	echo &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo &amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$children = $pages-&amp;gt;get(&amp;quot;/&amp;quot;)-&amp;gt;children();&lt;br /&gt;
$children-&amp;gt;prepend($pages-&amp;gt;get(&amp;quot;/&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
listChildrenTree($children, $page, $wire);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bootstrap Navigation ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php namespace ProcessWire;&lt;br /&gt;
// Markup to use wicht navigation_type field (normal=1, no-link=2,subpage=3)&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// bundle up the first level pages and prepend the root home page&lt;br /&gt;
$homepage = $pages-&amp;gt;get(1);&lt;br /&gt;
$pa = $homepage-&amp;gt;children;&lt;br /&gt;
$pa = $pa-&amp;gt;prepend($homepage);&lt;br /&gt;
&lt;br /&gt;
// Set the ball rolling...&lt;br /&gt;
$myMenu = renderChildrenOf($pa);&lt;br /&gt;
$wrapper = &amp;#039;&lt;br /&gt;
&amp;lt;nav class=&amp;quot;navbar navbar-default&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;container-fluid&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;navbar-header&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;navbar-toggle collapsed&amp;quot; data-toggle=&amp;quot;collapse&amp;quot; data-target=&amp;quot;#navbar-collapse-1&amp;quot; aria-expanded=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;sr-only&amp;quot;&amp;gt;Menü&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;icon-bar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;icon-bar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;icon-bar&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
      &amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;collapse navbar-collapse&amp;quot; id=&amp;quot;navbar-collapse-1&amp;quot;&amp;gt;&lt;br /&gt;
      |&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
$myMenu = wrap($myMenu,$wrapper);&lt;br /&gt;
echo $myMenu;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Navigation for ProcessWire using the Bootstrap 2.2.2 markup&lt;br /&gt;
This menu was written by Soma based on work by NetCarver and a bit thrown in by Joss&lt;br /&gt;
Bootstrap 3 update by Damienov, with multi level dropdown support fix&lt;br /&gt;
*/&lt;br /&gt;
function renderChildrenOf($pa, $output = &amp;#039;&amp;#039;, $level = 0)&lt;br /&gt;
{&lt;br /&gt;
    $output = &amp;#039;&amp;#039;;&lt;br /&gt;
    $level++;&lt;br /&gt;
&lt;br /&gt;
    foreach ($pa as $child) {&lt;br /&gt;
        $atoggle = &amp;#039;&amp;#039;;&lt;br /&gt;
        $class = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
        if ($child-&amp;gt;numChildren &amp;amp;&amp;amp; count($child-&amp;gt;parents) == 1) {&lt;br /&gt;
            $class .= &amp;#039;dropdown&amp;#039;;&lt;br /&gt;
            $atoggle .= &amp;#039; class=&amp;quot;dropdown-toggle&amp;quot; data-toggle=&amp;quot;dropdown&amp;quot;&amp;#039;;&lt;br /&gt;
        } else if ($child-&amp;gt;numChildren &amp;amp;&amp;amp; count($child-&amp;gt;parents) &amp;gt; 1 ) {&lt;br /&gt;
            $class .= &amp;#039;dropdown-submenu&amp;#039;;&lt;br /&gt;
            $atoggle .= &amp;#039; class=&amp;quot;dropdown-toggle&amp;quot;&amp;#039;;&lt;br /&gt;
        } else if ($child-&amp;gt;numChildren &amp;amp;&amp;amp; $child-&amp;gt;id != 1) {&lt;br /&gt;
            $class .= &amp;#039;dropdown-menu&amp;#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Makes the current page and it&amp;#039;s top level parent add an active class&lt;br /&gt;
        $class .= ($child === wire(&amp;quot;page&amp;quot;) || $child === wire(&amp;quot;page&amp;quot;)-&amp;gt;rootParent) ? &amp;quot; active&amp;quot; : &amp;#039;&amp;#039;;&lt;br /&gt;
        $class = strlen($class) ? &amp;quot; class=&amp;#039;&amp;quot; . trim($class) . &amp;quot;&amp;#039;&amp;quot; : &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
        if ($child-&amp;gt;numChildren &amp;amp;&amp;amp; count($child-&amp;gt;parents) == 1) {&lt;br /&gt;
            // Add Caret if have children&lt;br /&gt;
            $output .= &amp;quot;&amp;lt;li$class&amp;gt;&amp;lt;a href=&amp;#039;$child-&amp;gt;url&amp;#039;$atoggle&amp;gt;$child-&amp;gt;title &amp;lt;b class=&amp;#039;caret&amp;#039;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
        } else if ($child-&amp;gt;numChildren &amp;amp;&amp;amp; count($child-&amp;gt;parents) &amp;gt; 1) {&lt;br /&gt;
            $output .= &amp;quot;&amp;lt;li$class&amp;gt;&amp;lt;a tabindex=&amp;#039;-1&amp;#039; href=&amp;#039;$child-&amp;gt;url&amp;#039;$atoggle&amp;gt;$child-&amp;gt;title&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
        } else {&lt;br /&gt;
            $output .= &amp;quot;&amp;lt;li$class&amp;gt;&amp;lt;a href=&amp;#039;$child-&amp;gt;url&amp;#039;$atoggle&amp;gt;$child-&amp;gt;title&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // If this child is itself a parent and not the root page, then render it&amp;#039;s children in their own menu too...&lt;br /&gt;
        if ($child-&amp;gt;numChildren &amp;amp;&amp;amp; $child-&amp;gt;id != 1) {&lt;br /&gt;
            $output .= renderChildrenOf($child-&amp;gt;children, $output, $level);&lt;br /&gt;
        }&lt;br /&gt;
        $output .= &amp;#039;&amp;lt;/li&amp;gt;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
    $outerclass = ($level == 1) ? &amp;quot;nav navbar-nav&amp;quot; : &amp;#039;dropdown-menu&amp;#039;;&lt;br /&gt;
    return &amp;quot;&amp;lt;ul class=&amp;#039;$outerclass&amp;#039;&amp;gt;$output&amp;lt;/ul&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modul: MarkupSimpleNavigation==&lt;br /&gt;
[[Processwire Modul - MarkupSimpleNavigation]]&lt;br /&gt;
&lt;br /&gt;
== Weitere Menübeispiele ==&lt;br /&gt;
=== Standard Tree Navigation ===&lt;br /&gt;
Für viele Zwecke ausreichend und leicht anpassbar, die klassische verschachtelte Liste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Menüauswahl Hauptmenü / Metamenü / Footer-Navigation ===&lt;br /&gt;
Beispiel 1&lt;br /&gt;
Backend Feld menus anlegen Options: &lt;br /&gt;
&lt;br /&gt;
 1=Main Menu&lt;br /&gt;
 2=Meta Menu &lt;br /&gt;
&lt;br /&gt;
topnav.inc&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$pa = $homepage-&amp;gt;and($homepage-&amp;gt;children(&amp;quot;menus.id=1&amp;quot;));//only if main menu is checked&lt;br /&gt;
$options = array(&amp;#039;level&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;, &amp;#039;ulClass&amp;#039; =&amp;gt; &amp;#039;sf-menu&amp;#039;, &amp;#039;liClass&amp;#039; =&amp;gt; &amp;#039;&amp;#039;);&lt;br /&gt;
echo &amp;quot;&amp;lt;div&amp;gt;&amp;quot;.renderNavTreeType($pa, $maxDepth = 1, $fieldNames = &amp;#039;&amp;#039;, $options).&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel 2 (älter)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Checkbox anlegen (footer_nav), und dann das Seitenarray etwa so modifizieren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$footer_nav = $pages-&amp;gt;find(&amp;quot;parent=1, footer_checkbox=1&amp;quot;);&lt;br /&gt;
$main_nav = $pages-&amp;gt;find(&amp;quot;parent=1, footer_checkbox!=1&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zweispaltige Navigation aus Kindseiten ===&lt;br /&gt;
Verbesserungsvorschlag: Anstatt if lieber zwei for Schleifen -&amp;gt; bessere Performance&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Childrens&lt;br /&gt;
$n = count($page-&amp;gt;children);&lt;br /&gt;
$m = ceil($n/2);&lt;br /&gt;
$c = 0;&lt;br /&gt;
&lt;br /&gt;
// NAVIGATION &amp;amp; SLIDER Items&lt;br /&gt;
$listItem = &amp;#039;&amp;#039;;&lt;br /&gt;
$navList = &amp;#039;&amp;#039;;&lt;br /&gt;
$col1 = &amp;#039;&amp;lt;ul class=&amp;quot;nav-list col1&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
$col2 = &amp;#039;&amp;lt;ul class=&amp;quot;nav-list col2&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
foreach ($page-&amp;gt;children as $item) {&lt;br /&gt;
	if($item-&amp;gt;id == $page-&amp;gt;rootParent-&amp;gt;id) {&lt;br /&gt;
		$listItem = &amp;#039;&amp;lt;li class=&amp;quot;current&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
	} else {&lt;br /&gt;
		$listItem = &amp;#039;&amp;lt;li&amp;gt;&amp;#039;;&lt;br /&gt;
	}&lt;br /&gt;
	$listItem .= &amp;#039;&amp;lt;a class=&amp;quot;ajax-link&amp;quot; href=&amp;quot;&amp;#039;.$item-&amp;gt;url.&amp;#039;&amp;quot;&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#039;;&lt;br /&gt;
	($c &amp;lt; $m) ? $col1 .= $listItem : $col2 .= $listItem;&lt;br /&gt;
	$c++;&lt;br /&gt;
}&lt;br /&gt;
$col1 .= &amp;#039;&amp;lt;/ul&amp;gt;&amp;#039;;&lt;br /&gt;
$col1 .= &amp;#039;&amp;lt;/ul&amp;gt;&amp;#039;;&lt;br /&gt;
$navList = $col1.$col2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pushy Menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Given a group of pages, render a &amp;lt;ul&amp;gt; navigation tree&lt;br /&gt;
 *&lt;br /&gt;
 * This is here to demonstrate an example of a more intermediate level&lt;br /&gt;
 * shared function and usage is completely optional. This is very similar to&lt;br /&gt;
 * the renderNav() function above except that it can output more than one&lt;br /&gt;
 * level of navigation (recursively) and can include other fields in the output.&lt;br /&gt;
 * Assumes there is a field navigation_type to decide how a list item is&lt;br /&gt;
 * rendered&lt;br /&gt;
 *&lt;br /&gt;
 * @param array|PageArray $items&lt;br /&gt;
 * @param int $maxDepth How many levels of navigation below current should it go?&lt;br /&gt;
 * @param string $fieldNames Any extra field names to display (separate multiple fields with a space)&lt;br /&gt;
 * @param array $options extra options for classes configuration etc.&lt;br /&gt;
 * @return string&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
function renderPushyMenu($items, $maxDepth = 0, $fieldNames = &amp;#039;&amp;#039;, $options = array(&amp;#039;level&amp;#039; =&amp;gt; 0, &amp;#039;ulClass&amp;#039; =&amp;gt; &amp;#039;&amp;#039;, &amp;#039;liClass&amp;#039; =&amp;gt; &amp;#039;&amp;#039;, &amp;#039;aClass&amp;#039; =&amp;gt; &amp;#039;&amp;#039;) ) {&lt;br /&gt;
&lt;br /&gt;
	// if we were given a single Page rather than a group of them, we&amp;#039;ll pretend they&lt;br /&gt;
	// gave us a group of them (a group/array of 1)&lt;br /&gt;
	if($items instanceof Page) $items = array($items);&lt;br /&gt;
	$out = &amp;#039;&amp;#039;;&lt;br /&gt;
  $c = 0;&lt;br /&gt;
  $liClasses = array();&lt;br /&gt;
  $ulClasses = array();&lt;br /&gt;
	$level = 0;&lt;br /&gt;
	$liClass = &amp;#039;&amp;#039;;&lt;br /&gt;
	$ulClass = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	if(!empty($options[&amp;#039;level&amp;#039;])) $level = $options[&amp;#039;level&amp;#039;];&lt;br /&gt;
	if(!empty($options[&amp;#039;ulClass&amp;#039;])) {&lt;br /&gt;
		$ulClasses[] = $options[&amp;#039;ulClass&amp;#039;];&lt;br /&gt;
		$ulClass = $options[&amp;#039;ulClass&amp;#039;];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if(!empty($options[&amp;#039;liClass&amp;#039;])) {&lt;br /&gt;
		$liClasses[] = $options[&amp;#039;liClass&amp;#039;];&lt;br /&gt;
		$liClass = $options[&amp;#039;liClass&amp;#039;];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// cycle through all the items&lt;br /&gt;
	foreach($items as $item) {&lt;br /&gt;
    //$level = count($page-&amp;gt;parents);&lt;br /&gt;
		// LI ITEM&lt;br /&gt;
		$classes = $liClasses;&lt;br /&gt;
    //if($item-&amp;gt;id == wire(&amp;#039;page&amp;#039;)-&amp;gt;id) $classes[] = &amp;#039;cur&amp;#039;;&lt;br /&gt;
		if($item-&amp;gt;hasChildren) {&lt;br /&gt;
      // BUTTON instead of Link&lt;br /&gt;
      $out .= &amp;#039;&amp;lt;li class=&amp;quot;pushy-submenu&amp;quot;&amp;gt;&amp;lt;button&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/button&amp;gt;&amp;#039;;&lt;br /&gt;
		}else{&lt;br /&gt;
      $classes[] = &amp;#039;level-&amp;#039;.$level;&lt;br /&gt;
  		$out .= &amp;#039;&amp;lt;li class=&amp;quot;&amp;#039;.implode($classes,&amp;#039; &amp;#039;).&amp;#039;&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
      unset($classes);&lt;br /&gt;
&lt;br /&gt;
  		// A ITEM&lt;br /&gt;
  		$navigation_type = $item-&amp;gt;navigation_type-&amp;gt;id;&lt;br /&gt;
  		$classes = $liClasses;&lt;br /&gt;
  		switch ( $navigation_type ) {&lt;br /&gt;
  			case 2: // do not link&lt;br /&gt;
  				$out .= &amp;#039;&amp;lt;span class=&amp;quot;spacer&amp;quot;&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
  				break;&lt;br /&gt;
  			case 3: // link to subpage&lt;br /&gt;
  				if( $item-&amp;gt;hasChildren() ){&lt;br /&gt;
  					$out .= &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.$item-&amp;gt;child-&amp;gt;url.&amp;#039;&amp;quot; class=&amp;quot;ajax-link&amp;quot;&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
  				}else{&lt;br /&gt;
  					$out .= &amp;quot;&amp;lt;span class=&amp;#039;spacer&amp;#039;&amp;gt;$item-&amp;gt;title&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
  				}&lt;br /&gt;
  				break;&lt;br /&gt;
  			default:&lt;br /&gt;
  				$out .= &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.$item-&amp;gt;url.&amp;#039;&amp;quot; class=&amp;quot;ajax-link&amp;quot;&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
  				break;&lt;br /&gt;
  		}&lt;br /&gt;
  		unset($classes);&lt;br /&gt;
		}&lt;br /&gt;
		// if there are extra field names specified, render markup for each one in a &amp;lt;div&amp;gt;&lt;br /&gt;
		// having a class name the same as the field name&lt;br /&gt;
		if($fieldNames) foreach(explode(&amp;#039; &amp;#039;, $fieldNames) as $fieldName) {&lt;br /&gt;
			$value = $item-&amp;gt;get($fieldName);&lt;br /&gt;
			if($value) $out .= &amp;quot; &amp;lt;div class=&amp;#039;$fieldName&amp;#039;&amp;gt;$value&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// if the item has children and we&amp;#039;re allowed to output tree navigation (maxDepth)&lt;br /&gt;
		// then call this same function again for the item&amp;#039;s children&lt;br /&gt;
		if($item-&amp;gt;hasChildren() &amp;amp;&amp;amp; $maxDepth) {&lt;br /&gt;
			//if($class == &amp;#039;nav&amp;#039;) $class = &amp;#039;nav nav-tree&amp;#039;;&lt;br /&gt;
			$nextLevelOptions = array(&amp;#039;level&amp;#039; =&amp;gt; $level+1, &amp;#039;ulClass&amp;#039; =&amp;gt; &amp;#039;&amp;#039;, &amp;#039;liClass&amp;#039; =&amp;gt; $liClass);&lt;br /&gt;
			$out .= renderNavTreeType($item-&amp;gt;children, $maxDepth-1, $fieldNames, $nextLevelOptions);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// close the list item&lt;br /&gt;
		$out .= &amp;quot;&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// if output was generated above, wrap it in a &amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	if($out) $out = &amp;quot;\n&amp;quot;.&amp;#039;&amp;lt;ul class=&amp;quot;&amp;#039;.implode($ulClasses,&amp;#039; &amp;#039;).&amp;#039;&amp;quot;&amp;gt;&amp;#039;.&amp;quot;\n&amp;quot;.$out.&amp;#039;&amp;lt;/ul&amp;gt;&amp;#039;.&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// return the markup we generated above&lt;br /&gt;
	return $out;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Do not link / link to subpage ==&lt;br /&gt;
=== MarkupSimpleNavigation XTemplate + Redirect Beispiel ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://github.com/s...default-options&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Menü Platzhalter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;xtemplate&amp;quot; =&amp;gt; &amp;quot;folder|placeholder&amp;quot;, // specify one or more templates&lt;br /&gt;
&amp;quot;xitem_tpl&amp;quot; =&amp;gt; &amp;quot;&amp;lt;span&amp;gt;{title}&amp;lt;/span&amp;gt;&amp;quot;, // default markup for page with this template&lt;br /&gt;
&amp;quot;xitem_current_tpl&amp;quot; =&amp;gt; &amp;quot;&amp;lt;span&amp;gt;{title}&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
echo $nav-&amp;gt;render(array(&lt;br /&gt;
   &amp;#039;max_levels&amp;#039;=&amp;gt;2,&lt;br /&gt;
   &amp;#039;selector&amp;#039;=&amp;gt;&amp;quot;limit=10&amp;quot;,&lt;br /&gt;
   &amp;#039;xtemplates&amp;#039; =&amp;gt; &amp;#039;placeholder|folder&amp;#039;&lt;br /&gt;
));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Redirect Template&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You could also have a template &amp;quot;redirect&amp;quot; with only a title and a page field (single page) to select any page you want to go.&lt;br /&gt;
&lt;br /&gt;
Then in the code you should be able to write&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
array(&amp;#039;item_tpl&amp;#039; =&amp;gt; &amp;#039;&amp;lt;a href=&amp;quot;{redirect_page|url}&amp;quot;&amp;gt;{title}&amp;lt;/a&amp;gt;&amp;#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
So it would take the url of the referenced page in the page field if found, or if not it takes the url of the page itself. Assuming the page field is named &amp;quot;redirect_page&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== In der Navi ===&lt;br /&gt;
Zusätzliches Feld (Options) im Backend mit Namen navigation_type&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Given a group of pages, render a &amp;lt;ul&amp;gt; navigation tree&lt;br /&gt;
 * If there is a field navigation_type the vals have following meaning&lt;br /&gt;
 * 1 = Normal&lt;br /&gt;
 * 2 = Do not link&lt;br /&gt;
 * 3 = Link to subpage&lt;br /&gt;
 *&lt;br /&gt;
 * @param array|PageArray $items&lt;br /&gt;
 * @param int $maxDepth How many levels of navigation below current should it go?&lt;br /&gt;
 * @param string $fieldNames Any extra field names to display (separate multiple fields with a space)&lt;br /&gt;
 * @param string $class CSS class name for containing &amp;lt;ul&amp;gt;&lt;br /&gt;
 * @return string&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
function renderNavTreeType($items, $maxDepth = 0, $fieldNames = &amp;#039;&amp;#039;, $options = array(&amp;#039;level&amp;#039; =&amp;gt; 0, &amp;#039;ulClass&amp;#039; =&amp;gt; &amp;#039;nav&amp;#039;, &amp;#039;liClass&amp;#039; =&amp;gt; &amp;#039;&amp;#039;, &amp;#039;aClass&amp;#039; =&amp;gt; &amp;#039;&amp;#039;) ) {&lt;br /&gt;
&lt;br /&gt;
	// if we were given a single Page rather than a group of them, we&amp;#039;ll pretend they&lt;br /&gt;
	// gave us a group of them (a group/array of 1)&lt;br /&gt;
	if($items instanceof Page) $items = array($items);&lt;br /&gt;
&lt;br /&gt;
	// $out is where we store the markup we are creating in this function&lt;br /&gt;
	$out = &amp;#039;&amp;#039;;&lt;br /&gt;
  $c = 0;&lt;br /&gt;
  $liClasses = array();&lt;br /&gt;
  $ulClasses = array();&lt;br /&gt;
	$level = 0;&lt;br /&gt;
	$liClass = &amp;#039;&amp;#039;;&lt;br /&gt;
	$ulClass = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	if(!empty($options[&amp;#039;level&amp;#039;])) $level = $options[&amp;#039;level&amp;#039;];&lt;br /&gt;
	if(!empty($options[&amp;#039;ulClass&amp;#039;])) {&lt;br /&gt;
		$ulClasses[] = $options[&amp;#039;ulClass&amp;#039;];&lt;br /&gt;
		$ulClass = $options[&amp;#039;ulClass&amp;#039;];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if(!empty($options[&amp;#039;liClass&amp;#039;])) {&lt;br /&gt;
		$liClasses[] = $options[&amp;#039;liClass&amp;#039;];&lt;br /&gt;
		$liClass = $options[&amp;#039;liClass&amp;#039;];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// cycle through all the items&lt;br /&gt;
	foreach($items as $item) {&lt;br /&gt;
    //$level = count($page-&amp;gt;parents);&lt;br /&gt;
		// LI ITEM&lt;br /&gt;
		$classes = $liClasses;&lt;br /&gt;
    if($item-&amp;gt;id == wire(&amp;#039;page&amp;#039;)-&amp;gt;id) $classes[] = &amp;#039;cur&amp;#039;;&lt;br /&gt;
		if($item-&amp;gt;hasChildren) $classes[] = &amp;#039;has_children&amp;#039;;&lt;br /&gt;
    $classes[] = &amp;#039;level-&amp;#039;.$level;&lt;br /&gt;
		$out .= &amp;#039;&amp;lt;li class=&amp;quot;&amp;#039;.implode($classes,&amp;#039; &amp;#039;).&amp;#039;&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
    unset($classes);&lt;br /&gt;
&lt;br /&gt;
		// markup for the link&lt;br /&gt;
		$navigation_type = $item-&amp;gt;navigation_type-&amp;gt;id;&lt;br /&gt;
		$classes = $liClasses;&lt;br /&gt;
		switch ( $navigation_type ) {&lt;br /&gt;
			case 2: // do not link&lt;br /&gt;
				$out .= &amp;#039;&amp;lt;span class=&amp;quot;spacer&amp;quot;&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
				break;&lt;br /&gt;
			case 3: // link to subpage&lt;br /&gt;
				if( $item-&amp;gt;hasChildren() ){&lt;br /&gt;
					$out .= &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.$item-&amp;gt;child-&amp;gt;url.&amp;#039;&amp;quot; class=&amp;quot;ajax-link&amp;quot;&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
				}else{&lt;br /&gt;
					$out .= &amp;quot;&amp;lt;span class=&amp;#039;spacer&amp;#039;&amp;gt;$item-&amp;gt;title&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			default:&lt;br /&gt;
				$out .= &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.$item-&amp;gt;url.&amp;#039;&amp;quot; class=&amp;quot;ajax-link&amp;quot;&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
				break;&lt;br /&gt;
		}&lt;br /&gt;
		unset($classes);&lt;br /&gt;
		// if there are extra field names specified, render markup for each one in a &amp;lt;div&amp;gt;&lt;br /&gt;
		// having a class name the same as the field name&lt;br /&gt;
		if($fieldNames) foreach(explode(&amp;#039; &amp;#039;, $fieldNames) as $fieldName) {&lt;br /&gt;
			$value = $item-&amp;gt;get($fieldName);&lt;br /&gt;
			if($value) $out .= &amp;quot; &amp;lt;div class=&amp;#039;$fieldName&amp;#039;&amp;gt;$value&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// if the item has children and we&amp;#039;re allowed to output tree navigation (maxDepth)&lt;br /&gt;
		// then call this same function again for the item&amp;#039;s children&lt;br /&gt;
		if($item-&amp;gt;hasChildren() &amp;amp;&amp;amp; $maxDepth) {&lt;br /&gt;
			//if($class == &amp;#039;nav&amp;#039;) $class = &amp;#039;nav nav-tree&amp;#039;;&lt;br /&gt;
			$nextLevelOptions = array(&amp;#039;level&amp;#039; =&amp;gt; $level+1, &amp;#039;ulClass&amp;#039; =&amp;gt; &amp;#039;&amp;#039;, &amp;#039;liClass&amp;#039; =&amp;gt; $liClass);&lt;br /&gt;
			$out .= renderNavTreeType($item-&amp;gt;children, $maxDepth-1, $fieldNames, $nextLevelOptions);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// close the list item&lt;br /&gt;
		$out .= &amp;quot;&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// if output was generated above, wrap it in a &amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	if($out) $out = &amp;quot;\n&amp;quot;.&amp;#039;&amp;lt;ul class=&amp;quot;&amp;#039;.implode($ulClasses,&amp;#039; &amp;#039;).&amp;#039;&amp;quot;&amp;gt;&amp;#039;.&amp;quot;\n&amp;quot;.$out.&amp;#039;&amp;lt;/ul&amp;gt;&amp;#039;.&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// return the markup we generated above&lt;br /&gt;
	return $out;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redirect über das Template ===&lt;br /&gt;
Sinnvoll wenn die URL direkt aufgerufen wird:&lt;br /&gt;
&lt;br /&gt;
 $session-&amp;gt;redirect($page-&amp;gt;redirect_page-&amp;gt;url);&lt;br /&gt;
or how about &amp;quot;redirect-to-firstchild&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 $session-&amp;gt;redirect($page-&amp;gt;children-&amp;gt;first()-&amp;gt;url);&lt;br /&gt;
&lt;br /&gt;
== Beispiele für Funktionen (z.B. in _func.php)==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiele für Funktionen die Navigationen erzeugen. &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
=== One Level ===&lt;br /&gt;
==== Original ProcessWire Demo Beispiel ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nested List ausgehend von einer Seite (meistens Homepage) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php namespace ProcessWire;&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Given a group of pages, render a one level navbar&lt;br /&gt;
  *&lt;br /&gt;
  * @param array|PageArray $items&lt;br /&gt;
  * @return string&lt;br /&gt;
  *&lt;br /&gt;
  */&lt;br /&gt;
 function renderNavMain($pa,$pageId){&lt;br /&gt;
   if($pa instanceof Page) $pa = array($pa);&lt;br /&gt;
   $out = &amp;#039;&amp;lt;nav class=&amp;quot;menu menu--ferdinand&amp;quot;&amp;gt;&amp;lt;ul class=&amp;quot;nav navbar-nav menu__list&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
   foreach($pa as $item) {&lt;br /&gt;
     if($item-&amp;gt;id == $pageId) {&lt;br /&gt;
       $out .= &amp;quot;&amp;lt;li class=\&amp;quot;menu__item menu__item--current cur\&amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;
     } else {&lt;br /&gt;
       $out .= &amp;quot;&amp;lt;li class=\&amp;quot;menu__item\&amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
     // if template isotope-parent add first isotope-child name as hash&lt;br /&gt;
     if($item-&amp;gt;template-&amp;gt;name == &amp;#039;isotope-parent&amp;#039;){&lt;br /&gt;
       $out .= &amp;#039;&amp;lt;a class=&amp;quot;menu__link&amp;quot; href=&amp;quot;&amp;#039;.$item-&amp;gt;url.&amp;#039;#&amp;#039;.$item-&amp;gt;child-&amp;gt;name.&amp;#039;&amp;quot;&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#039;;&lt;br /&gt;
     }else $out .= &amp;#039;&amp;lt;a class=&amp;quot;menu__link&amp;quot; href=&amp;quot;&amp;#039;.$item-&amp;gt;url.&amp;#039;&amp;quot;&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#039;;&lt;br /&gt;
   }&lt;br /&gt;
     $out .= &amp;quot;&amp;lt;/ul&amp;gt;&amp;lt;/nav&amp;gt;&amp;quot;;&lt;br /&gt;
     return $out;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 function renderNavIsotope($pa){&lt;br /&gt;
   if($pa instanceof Page) $pa = array($pa);&lt;br /&gt;
   $out = &amp;#039;&amp;lt;ul class=&amp;quot;submenu&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
   foreach($pa as $item){&lt;br /&gt;
     $out .= &amp;#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;#039;.$item-&amp;gt;name.&amp;#039;&amp;quot; class=&amp;quot;isotope-link&amp;quot;&amp;gt;&amp;#039;.$item-&amp;gt;title.&amp;#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#039;;&lt;br /&gt;
   }&lt;br /&gt;
   $out .= &amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;;&lt;br /&gt;
   return $out;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Given a group of pages, render a simple &amp;lt;ul&amp;gt; navigation&lt;br /&gt;
 *&lt;br /&gt;
 * This is here to demonstrate an example of a simple shared function.&lt;br /&gt;
 * Usage is completely optional.&lt;br /&gt;
 *&lt;br /&gt;
 * @param PageArray $items&lt;br /&gt;
 * @return string&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
function renderNav(PageArray $items) {&lt;br /&gt;
&lt;br /&gt;
	// $out is where we store the markup we are creating in this function&lt;br /&gt;
	$out = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	// cycle through all the items&lt;br /&gt;
	foreach($items as $item) {&lt;br /&gt;
&lt;br /&gt;
		// render markup for each navigation item as an &amp;lt;li&amp;gt;&lt;br /&gt;
		if($item-&amp;gt;id == wire(&amp;#039;page&amp;#039;)-&amp;gt;id) {&lt;br /&gt;
			// if current item is the same as the page being viewed, add a &amp;quot;current&amp;quot; class to it&lt;br /&gt;
			$out .= &amp;quot;&amp;lt;li class=&amp;#039;current&amp;#039;&amp;gt;&amp;quot;;&lt;br /&gt;
		} else {&lt;br /&gt;
			// otherwise just a regular list item&lt;br /&gt;
			$out .= &amp;quot;&amp;lt;li&amp;gt;&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// markup for the link&lt;br /&gt;
		$out .= &amp;quot;&amp;lt;a href=&amp;#039;$item-&amp;gt;url&amp;#039;&amp;gt;$item-&amp;gt;title&amp;lt;/a&amp;gt; &amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// if the item has summary text, include that too&lt;br /&gt;
		if($item-&amp;gt;summary) $out .= &amp;quot;&amp;lt;div class=&amp;#039;summary&amp;#039;&amp;gt;$item-&amp;gt;summary&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// close the list item&lt;br /&gt;
		$out .= &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// if output was generated above, wrap it in a &amp;lt;ul&amp;gt;&lt;br /&gt;
	if($out) $out = &amp;quot;&amp;lt;ul class=&amp;#039;nav&amp;#039;&amp;gt;$out&amp;lt;/ul&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// return the markup we generated above&lt;br /&gt;
	return $out;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Given a group of pages, render a &amp;lt;ul&amp;gt; navigation tree&lt;br /&gt;
 *&lt;br /&gt;
 * This is here to demonstrate an example of a more intermediate level&lt;br /&gt;
 * shared function and usage is completely optional. This is very similar to&lt;br /&gt;
 * the renderNav() function above except that it can output more than one&lt;br /&gt;
 * level of navigation (recursively) and can include other fields in the output.&lt;br /&gt;
 *&lt;br /&gt;
 * @param array|PageArray $items&lt;br /&gt;
 * @param int $maxDepth How many levels of navigation below current should it go?&lt;br /&gt;
 * @param string $fieldNames Any extra field names to display (separate multiple fields with a space)&lt;br /&gt;
 * @param string $class CSS class name for containing &amp;lt;ul&amp;gt;&lt;br /&gt;
 * @return string&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
function renderNavTree($items, $maxDepth = 0, $fieldNames = &amp;#039;&amp;#039;, $class = &amp;#039;nav&amp;#039;) {&lt;br /&gt;
&lt;br /&gt;
	// if we were given a single Page rather than a group of them, we&amp;#039;ll pretend they&lt;br /&gt;
	// gave us a group of them (a group/array of 1)&lt;br /&gt;
	if($items instanceof Page) $items = array($items);&lt;br /&gt;
&lt;br /&gt;
	// $out is where we store the markup we are creating in this function&lt;br /&gt;
	$out = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	// cycle through all the items&lt;br /&gt;
	foreach($items as $item) {&lt;br /&gt;
&lt;br /&gt;
		// markup for the list item...&lt;br /&gt;
		// if current item is the same as the page being viewed, add a &amp;quot;current&amp;quot; class to it&lt;br /&gt;
		$out .= $item-&amp;gt;id == wire(&amp;#039;page&amp;#039;)-&amp;gt;id ? &amp;quot;&amp;lt;li class=&amp;#039;current&amp;#039;&amp;gt;&amp;quot; : &amp;quot;&amp;lt;li&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// markup for the link&lt;br /&gt;
		$out .= &amp;quot;&amp;lt;a href=&amp;#039;$item-&amp;gt;url&amp;#039;&amp;gt;$item-&amp;gt;title&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// if there are extra field names specified, render markup for each one in a &amp;lt;div&amp;gt;&lt;br /&gt;
		// having a class name the same as the field name&lt;br /&gt;
		if($fieldNames) foreach(explode(&amp;#039; &amp;#039;, $fieldNames) as $fieldName) {&lt;br /&gt;
			$value = $item-&amp;gt;get($fieldName);&lt;br /&gt;
			if($value) $out .= &amp;quot; &amp;lt;div class=&amp;#039;$fieldName&amp;#039;&amp;gt;$value&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// if the item has children and we&amp;#039;re allowed to output tree navigation (maxDepth)&lt;br /&gt;
		// then call this same function again for the item&amp;#039;s children&lt;br /&gt;
		if($item-&amp;gt;hasChildren() &amp;amp;&amp;amp; $maxDepth) {&lt;br /&gt;
			if($class == &amp;#039;nav&amp;#039;) $class = &amp;#039;nav nav-tree&amp;#039;;&lt;br /&gt;
			$out .= renderNavTree($item-&amp;gt;children, $maxDepth-1, $fieldNames, $class);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// close the list item&lt;br /&gt;
		$out .= &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// if output was generated above, wrap it in a &amp;lt;ul&amp;gt;&lt;br /&gt;
	if($out) $out = &amp;quot;&amp;lt;ul class=&amp;#039;$class&amp;#039;&amp;gt;$out&amp;lt;/ul&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// return the markup we generated above&lt;br /&gt;
	return $out;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Komplette Beispiele ==&lt;br /&gt;
[[ProcessWire - Navigation Beispiele]]&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Seitenstatus&amp;diff=23361</id>
		<title>ProcessWire - Seitenstatus</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Seitenstatus&amp;diff=23361"/>
		<updated>2018-10-10T11:30:36Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: Die Seite wurde neu angelegt: „Auf den ersten Blick verwirrend ist der Seitenstatus bzw. die verschiedenen Optionen die es in den Seiteneinstellungen gibt.  Published (Veröffentlicht) Hidde…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auf den ersten Blick verwirrend ist der Seitenstatus bzw. die verschiedenen Optionen die es in den Seiteneinstellungen gibt.&lt;br /&gt;
&lt;br /&gt;
Published (Veröffentlicht)&lt;br /&gt;
Hidden (Versteckt)&lt;br /&gt;
Locked (Gesperrt)&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Backend_anpassen&amp;diff=23360</id>
		<title>ProcessWire - Backend anpassen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=ProcessWire_-_Backend_anpassen&amp;diff=23360"/>
		<updated>2018-10-09T16:26:43Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Templates für Backend Files ==&lt;br /&gt;
Es gibt verschiedene Möglichkeiten um zu Steuern welche Template Datei welches Backend-Feld rendert. Hier ein paar Tricks.&lt;br /&gt;
 https://processwire.com/blog/posts/processwire-3.0.7-expands-field-rendering-page-path-history-and-more/#field-rendering-with-template-files&lt;br /&gt;
&lt;br /&gt;
== Felder in Abhängigkeit von bestimmten Bedingungen (Feldern/Selectoren/PHP) anzeigen ==&lt;br /&gt;
 http://modules.processwire.com/modules/custom-inputfield-dependencies/&lt;br /&gt;
&lt;br /&gt;
== Select Field basierend auf anderen Feldern ==&lt;br /&gt;
 http://modules.processwire.com/modules/fieldtype-select-relation/&lt;br /&gt;
&lt;br /&gt;
== New Button in Seitenliste entfernen ==&lt;br /&gt;
 https://processwire.com/talk/topic/15417-remove-new-button-from-pages-list-view/&lt;br /&gt;
&lt;br /&gt;
== Templatename im Seitenbaum anzeigen ==&lt;br /&gt;
Im Core Modul PageList gibt es die Einstellung pageLabelField. Hier kann man alle Felder integrieren. Z.B.:&lt;br /&gt;
 {title} ({template.name})&lt;br /&gt;
&lt;br /&gt;
Optional geht das für einzelne Templates unter Erweitert.&lt;br /&gt;
&lt;br /&gt;
== Bilderbearbeitung im Editor einstellen ==&lt;br /&gt;
Der Editor bindet das Modul Page Edit Image ein und steuert z.B. die Klassen für die Bildausrichtung. Einiges läßt sich in den Einstellungen des Moduls verändern.&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Projekt_-_Genb%C3%A4nkle&amp;diff=23359</id>
		<title>Projekt - Genbänkle</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Projekt_-_Genb%C3%A4nkle&amp;diff=23359"/>
		<updated>2018-10-09T09:05:08Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Notitzen und Snippets&lt;br /&gt;
&lt;br /&gt;
Anbieter-&amp;gt;Sorten importieren (Quick &amp;amp; Dirty)&lt;br /&gt;
&lt;br /&gt;
Vorsicht deckt nicht alles ab (z.B. Kommas im Namen der Sorte bringt den Selektor durcheinander. Die sollten eigentlich escaped werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&lt;br /&gt;
// Import&lt;br /&gt;
&lt;br /&gt;
echo(&amp;#039;&amp;lt;pre&amp;gt;&amp;#039;);&lt;br /&gt;
$CsvString = &amp;#039;ProSpecieRara,Eschlauch|Stuttgarter Sommer|Saxa|Paas Lintorfer Frühe|Karlsruher Markt|Schwarzwälder Ausmachbohne|Deutsche Schlangen|Ackersegen|Allerfrüheste Gelbe|Alma|Augusta|Aula|Barbara|Bendetta|Berlichinger|Bodenkraft|Bona|Carla|Centifoloa|Christa|Cosima|Datura|Deodora|Erdgold|Fina|Forelle|Industrie|Isola|Jubel|Lerche|Lori|Maritta|Parnassia|Pinki|Pirat|Rosafolia|Rote gelbe frühe|Saphir|Spätrot|Tasso|Voran|Woltmann|Bruni|Sirio|Früher Heinrich|Juwel|Ruhm von Braunschweig|Erstling|Kaiser Selbstschluss|Ibis|Dasinger Blaue|Kapitän Wedding|Phänomen|Trebona|Großmutter Witt|Howard Deutsche Tomate|Deutsche Riesentraube|Fruchtaroma|Lukullus|Quedlinburger frühe Liebe|Rheinlands Ruhm&lt;br /&gt;
Arche Noah,Mangoldrübe|Neckarkönigin|Eschlauch|Stuttgarter Sommer|Stuttgarter Sommer|Karlsruher Markt|Paas Lintorfer Frühe|Saxa|Schwarzwälder Ausmachbohne|Deutsche Schlangen|Ackersegen|Allerfrüheste Gelbe|Alma|Augusta|Aula|Barbara|Bendetta|Berlichinger|Bodenkraft|Bona|Carla|Centifoloa|Christa|Datura|Deodora|Erdgold|Fina|Forelle|Industrie|Isola|Jubel|Lerche|Lori|Maritta|Parnassia|Pinki|Pirat|Rosafolia|Rote gelbe frühe|Saphir|Spätrot|Tasso|Voran|Bruni|Sirio|Früher Heinrich|Juwel|Ruhm von Braunschweig|Kaiser Selbstschluss|Ibis|Dasinger Blaue|Kapitän Wedding|Phänomen|Trebona|Großmutter Witt|Howard Deutsche Tomate|Deutsche Riesentraube|Fruchtaroma|Lukullus|Quedlinburger frühe Liebe|Rheinlands Ruhm&lt;br /&gt;
Biolandhof Jeebel,Rosa Tannenzapfen|Schwarze Ungarin|Bamberger Hörnle&lt;br /&gt;
Genbänkle,Späths Alblinse I|Späths Alblinse II|Späths Hellerlinse|Wilder Heinrich|Rosa Tannenzapfen|Schwarze Ungarin|Rotschalige aus St. Petersburg|Neckarkönigin|Eschlauch|Schwarzwälder Butterkraut&lt;br /&gt;
&amp;quot;Manfred Gerber, Freie-Saaten.org e.V.&amp;quot;,Pfälzer|Gelber Badischer|Schwarzwälder Butterkraut|Deutscher Großfrüchtiger|Stuttgarter Riesen&lt;br /&gt;
Dreschflegel,Neckarruhm weiß|Perle von Marbach|Lauchhellerkraut|Kerbelrübe|Ulmer Ochsenhörner|Forellenschluß&lt;br /&gt;
IPK,Neckarruhm weiß|Schwabenland|Sechswochenkartoffel|Stuttgarter Spitzkohl|Neckarperle|Neckarperle|Wunder von Stuttgarter|Neckarriesen|Neckarruhm|Neckarsegen|Stuttgarter|Roter Neckarruhm|Stuttgarter Sommer|Stuttgarter Sommer&lt;br /&gt;
Dürr Samen,Roter Neckarruhm&lt;br /&gt;
Saatgut-Garten Wolfegg,Winter Blumenkohl|Pfatterrer Bohne|Schwabenbohne&lt;br /&gt;
Sativa Dettighofen GmbH,Neckarperle|Neckarperle|Neckargold&lt;br /&gt;
Kartoffel Müller,Rotschalige aus St. Petersburg&lt;br /&gt;
Gärtnerei Stollmaier,Rote Söflinger Zwiebel|Schildampfer&lt;br /&gt;
Garten des Lebens,Schwarzes Rübchen|Altöttinger Großkopfada|Krimberger Erbse&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
//$csv = str_getcsv($data);&lt;br /&gt;
$csv=array();&lt;br /&gt;
$Data = str_getcsv($CsvString, &amp;quot;\n&amp;quot;); //parse the rows&lt;br /&gt;
foreach($Data as &amp;amp;$Row) {&lt;br /&gt;
  $Row = str_getcsv($Row); //parse the items in rows&lt;br /&gt;
  // find provider&lt;br /&gt;
  $provider = $pages-&amp;gt;get(&amp;#039;template=provider_single,title=&amp;#039;.$Row[0].&amp;#039;&amp;#039;);&lt;br /&gt;
  if(!$provider-&amp;gt;id) {&lt;br /&gt;
    echo(&amp;#039;Anbieter nicht gefunden: &amp;#039;.$Row[0].chr(10));&lt;br /&gt;
  }else{&lt;br /&gt;
    echo(&amp;#039;Anbieter gefunden: &amp;#039;.$Row[0].chr(10));&lt;br /&gt;
    $provider-&amp;gt;of(false);&lt;br /&gt;
    //  import&lt;br /&gt;
    $mySorts = explode(&amp;#039;|&amp;#039;,$Row[1]);&lt;br /&gt;
    // add sorts&lt;br /&gt;
    foreach($mySorts as $mySort){&lt;br /&gt;
      echo(&amp;quot;Suche Sorte: &amp;quot;.$mySort.&amp;#039;... &amp;#039;);&lt;br /&gt;
      $sort = $pages-&amp;gt;get(&amp;#039;template=sorts_single,title=&amp;#039;.$mySort);&lt;br /&gt;
      if($sort-&amp;gt;id){&lt;br /&gt;
        // addSort&lt;br /&gt;
        echo(&amp;#039;Hinzufügen: &amp;#039;.$mySort.&amp;#039;zu page id: &amp;#039;.$sort-&amp;gt;id.chr(10));&lt;br /&gt;
        $provider-&amp;gt;pr_sorts-&amp;gt;add($sort-&amp;gt;id);&lt;br /&gt;
        $provider-&amp;gt;save();&lt;br /&gt;
      }else echo(&amp;#039;Sorte nicht gefunden&amp;#039;.chr(10));&lt;br /&gt;
    }&lt;br /&gt;
    //ar_dump($mySorts);&lt;br /&gt;
  }&lt;br /&gt;
  //var_dump($provider-&amp;gt;id);&lt;br /&gt;
}&lt;br /&gt;
echo(&amp;#039;&amp;lt;/pre&amp;gt;&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Import END&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Projekt_-_Genb%C3%A4nkle&amp;diff=23358</id>
		<title>Projekt - Genbänkle</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Projekt_-_Genb%C3%A4nkle&amp;diff=23358"/>
		<updated>2018-10-09T09:04:12Z</updated>

		<summary type="html">&lt;p&gt;93.208.102.183: Die Seite wurde neu angelegt: „Notitzen und Snippets  Anbieter-&amp;gt;Sorten importieren (Quick &amp;amp; Dirty)  &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; // Import  echo(&amp;#039;&amp;lt;pre&amp;gt;&amp;#039;); $CsvString = &amp;#039;ProSpecieRara,Eschlauc…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Notitzen und Snippets&lt;br /&gt;
&lt;br /&gt;
Anbieter-&amp;gt;Sorten importieren (Quick &amp;amp; Dirty)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&lt;br /&gt;
// Import&lt;br /&gt;
&lt;br /&gt;
echo(&amp;#039;&amp;lt;pre&amp;gt;&amp;#039;);&lt;br /&gt;
$CsvString = &amp;#039;ProSpecieRara,Eschlauch|Stuttgarter Sommer|Saxa|Paas Lintorfer Frühe|Karlsruher Markt|Schwarzwälder Ausmachbohne|Deutsche Schlangen|Ackersegen|Allerfrüheste Gelbe|Alma|Augusta|Aula|Barbara|Bendetta|Berlichinger|Bodenkraft|Bona|Carla|Centifoloa|Christa|Cosima|Datura|Deodora|Erdgold|Fina|Forelle|Industrie|Isola|Jubel|Lerche|Lori|Maritta|Parnassia|Pinki|Pirat|Rosafolia|Rote gelbe frühe|Saphir|Spätrot|Tasso|Voran|Woltmann|Bruni|Sirio|Früher Heinrich|Juwel|Ruhm von Braunschweig|Erstling|Kaiser Selbstschluss|Ibis|Dasinger Blaue|Kapitän Wedding|Phänomen|Trebona|Großmutter Witt|Howard Deutsche Tomate|Deutsche Riesentraube|Fruchtaroma|Lukullus|Quedlinburger frühe Liebe|Rheinlands Ruhm&lt;br /&gt;
Arche Noah,Mangoldrübe|Neckarkönigin|Eschlauch|Stuttgarter Sommer|Stuttgarter Sommer|Karlsruher Markt|Paas Lintorfer Frühe|Saxa|Schwarzwälder Ausmachbohne|Deutsche Schlangen|Ackersegen|Allerfrüheste Gelbe|Alma|Augusta|Aula|Barbara|Bendetta|Berlichinger|Bodenkraft|Bona|Carla|Centifoloa|Christa|Datura|Deodora|Erdgold|Fina|Forelle|Industrie|Isola|Jubel|Lerche|Lori|Maritta|Parnassia|Pinki|Pirat|Rosafolia|Rote gelbe frühe|Saphir|Spätrot|Tasso|Voran|Bruni|Sirio|Früher Heinrich|Juwel|Ruhm von Braunschweig|Kaiser Selbstschluss|Ibis|Dasinger Blaue|Kapitän Wedding|Phänomen|Trebona|Großmutter Witt|Howard Deutsche Tomate|Deutsche Riesentraube|Fruchtaroma|Lukullus|Quedlinburger frühe Liebe|Rheinlands Ruhm&lt;br /&gt;
Biolandhof Jeebel,Rosa Tannenzapfen|Schwarze Ungarin|Bamberger Hörnle&lt;br /&gt;
Genbänkle,Späths Alblinse I|Späths Alblinse II|Späths Hellerlinse|Wilder Heinrich|Rosa Tannenzapfen|Schwarze Ungarin|Rotschalige aus St. Petersburg|Neckarkönigin|Eschlauch|Schwarzwälder Butterkraut&lt;br /&gt;
&amp;quot;Manfred Gerber, Freie-Saaten.org e.V.&amp;quot;,Pfälzer|Gelber Badischer|Schwarzwälder Butterkraut|Deutscher Großfrüchtiger|Stuttgarter Riesen&lt;br /&gt;
Dreschflegel,Neckarruhm weiß|Perle von Marbach|Lauchhellerkraut|Kerbelrübe|Ulmer Ochsenhörner|Forellenschluß&lt;br /&gt;
IPK,Neckarruhm weiß|Schwabenland|Sechswochenkartoffel|Stuttgarter Spitzkohl|Neckarperle|Neckarperle|Wunder von Stuttgarter|Neckarriesen|Neckarruhm|Neckarsegen|Stuttgarter|Roter Neckarruhm|Stuttgarter Sommer|Stuttgarter Sommer&lt;br /&gt;
Dürr Samen,Roter Neckarruhm&lt;br /&gt;
Saatgut-Garten Wolfegg,Winter Blumenkohl|Pfatterrer Bohne|Schwabenbohne&lt;br /&gt;
Sativa Dettighofen GmbH,Neckarperle|Neckarperle|Neckargold&lt;br /&gt;
Kartoffel Müller,Rotschalige aus St. Petersburg&lt;br /&gt;
Gärtnerei Stollmaier,Rote Söflinger Zwiebel|Schildampfer&lt;br /&gt;
Garten des Lebens,Schwarzes Rübchen|Altöttinger Großkopfada|Krimberger Erbse&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
//$csv = str_getcsv($data);&lt;br /&gt;
$csv=array();&lt;br /&gt;
$Data = str_getcsv($CsvString, &amp;quot;\n&amp;quot;); //parse the rows&lt;br /&gt;
foreach($Data as &amp;amp;$Row) {&lt;br /&gt;
  $Row = str_getcsv($Row); //parse the items in rows&lt;br /&gt;
  // find provider&lt;br /&gt;
  $provider = $pages-&amp;gt;get(&amp;#039;template=provider_single,title=&amp;#039;.$Row[0].&amp;#039;&amp;#039;);&lt;br /&gt;
  if(!$provider-&amp;gt;id) {&lt;br /&gt;
    echo(&amp;#039;Anbieter nicht gefunden: &amp;#039;.$Row[0].chr(10));&lt;br /&gt;
  }else{&lt;br /&gt;
    echo(&amp;#039;Anbieter gefunden: &amp;#039;.$Row[0].chr(10));&lt;br /&gt;
    $provider-&amp;gt;of(false);&lt;br /&gt;
    //  import&lt;br /&gt;
    $mySorts = explode(&amp;#039;|&amp;#039;,$Row[1]);&lt;br /&gt;
    // add sorts&lt;br /&gt;
    foreach($mySorts as $mySort){&lt;br /&gt;
      echo(&amp;quot;Suche Sorte: &amp;quot;.$mySort.&amp;#039;... &amp;#039;);&lt;br /&gt;
      $sort = $pages-&amp;gt;get(&amp;#039;template=sorts_single,title=&amp;#039;.$mySort);&lt;br /&gt;
      if($sort-&amp;gt;id){&lt;br /&gt;
        // addSort&lt;br /&gt;
        echo(&amp;#039;Hinzufügen: &amp;#039;.$mySort.&amp;#039;zu page id: &amp;#039;.$sort-&amp;gt;id.chr(10));&lt;br /&gt;
        $provider-&amp;gt;pr_sorts-&amp;gt;add($sort-&amp;gt;id);&lt;br /&gt;
        $provider-&amp;gt;save();&lt;br /&gt;
      }else echo(&amp;#039;Sorte nicht gefunden&amp;#039;.chr(10));&lt;br /&gt;
    }&lt;br /&gt;
    //ar_dump($mySorts);&lt;br /&gt;
  }&lt;br /&gt;
  //var_dump($provider-&amp;gt;id);&lt;br /&gt;
}&lt;br /&gt;
echo(&amp;#039;&amp;lt;/pre&amp;gt;&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Import END&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>93.208.102.183</name></author>
	</entry>
</feed>