Zurück   xt:Commerce Webshop Shop Support > xt:Commerce Shopsoftware Community Area > Sandkasten

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 22.03.2006, 18:30
Erfahrener Benutzer
 
Registriert seit: 22.02.2006
Beiträge: 120
Beitrag

Manchmal reicht es nicht aus, dass das Kontaktformular nur unter dem Link "Kontakt" zu finden ist - Man kann es auch hinter (?ber den ContentManager verwaltete) Seiten h?ngen.

In Zeile 45 bis 54 der Datei "shop_content.php" (im Hauptverzeichnis des Shops) wird festgelegt, welcher Content-Seite das Kontaktformular angeh?ngt werden soll. Voreingestellt ist hier die Nummer 7.

Orginal
Code:
if ($_GET['coID'] != 7) {
	require (DIR_WS_INCLUDES.'header.php');
}
if ($_GET['coID'] == 7 && $_GET['action'] == 'success') {
	require (DIR_WS_INCLUDES.'header.php');
}

$smarty->assign('CONTENT_HEADING', $shop_content_data['content_heading']);

if ($_GET['coID'] == 7) {
M?chte man beispielsweise der Seite mit der Nummer 9 ebenfalls das Kontaktformular anh?ngen, sind diese Zeilen wie folgt zu ver?ndern

Ge?ndert
Code:
if ($_GET['coID'] != 7 && $_GET['coID'] != 9) { // "9" = ID der zus?tzlichen Seite mit Kontaktformular
	require (DIR_WS_INCLUDES.'header.php');
}
if (($_GET['coID'] == 7 && $_GET['action'] == 'success')||($_GET['coID'] == 9 && $_GET['action'] == 'success')) {
	require (DIR_WS_INCLUDES.'header.php');
}

$smarty->assign('CONTENT_HEADING', $shop_content_data['content_heading']);

if ($_GET['coID'] == 7 || $_GET['coID'] == 9) {
In meinem Fall musste das Kontaktformular aber auch noch erweitert werden, da es zwei unterschiedliche Kontaktformulare geben sollte: Einmal ein "einfaches" und dann ein "erweitertes", in dem der Kunde Stra?e, PLZ und Ort sowie Telefonnummer angeben kann, um ihm konkretes Infomaterial auch per Post zuzuschicken.

Das ist nat?rlich ein bisschen aufw?ndiger... Vielleicht hilft's ja jemandem, der vor ?hnlichen Aufgaben steht - deshalb hier der Code der von mir ge?nderten Dateien.

VERSION: xt:Commerce 3.04



23.03.06: FEHLER ENTDECKT!! --> Bitte NICHT die "xtc_php_mail.inc.php" bearbeiten! Die muss so bleiben, wie sie ist, sonst gibt's Probleme bei Bestellungen! Sorry. Hier jetzt die korrigierte Anleitung!

Schritt 1) Erweiterung der Datei "shop_content.php" (im Hauptverzeichnis) - die ge?nderten Stellen sind durch Kommentarzeichen gekennzeichnet
Code:
<?php

/* -----------------------------------------------------------------------------------------
  $Id: shop_content.php 1303 2005-10-12 16:47:31Z mz $  

  XT-Commerce - community made shopping
  [url=http://www.xt-commerce.com]http://www.xt-commerce.com[/url]

  Copyright ? 2003 XT-Commerce
  -----------------------------------------------------------------------------------------
  based on: 
  ? 2000-2001 The Exchange Project (earlier name of osCommerce)
  ? 2002-2003 osCommerce(conditions.php,v 1.21 2003/02/13); www.oscommerce.com 
  ? 2003 nextcommerce (shop_content.php,v 1.1 2003/08/19); www.nextcommerce.org

  Released under the GNU General Public License 
  ---------------------------------------------------------------------------------------*/

require ('includes/application_top.php');
// create smarty elements
$smarty = new Smarty;
// include boxes
require (DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/source/boxes.php');

// include needed functions
require_once (DIR_FS_INC.'xtc_validate_email.inc.php');

if (GROUP_CHECK == 'true') {
	$group_check = "and group_ids LIKE '%c_".$_SESSION['customers_status']['customers_status_id']."_group%'";
}

$shop_content_query = xtc_db_query("SELECT
           content_id,
           content_title,
           content_heading,
           content_text,
           content_file
           FROM ".TABLE_CONTENT_MANAGER."
           WHERE content_group='".(int) $_GET['coID']."' ".$group_check."
           AND languages_id='".(int) $_SESSION['languages_id']."'");
$shop_content_data = xtc_db_fetch_array($shop_content_query);

$breadcrumb->add($shop_content_data['content_title'], xtc_href_link(FILENAME_CONTENT.'?coID='.(int) $_GET['coID']));

if ($_GET['coID'] != 7 && $_GET['coID'] != 9) { // "9" = Gruppe von Rezept-Info
	require (DIR_WS_INCLUDES.'header.php');
}
if (($_GET['coID'] == 7 && $_GET['action'] == 'success')||($_GET['coID'] == 9 && $_GET['action'] == 'success')) { // "9" = Gruppe von Rezept-Info
	require (DIR_WS_INCLUDES.'header.php');
}

$smarty->assign('CONTENT_HEADING', $shop_content_data['content_heading']);

if ($_GET['coID'] == 7 || $_GET['coID'] == 9) { // "9" = Gruppe von Rezept-Info

	$error = false;
	if (isset ($_GET['action']) && ($_GET['action'] == 'send')) {
 if (xtc_validate_email(trim($_POST['email']))) {

 	xtc_php_mail
  (
  $_POST['email'], 
  $_POST['name'], 
  CONTACT_US_EMAIL_ADDRESS, 
  CONTACT_US_NAME, 
  CONTACT_US_FORWARDING_STRING, 
  $_POST['email'], 
  $_POST['name'], 
  '', 
  '', 
  CONTACT_US_EMAIL_SUBJECT, 
  nl2br // einige ?nderungen, um erzeugte Mail ?bersichtlich zu gestalten
  	(
  	"Name: ". $_POST['name'] . "\n" .
  	"eMail-Adresse: ". $_POST['email'] . "\n" .
  	"Stra&szlig;e: ". $_POST['street'] . "\n" .
  	"PLZ und Ort: ". $_POST['city'] . "\n" .
  	"Telefonnummer: ". $_POST['phone'] . "\n" .
  	"\n\nNachricht: ". $_POST['message_body']
  	), 
  "Name: ". $_POST['name'] . "\n" .
  "eMail-Adresse: ". $_POST['email'] . "\n" .
  "Stra&szlig;e: ". $_POST['street'] . "\n" .
  "PLZ und Ort: ". $_POST['city'] . "\n" .
  "Telefonnummer: ". $_POST['phone'] . "\n" .
  "\n\nNachricht: ". $_POST['message_body']
  );

 	if (!isset ($mail_error)) {
  xtc_redirect(xtc_href_link(FILENAME_CONTENT, 'action=success&coID='.(int) $_GET['coID']));
 	} else {
  $smarty->assign('error_message', $mail_error);

 	}
 } else {
 	// error report hier einbauen
 	$smarty->assign('error_message', ERROR_MAIL);
 	$error = true;
 }

	}

	$smarty->assign('CONTACT_HEADING', $shop_content_data['content_title']);
	if (isset ($_GET['action']) && ($_GET['action'] == 'success')) {
 $smarty->assign('success', '1');
 $smarty->assign('BUTTON_CONTINUE', '<a href="'.xtc_href_link(FILENAME_DEFAULT).'">'.xtc_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE).'</a>');

	} else {
 if ($shop_content_data['content_file'] != '') {
 	ob_start();
 	if (strpos($shop_content_data['content_file'], '.txt'))
  echo '<pre>';
 	include (DIR_FS_CATALOG.'media/content/'.$shop_content_data['content_file']);
 	if (strpos($shop_content_data['content_file'], '.txt'))
  echo '</pre>';
 $contact_content = ob_get_contents();
 ob_end_clean();
 } else {
 	$contact_content = $shop_content_data['content_text'];
 }
 require (DIR_WS_INCLUDES.'header.php');
 $smarty->assign('CONTACT_CONTENT', $contact_content);
 $smarty->assign('FORM_ACTION', xtc_draw_form('contact_us', xtc_href_link(FILENAME_CONTENT, 'action=send&coID='.(int) $_GET['coID'])));
 $smarty->assign('INPUT_NAME', xtc_draw_input_field('name', ($error ? $_POST['name'] : $first_name)));
 $smarty->assign('INPUT_EMAIL', xtc_draw_input_field('email', ($error ? $_POST['email'] : $email_address)));
 /* EINGEF?GT */
 $smarty->assign('INPUT_STREET', xtc_draw_input_field('street', ($error ? $_POST['street'] : $from_street)));
 $smarty->assign('INPUT_CITY', xtc_draw_input_field('city', ($error ? $_POST['city'] : $from_city)));
 $smarty->assign('INPUT_PHONE', xtc_draw_input_field('phone', ($error ? $_POST['phone'] : $from_phone)));
 /* EINGEF?GT ENDE */
 $smarty->assign('INPUT_TEXT', xtc_draw_textarea_field('message_body', 'soft', 50, 15, $_POST['']));
 $smarty->assign('BUTTON_SUBMIT', xtc_image_submit('button_send.gif', IMAGE_BUTTON_CONTINUE));//$smarty->assign('BUTTON_SUBMIT', xtc_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE));
 $smarty->assign('FORM_END', '</form>');
	}

	$smarty->assign('language', $_SESSION['language']);

	$smarty->caching = 0;
	$main_content = $smarty->fetch(CURRENT_TEMPLATE.'/module/contact_us.html');

} else {

	if ($shop_content_data['content_file'] != '') {

 ob_start();

 if (strpos($shop_content_data['content_file'], '.txt'))
 	echo '<pre>';
 include (DIR_FS_CATALOG.'media/content/'.$shop_content_data['content_file']);
 if (strpos($shop_content_data['content_file'], '.txt'))
 	echo '</pre>';
 $smarty->assign('file', ob_get_contents());
 ob_end_clean();

	} else {
 $content_body = $shop_content_data['content_text'];
	}
	$smarty->assign('CONTENT_BODY', $content_body);

	$smarty->assign('BUTTON_CONTINUE', '<a href="javascript:history.back(1)">'.xtc_image_button('button_back.gif', IMAGE_BUTTON_BACK).'</a>');
	$smarty->assign('language', $_SESSION['language']);

	// set cache ID
 if (!CacheCheck()) {
 $smarty->caching = 0;
 $main_content = $smarty->fetch(CURRENT_TEMPLATE.'/module/content.html');
	} else {
 $smarty->caching = 1;
 $smarty->cache_lifetime = CACHE_LIFETIME;
 $smarty->cache_modified_check = CACHE_CHECK;
 $cache_id = $_SESSION['language'].$shop_content_data['content_id'];
 $main_content = $smarty->fetch(CURRENT_TEMPLATE.'/module/content.html', $cache_id);
	}

}

$smarty->assign('language', $_SESSION['language']);
$smarty->assign('main_content', $main_content);
$smarty->caching = 0;
if (!defined(RM))
	$smarty->load_filter('output', 'note');
$smarty->display(CURRENT_TEMPLATE.'/index.html');
?>
Schritt 2) ENTF?LLT: Die Datei "xtc_php_mail.inc.php" (im Ordner "inc") bitte NICHT bearbeiten, war ein Fehler meinerseits!

Schritt 3) Erweiterung der "lang_german.conf" (Ordner "lang"), damit man an den entsprechenden Stellen die "Beschriftung" mit Smarty bewerkstelligen kann

Bereich "[contact us]"
Code:
[contact_us]
text_name = 'Ihr Name:'
text_email = 'Ihre eMail-Adresse:'
text_message = 'Ihre Nachricht:'
text_success = 'Ihre Anfrage wurde erfolgreich zu uns gesendet.'
#NEU EINGEF?GT
text_street = 'Stra&szlig;e:'
text_city = 'PLZ und Ort:'
text_phone = 'Ihre Telefonnummer:'
Schritt 4) ?nderung der Datei "contact_us.html" (im Ordner "module" des aktiven Templates) - die Abfrage "if ($_GET['coID'] == 9) { ... }" sorgt daf?r, dass die zus?tzlichen Felder nicht auf der "normalen" Kontakt-Seite auftauchen
Code:
{config_load file="$language/lang_$language.conf" section="contact_us"}

	<h2><span>{$CONTACT_HEADING}</span></h2>
	<hr />
{if $error_message!=''}
	<br />
	<div style="border: 1px solid; border-color: #990000;" align="center">{$error_message}</div>
	<br />
{/if}
	
{if $success!='1'}
	{$FORM_ACTION}
	<p>{$CONTACT_CONTENT}</p>
	<div class="Linie"><hr /></div>
	<table class="formArea" width="100%">
 ?<tr>
 ?<td width="30%">{#text_name#}</td>
 ?<td>{$INPUT_NAME}</td>
 ?</tr>
 ?<tr>
 ?<td>{#text_email#}</td>
 ?<td>{$INPUT_EMAIL}</td>
 ?</tr>
	</table>
{php} if ($_GET['coID'] == 9) { {/php}
	<table class="formArea" width="100%">
 ?<tr>
 ?<td width="30%">{#text_street#}</td>
 ?<td>{$INPUT_STREET}</td>
 ?</tr>
 ?<tr>
 ?<td>{#text_city#}</td>
 ?<td>{$INPUT_CITY}</td>
 ?</tr>
 ?<tr>
 ?<td>{#text_phone#}</td>
 ?<td>{$INPUT_PHONE}</td>
 ?</tr>
	</table>
{php} } {/php}
	<table class="formArea" width="100%">
 ?<tr>
 ?<td width="30%" valign="top">{#text_message#}</td>
 ?<td valign="top">{$INPUT_TEXT}</td>
 ?</tr>
	</table>
	<p style="text-align: right">{$BUTTON_SUBMIT}</p>
	{$FORM_END}
{else}
	<p>{#text_success#}</p>
	<div class="Linie"><hr /></div>
	<p style="text-align: right">{$BUTTON_CONTINUE}</p>
{/if}
--> Auf diese Weise ist das Kontaktformular ?ber zwei Links erreichbar - Und eines von beiden bietet zus?tzliche Felder f?r Stra?e, Wohnort und Telefonnummer.

--> Der Mailtext der erzeugten Mails sieht ungef?hr so aus:
"Name: Theodor Testkunde
eMail-Adresse: testname@testdomain.com
Stra?e: Teststra?e 123
PLZ und Ort: 12345 Testnasenhausen
Telefonnummer: 0 123 45 67 89


Nachricht: Testtext und eine Testnachricht. Sch?ne Gr??e"

--> Die Adress-Daten sind keine Pflicht-Angaben. Auch findet keine ?berpr?fung der Eingaben statt - eMail-Adresse und Name sind jedoch weiterhin Pflichtfelder.




:-)
Viel Spa?!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #2 (permalink)  
Alt 11.06.2006, 19:04
Erfahrener Benutzer
 
Registriert seit: 09.01.2005
Beiträge: 408
Standard

Hallo pufaxx

ich habe heute Deine Anleitung perfekt umsetzen k?nnen. Ein grosses Dankesch?n f?r diese Anleitung :laugh:

Noch eine Zwischenfrage. Hast du eine Ahnung wie man die zus?tzlichen Felder einer ?berpr?fung unterziehen kann? Momentan werden ja nur e-mail und Name gepr?ft. Ich w?rde jedoch gerne auch die neuen Felder ?berpr?fen.

Falls du auch daf?r eine L?sung hast, bin ich nat?rlich ganz Ohr!

Nochmals danke und Gruss
Patrik
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #3 (permalink)  
Alt 01.08.2006, 13:41
Benutzer
 
Registriert seit: 26.07.2006
Ort: NRW
Beiträge: 48
Standard Auch von mir danke

Auch von barneyy ein grosses Danke an pufaxx,

die Anleitung ist bestens und funzt ordnungsgemäß...
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #4 (permalink)  
Alt 03.08.2006, 18:55
Neuer Benutzer
 
Registriert seit: 12.06.2004
Beiträge: 11
Standard

Ich habe das Formular eben mal eingebaut und ich muss sagen SUPER. Ich kann nur Danke sagen.

Mal als Anregung.

Wie währe es denn mit einem Formular Generator?

Oder eine Anleitung wie mal Dropdown Felder oder Radio buttons usw. einfügen kann.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #5 (permalink)  
Alt 03.08.2006, 19:13
Benutzerbild von Cuky
Erfahrener Benutzer
 
Registriert seit: 09.12.2004
Beiträge: 338
Standard

Wirklich danke, dass du das uns hier frei zur Verfügung stellst. Tolle Arbeit.

MfG
Selçuk
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #6 (permalink)  
Alt 19.10.2006, 12:07
xt:C Sponsor
 
Registriert seit: 28.07.2006
Beiträge: 25
Standard contact_us

hallo leute,

die lösung ist super aber ich bekomme die zusätzlich eingefügte felder in meinem formular nicht zu sehen. und was ist mit diesen fragezeichen???

danke f_mal
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #7 (permalink)  
Alt 24.10.2006, 17:46
xt:Commerce Support Kunde
 
Registriert seit: 05.05.2006
Beiträge: 68
Standard

erstmal danke für die anleitung, allerdings krieg ichs irgendwie nicht ganz gebacken

hab den code soweit abgeändert und das normale kontakformular funktionier soweit auch (dh. ich sehe die zusätzlichen felder, wenn ich die If abfrage aus der contact_us.html rausnehme):
http://www.steindesign-shop.de/Kontakt:_:7.html


allerdings sieht die zweite seite, auf der das kontaktformular + zusatzfelder erscheinen sollte sehr komisch aus ... siehe:
http://www.steindesign-shop.de/Konta...ntrag:_:9.html
ich hab irgendwie keine ahnung woran das liegen kann

MfG Daniel
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #8 (permalink)  
Alt 24.10.2006, 17:52
xt:Commerce Support Kunde
 
Registriert seit: 05.05.2006
Beiträge: 68
Standard

Zitat:
Zitat von f_mal
hallo leute,

die lösung ist super aber ich bekomme die zusätzlich eingefügte felder in meinem formular nicht zu sehen. und was ist mit diesen fragezeichen???

danke f_mal
willst du die zusätzlichen Felder nur in deinem "normalen" Kontaktformular haben ?
die Fragezeichen bekommst du weg, indem du den code für die "contact_us.html" jeweils ohne "?" am beginn der zeile einfügst.

MfG
Daniel
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #9 (permalink)  
Alt 27.10.2006, 00:20
Neuer Benutzer
 
Registriert seit: 09.10.2006
Beiträge: 4
Standard bie mir geht das nicht

habe die Änderungen eingebaut, aber es kommt nur die letzte Message an,
alle vorhergehenden ob Name, mail oder sonstige gehen verloren,
auch der Text davor wie "Nachricht:" geht verloren,
habe schon alles mögliche ausprobiert, aber es will nicht
shop ist zwar noch beta aber in den dateien kann ich auch keinen unterschied zu 3.04 feststellen, auch nicht in den betreffenden inc's

kann wer helfen ?

hat sich erledigt
hab meinen fehler gefunden (falscher Datei-link)

Geändert von forest2 (27.10.2006 um 16:24 Uhr)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #10 (permalink)  
Alt 16.05.2007, 08:59
Benutzer
 
Registriert seit: 02.02.2007
Beiträge: 32
Standard

sehr nett das Ganze.
Gibt es nun aber auch die Möglichkeit, die Daten aus dem zweiten Formular an eine andere Adresse zu schicken? Vielleicht durch einen kleinen weiteren Hack?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
erweitern, kontaktformular, mehrfach, nutzen

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus



Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.

Copyright © 2011 xt:Commerce GmbH / xt:Commerce International Ltd. - All Rights Reserved

xt:Commerce is a SafeCharge brand