Zum Inhalt springen

Download Formular

Erstellt am 9. Mai 2007 · 4 Antworten · letzte Antwort am 14. Mai 2007

Tags: Frage

ex-sys ·

Hallo zusammen,
ich habe es endlich geschafft die Extension ab_downloads (modern downloads) einzurichten.
Jetzt möchte ich die Downloads per eMail versenden und habe dafür die Extension th_mailformplus installiert.
Wie kann ich das Template bzw. TypoScript von ab_downloads in das Template von th_mailformplus integrieren?

Wenn ich den folgenden Code in das Template von th_mailformplus schreibe kann die Extension mit den Platzhaltern nichts anfangen. . .:

<!-- ###VIEW_TREE### begin -->
	<div class="tx_abdownloads_treeView_category tx_abdownloads_treeView_category_level_###LEVEL###">
		<a name="###CATEGORY_ANCHOR###"></a>
	<br />
		<div style="margin-left:###INDENTION###px;">
			###CATEGORY_ICON### ###CATEGORY_LABEL### 
			###DOWNLOAD_ADD_NEW###

			###CATEGORY_DESCRIPTION###
		</div>
	</div>
	<hr color="#336699"></hr>
	<br />
	<!-- ###TREE_DOWNLOAD### begin -->
	<div class="tx_abdownloads_treeView_downloads">
		<div style="margin-left:###INDENTION###px;">
		
		<input type="checkbox" name="downloads" value=" ###DOWNLOAD_FILENAME### ">
		###DOWNLOAD_LABEL###
		<br />
		###DOWNLOAD_DESCRIPTION###
		<br />
		###DOWNLOAD_TEASER###
		###DOWNLOAD_DETAILS###
		</div>
	</div>
	<hr></hr>	
	<br />
	<!-- ###TREE_DOWNLOAD### end -->
<!-- ###VIEW_TREE### end -->

Was muss ich wo ändern damit ich in multipage forms den Code von ab_downloads nutzen kann?

Unbekannter Benutzer ·

Das geht so ohne weiteres gar nicht.

Da müsstest du über die Möglichkeit eigene Marker für Mailform_plus im TS zu definieren die Downloads aus der Datenbank holen und daraus eine Ausgabe basteln, die du dann in Mailform_plus benutzen kannst.

ex-sys ·
Kitsunet schrieb

Das geht so ohne weiteres gar nicht.

Da müsstest du über die Möglichkeit eigene Marker für Mailform_plus im TS zu definieren die Downloads aus der Datenbank holen und daraus eine Ausgabe basteln, die du dann in Mailform_plus benutzen kannst.

Kannst du mir ein Beispiel für einen eigenen Marker geben?
Ich gehe mal davon aus das es nicht reicht die Marker aus dem File "class.tx_abdownloads_pi1.php" zu übernehmen.

ex-sys ·

Sofern es jemanden interessiert - mit ein paar Zeilen Code habe ich das ja doch noch gelöst bekommen.

Als erstes habe ich die Extension "th_mailformplus" wieder deinstalliert denn die wird nicht benötigt.
Ein normales eMail-Formular das die Standart-Komponente von Typo3 hervorbringt reicht völligst.
Dafür wurde die Extension "page_php_content" installiert um php-Code im content einfügen zu können. Das Plugin sollte jetzt auf der gleichen Site eingerichtet werden die auch die LIST/TREE/CATALOG/SEARCH/TOP plugins der Extension "ab_downloads" enthält.
Wichtig: Das php-Plugin bzw. der php-Code kommt VOR die Extension "ab_downloads"!

Um die Daten aus dem eMail-Formular übernehmen zu können benötigt man folgende Zeilen Code:

<?php
if (!isset($_POST['name']) || !isset($_POST['address']) || !isset($_POST['email']) || !isset($_POST['contact'])) header ("Location: index.php?id=490");
echo "<form action=\"dl_send.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"email\" value=\"".$_POST['email']."\" />\n";
echo "<input type=\"hidden\" name=\"address\" value=\"".$_POST['address']."\" />\n";
echo "<input type=\"hidden\" name=\"name\" value=\"".$_POST['name']."\" />\n";
echo "<input type=\"hidden\" name=\"copy\" value=\"".$_POST['contact']."\" />\n";
?>

NACH der Extension "ab_downloads" kommt ein weiteres plugin "HTML" - hier reicht die Standart-Möglichkeit in Typo3 HTML-Code einfügen zu können.
Dies ist dann für den send-button:

<input type="submit" value="senden" name="send" />
</form>

Im Template von "ab_downloads" wird dann noch eine Checkbox benötigt:

<input type="checkbox" name="download[]" value="###DOWNLOAD_LABEL###;;;###DOWNLOAD_HREF###">

Um den Spass komplett zu machen: Die Datei dl_send.php anlegen mit folgenden Zeilen Code:

<?php
function checkemail($email) {
if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
return false;
}
return true;
}

if (isset($_POST['name']) && isset($_POST['address']) && isset($_POST['email']) && isset($_POST['copy'])) {

if (!checkemail($_POST['email'])) {
	header("Location: index.php?id=650");
	exit;
}

$to = $_POST['email'];
$subject = "Download Auswahl";
$message = "Sehr geehrter Kunde,\n\n
Sie haben auf www.info.de folgende Dateien ausgewählt:\n\n"; 

for ($i=0; $i<count($_POST['download']); $i++) {
	$arr_dl = explode (';;;', $_POST['download'][$i]);
	$message .= utf8_encode ($arr_dl[0])."\nhttp://www.info.de/".$arr_dl[1]."\n\n";
} 

$message .= "\nBitte klicken Sie auf die Links um die Dateien zu speichern.\n\n\n
Mit freundlichen Grüßen,\n\n\n
aus Aachen ";

  $header = "From: INFO <info@info.de>\n";
  $header .= "Reply-To: info@info.de\n";
  $header .= "Content-Type: text/plain; charset=UTF-8";

@mail($to, $subject, $message, $header);

$to = 'info@info.de';
$subject = "Download Auswahl";
$message = "Der Kunde: ".$_POST['name']."\n
eMail:  ".$_POST['email']."\n
Adresse:  ".$_POST['address']."\n
hat folgende Dateien auf www.info.de ausgewählt:\n\n"; 

for ($i=0; $i<count($_POST['download']); $i++) {
	$arr_dl = explode (';;;', $_POST['download'][$i]);
	$message .= $arr_dl[0]."\nhttp://www.info.de/".$arr_dl[1]."\n\n";
}

  $header = "From: INFO <info@info.de>\n";
  $header .= "Reply-To: info@info.de\n";
  $header .= "Content-Type: text/plain; charset=UTF-8";

@mail($to, $subject, $message, $header);
header ("Location: index.php?id=660");
exit;
}
header ("Location: index.php?id=490");
?>

Die Datei dl_send.php anschließend in das root-Verzeichnis übertragen und ab dann sollten Kunden oder sonstige Interessenten die Download-Links per eMail erhalten.

Sofern ich nichts vergessen habe müsste das so funktionieren.

Bis zum nächsten Mal . . . 🙂
Michael

ex-sys ·

Sofern es jemanden interessiert - mit ein paar Zeilen Code habe ich das ja doch noch gelöst bekommen.

Als erstes habe ich die Extension "th_mailformplus" wieder deinstalliert denn die wird nicht benötigt.
Ein normales eMail-Formular das die Standart-Komponente von Typo3 hervorbringt reicht völligst.
Dafür wurde die Extension "page_php_content" installiert um php-Code im content einfügen zu können. Das Plugin sollte jetzt auf der gleichen Site eingerichtet werden die auch die LIST/TREE/CATALOG/SEARCH/TOP plugins der Extension "ab_downloads" enthält.
Wichtig: Das php-Plugin bzw. der php-Code kommt VOR die Extension "ab_downloads"!

Um die Daten aus dem eMail-Formular übernehmen zu können benötigt man folgende Zeilen Code:

<?php
if (!isset($_POST['name']) || !isset($_POST['address']) || !isset($_POST['email']) || !isset($_POST['contact'])) header ("Location: index.php?id=490");
echo "<form action=\"dl_send.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"email\" value=\"".$_POST['email']."\" />\n";
echo "<input type=\"hidden\" name=\"address\" value=\"".$_POST['address']."\" />\n";
echo "<input type=\"hidden\" name=\"name\" value=\"".$_POST['name']."\" />\n";
echo "<input type=\"hidden\" name=\"copy\" value=\"".$_POST['contact']."\" />\n";
?>

NACH der Extension "ab_downloads" kommt ein weiteres plugin "HTML" - hier reicht die Standart-Möglichkeit in Typo3 HTML-Code einfügen zu können.
Dies ist dann für den send-button:

<input type="submit" value="senden" name="send" />
</form>

Im Template von "ab_downloads" wird dann noch eine Checkbox benötigt:

<input type="checkbox" name="download[]" value="###DOWNLOAD_LABEL###;;;###DOWNLOAD_HREF###">

Um den Spass komplett zu machen: Die Datei dl_send.php anlegen mit folgenden Zeilen Code:

<?php
function checkemail($email) {
if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
return false;
}
return true;
}

if (isset($_POST['name']) && isset($_POST['address']) && isset($_POST['email']) && isset($_POST['copy'])) {

if (!checkemail($_POST['email'])) {
	header("Location: index.php?id=650");
	exit;
}

$to = $_POST['email'];
$subject = "Download Auswahl";
$message = "Sehr geehrter Kunde,\n\n
Sie haben auf www.info.de folgende Dateien ausgewählt:\n\n"; 

for ($i=0; $i<count($_POST['download']); $i++) {
	$arr_dl = explode (';;;', $_POST['download'][$i]);
	$message .= utf8_encode ($arr_dl[0])."\nhttp://www.info.de/".$arr_dl[1]."\n\n";
} 

$message .= "\nBitte klicken Sie auf die Links um die Dateien zu speichern.\n\n\n
Mit freundlichen Grüßen,\n\n\n
aus Aachen ";

  $header = "From: INFO <info@info.de>\n";
  $header .= "Reply-To: info@info.de\n";
  $header .= "Content-Type: text/plain; charset=UTF-8";

@mail($to, $subject, $message, $header);

$to = 'info@info.de';
$subject = "Download Auswahl";
$message = "Der Kunde: ".$_POST['name']."\n
eMail:  ".$_POST['email']."\n
Adresse:  ".$_POST['address']."\n
hat folgende Dateien auf www.info.de ausgewählt:\n\n"; 

for ($i=0; $i<count($_POST['download']); $i++) {
	$arr_dl = explode (';;;', $_POST['download'][$i]);
	$message .= $arr_dl[0]."\nhttp://www.info.de/".$arr_dl[1]."\n\n";
}

  $header = "From: INFO <info@info.de>\n";
  $header .= "Reply-To: info@info.de\n";
  $header .= "Content-Type: text/plain; charset=UTF-8";

@mail($to, $subject, $message, $header);
header ("Location: index.php?id=660");
exit;
}
header ("Location: index.php?id=490");
?>

Die Datei dl_send.php anschließend in das root-Verzeichnis übertragen und ab dann sollten Kunden oder sonstige Interessenten die Download-Links per eMail erhalten.

Sofern ich nichts vergessen habe müsste das so funktionieren.

Bis zum nächsten Mal . . . 🙂
Michael