Kontaktformular auf jeder Seite anzeigen

Gesperrt
Sam001
Beiträge: 14
Registriert: Do 25. Okt 2007, 10:48
Kontaktdaten:

Kontaktformular auf jeder Seite anzeigen

Beitrag von Sam001 » Fr 9. Okt 2009, 09:30

Hallo Zusammen,

ich nutze das Standartkontaktformular in meiner Contenidoversion 4.6.15. Auf der Website die ich zu Zeit erstelle soll ein kleines Formular (Schnellkontakt) immer sichtbar sein und hat auf "jeder" Seite oben rechts seinen Platz. So weit so gut.

Mein Problem an der ganzen Sache ist, dass ich mehrere Temblates nutze und auch mehrere Sprachen. Nun muss ich die Moduleinstellungen (Betreff, E-Mailadresse usw.) für mein Kontaktformular in jedem Temblate eingeben was ziehmlich umständlich ist und bei späteren Änderungen auch ein hohes Fehlerpotential bietet.

Gut währe es wenn die Moduleinstellungen nur einmal eingegeben werden müssten und das Formular von jeder Seite aus darauf zugreift.

Kennt jemand von euch ein solches Modul bzw. einen Trick wie man das realisieren kann? Ich habe schon geforscht hier im Forum, erfolglos.

Vielen Dank für eure Hilfe
Sam001

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Kontaktformular auf jeder Seite anzeigen

Beitrag von Oldperl » Fr 9. Okt 2009, 10:09

Hallo Sam001,
Sam001 hat geschrieben:Gut währe es wenn die Moduleinstellungen nur einmal eingegeben werden müssten und das Formular von jeder Seite aus darauf zugreift.
Wenn sich das nicht dauernd ändert, schreib es "hardcoded" in dein Modul.
Ansonsten nimm eine sprachbezogene Mandanteneinstellung und lege damit die Einstellung(en) in der DB ab.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Sam001
Beiträge: 14
Registriert: Do 25. Okt 2007, 10:48
Kontaktdaten:

Re: Kontaktformular auf jeder Seite anzeigen

Beitrag von Sam001 » Fr 9. Okt 2009, 11:22

Hallo Ortwin,

danke für deine Hilfe. Leider bin ich in PHP nicht so fit. Wie könnte ich meine Muduleinstellungen den Fix in das Modul schreiben?

Hier mein Code

Input

Code: Alles auswählen

?><?php
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname  :      Contact form
* Author(s)   :     Andreas Lindner
* Copyright   :     Contenido - four for business
* Created     :     12.08.2005
************************************************/
?>

<table border="0">
	<tr>
		<td><?php echo mi18n("Absender EMail");?></td>
		<td><input type="text" name="<?php echo "CMS_VAR[0]";?>" value="<?php echo "CMS_VALUE[0]"; ?>"></td>
	</tr>
	<tr>
		<td><?php echo mi18n("Absender Name");?></td>
		<td><input type="text" name="<?php echo "CMS_VAR[2]";?>" value="<?php echo "CMS_VALUE[2]"; ?>"></td>
	</tr>
	<tr>
		<td><?php echo mi18n("Empfänger EMail");?></td>
		<td><input type="text" name="<?php echo "CMS_VAR[1]";?>" value="<?php echo "CMS_VALUE[1]"; ?>"></td>
	</tr>
	<tr>
		<td><?php echo mi18n("Betreff");?></td>
		<td><input type="text" name="<?php echo "CMS_VAR[3]";?>" value="<?php echo "CMS_VALUE[3]"; ?>"></td>
	</tr>
	<?php
	$c1 = '';
	$c2 = '';
	$c3 = '';
	$c4 = '';
	switch (strtolower("CMS_VALUE[4]")) {
		case "smtp" :
			$c1 = ' checked';
			break;
		case "mail" :
			$c2 = ' checked';
			break;
		case "sendmail" :
			$c3 = ' checked';
			break;
		case "qmail" :
			$c4 = ' checked';
			break;
		default :
			$c3 = ' checked';
	}
	?>
	<tr>
		<td valign="top"><?php echo mi18n("Mailer");?></td>
		<td>
			<input type="radio" name="<?php echo "CMS_VAR[4]";?>" value="mail"<?php echo $c2;?>>&nbsp;<?php echo mi18n("mail");?><br/>
			<input type="radio" name="<?php echo "CMS_VAR[4]";?>" value="qmail"<?php echo $c4;?>>&nbsp;<?php echo mi18n("qmail");?><br/>
			<input type="radio" name="<?php echo "CMS_VAR[4]";?>" value="sendmail"<?php echo $c3;?>>&nbsp;<?php echo mi18n("sendmail");?><br/>
			<input type="radio" name="<?php echo "CMS_VAR[4]";?>" value="smtp"<?php echo $c1;?>>&nbsp;<?php echo mi18n("smtp");?><br/>
		</td>
	</tr>
	<tr>
		<td><?php echo mi18n("SMTP Host");?></td>
		<td><input type="text" name="<?php echo "CMS_VAR[5]";?>" value="<?php echo "CMS_VALUE[5]"; ?>"></td>
	</tr>
	<tr>
		<td><?php echo mi18n("SMTP User");?></td>
		<td><input type="text" name="<?php echo "CMS_VAR[6]";?>" value="<?php echo "CMS_VALUE[6]"; ?>"></td>
	</tr>
	<tr>
		<td><?php echo mi18n("SMTP Passwort");?></td>
		<td><input type="text" name="<?php echo "CMS_VAR[7]";?>" value="<?php echo "CMS_VALUE[7]"; ?>"></td>
	</tr>
</table>
<?php
Output

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      Contact form
* Author(s)   :     Andreas Lindner
* Copyright   :     Contenido - four for business
* Created     :     12.08.2005
************************************************/

#Includes
cInclude("classes", "class.phpmailer.php");

if (!isset ($_POST['send'])) {
	#Form has not been sent yet
	cInclude('classes', 'class.article.php');
	cInclude('classes', 'class.template.php');

	#Create contact form
	echo '<form name="kontaktform" id="kontaktform" method="post" action="'.$sess->url("front_content.php?idcat=$idcat;idart=$idart;parentid=$parentid").'">';
	echo '<input type="hidden" name="send" value="1" class="hidden-input" />';

	if (!is_object($tpl)) {
		$tpl = new Template;
	}
	$tpl->set("s", "ANREDE", mi18n("Anrede"));
	$tpl->set("s", "ANREDE_OPTION1", mi18n("Herr"));
	$tpl->set("s", "ANREDE_OPTION2", mi18n("Frau"));
	$tpl->set("s", "NACHNAME", mi18n("Name"));
	$tpl->set("s", "VORNAME", mi18n("Vorname"));
	$tpl->set("s", "FIRMA", mi18n("Firma"));
	$tpl->set("s", "STRASSE", mi18n("Straße/Nr."));
	$tpl->set("s", "PLZORT", mi18n("PLZ/Ort"));
	$tpl->set("s", "TELEFON", mi18n("Telefon"));
	$tpl->set("s", "EMAIL", mi18n("eMail"));
	$tpl->set("s", "ANLIEGEN", mi18n("Nachricht"));
	$tpl->set("s", "PFLICHTFELDER", mi18n("Pflichtfelder"));
	$tpl->set("s", "ABSCHICKEN", mi18n("absenden"));
	$tpl->set("s", "LOESCHEN", mi18n("Löschen"));
	$tpl->set("s", "PRODUKTE", mi18n("Produkte"));

	$tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/kontaktformular_quick.html");
	echo '</form>';
} elseif ($_POST['send'] == 1) {
	#Form has been sent

	#Check user input
	$noerrors = true;
	$msg = '';
	if ($_POST['vorname'] == '') {
		$noerrors = false;
		$msg .= '<li>'.mi18n("Bitte geben Sie Ihren Vornamen ein!").'</li>';
	}
	if ($_POST['nachname'] == '') {
		$noerrors = false;
		$msg .= '<li>'.mi18n("Bitte geben Sie Ihren Namen ein!").'</li>';
	}
	if ($_POST['firma'] == '') {
		$noerrors = false;
		$msg .= '<li>'.mi18n("Bitte geben Sie Ihre Firma ein!").'</li>';
	}
	if ($_POST['telefon'] == '') {
		$noerrors = false;
		$msg .= '<li>'.mi18n("Bitte geben Sie Ihre Telefonnummer ein!").'</li>';
	}

	if ($noerrors == false) {
		#Errors have been found
		echo '<p>';
		echo '<strong>';
		echo mi18n ("Beim Versenden sind folgende Fehler aufgetreten:")."<br/>";
		echo '</strong>';
		echo '<ul>'.$msg.'</ul>';
		echo '<p>'.'<a href="javascript:history.back()" class="back-link">'.mi18n("Zurück").'</a>'.'</p>';
		echo '</p>';
	} else {
		#No errors, create and send mail
		$mail = new phpmailer;
		$mail_body = '<html><head></head><body bgcolor="#ffffff"><table cellspacing="0" cellpadding="2" border="0">';

		if (is_array($_POST)) {
			foreach ($_POST as $key => $value) {
				if ($key != 'send') {
					$mail_body .= "<tr><td>$key</td><td>$value</td></tr>";
				}
			}
		}

		$mail_body .= '</table></bo'.'dy></html>';
		$mail->Host = "localhost";
		$mail->IsHTML(true);

		#Get mailer from settings
		switch (strtolower("CMS_VALUE[4]")) {
			case "smtp" :
				$mail->IsSMTP();
				$host = "CMS_VALUE[5]";
				$user = "CMS_VALUE[6]";
				$password = "CMS_VALUE[7]";
				if (($host != '') && ($user != '') && ($password != '')) {
					$mail-> $SMTPAuth = true;
					$mail->Host = $host;
					$mail->Username = $user;
					$mail->Password = $password;
				}
				break;
			case "mail" :
				$mail->IsMail();
				break;
			case "sendmail" :
				$mail->IsSendmail();
				break;
			case "qmail" :
				$mail->IsQmail();
				break;
			default :
				}
		$mail->From = "CMS_VALUE[0]";
		$mail->FromName = "CMS_VALUE[2]";
		$mail->AddAddress("CMS_VALUE[1]", "");
		$mail->Subject = "CMS_VALUE[3]";
		$mail->Body = $mail_body;
		$mail->WordWrap = 50;
		$mail->Send();
	
		#Display message after mail is sent
		echo '<p>';
		echo '<strong>';
		echo mi18n("Ihr Anliegen wurde uns übermittelt. Vielen Dank!")."<br/>";
		echo '</p>';
		echo '</strong>';
	}
}
?>
Vielen Dank für deine Hilfe.

Gruß Sam

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Kontaktformular auf jeder Seite anzeigen

Beitrag von idea-tec » Fr 9. Okt 2009, 11:50

im Output, das hier entsprechend ändern:

Code: Alles auswählen

      $mail->From = "absender-email@email.de";
      $mail->FromName = "Anzeige-Name der eMail-Adresse";
      $mail->AddAddress("empfänger-email@email.de", "");
      $mail->Subject = "Betreff";
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

Sam001
Beiträge: 14
Registriert: Do 25. Okt 2007, 10:48
Kontaktdaten:

Re: Kontaktformular auf jeder Seite anzeigen

Beitrag von Sam001 » Fr 9. Okt 2009, 12:04

Vielen Dank für die Hilfe.

Gruß Sam

Gesperrt