Shop Support News Archive - Shopbetreiber News -> Forum : xt eCommerce Templates Module SEO Support: Shop - Tipp: Bundesland Nervt Bei Der Anmeldung ?
Lösung
Einfach unter Admin-Menü --> Konfiguration --> Kundendetails -->Bundesland auf false stellen
gollumHN
15.02.2006, 13:39
"Bundesland" - ein gutes Stichwort.
Mich stört etwas, dass das Pulldown-Menü mit den Bundesländern erst dann erscheint, wenn ich beim Ausfüllen das entsprechende Feld leer gelassen habe und eine Fehlermeldung ausgegeben wird. Wie könnte man standardmäßig dem Kunden das Pull-Downmenü zur Auswahl seines Bundeslandes zur Verfügung stellen? Wäre doch viel benutzerfreundlicher!
Gruss
- Pete - B)
''>ZITAT(gollumHN @ Feb 15 2006, 13:39) 161
"Bundesland" - ein gutes Stichwort.
Mich stört etwas, dass das Pulldown-Menü mit den Bundesländern erst dann erscheint, wenn ich beim Ausfüllen das entsprechende Feld leer gelassen habe und eine Fehlermeldung ausgegeben wird. Wie könnte man standardmäßig dem Kunden das Pull-Downmenü zur Auswahl seines Bundeslandes zur Verfügung stellen? Wäre doch viel benutzerfreundlicher!
Gruss
- Pete - B)
[/b]
Hi Pete,
das Problem ist bekannt, aber eine Lösung ist momentan noch nicht vorhanden.
Eine Möglichkeit wäre, anstatt ein Auswahlfeld zu nehmen, daraus ein Eingabefeld zu machen.
Sollte hierbei ein Tippfehler sich einschleichen, erschein das Pull-Downmenü.
Wenn ich etwas anderes mitbekomme, werd ich es hier Posten.
Gruß
Pommes
Ich hab das mal ausgegraben:
Gibts dazu schon eine Lösung?
Mich nervt das auch:
Wenn ich das Land ändere bleibt die Liste mit den Bundesländern erhalten, dann muss ich zuerst auf speichern gehen, dann kommt die Seite mit einer FehlermelDung und der Liste der richtigen Bundesländer.
Bundesländer deaktivierung wäre ev eine Lösung, aber ich denke, das sollte auch anders gehen, ev mit JavaScript [ Programm ], Seitenreload oder was auch immer....
Die Formulardaten sollten halt erhalten bleiben.
Luftgockel
23.01.2009, 10:50
Das hat mich damals auch immer genervt, vielleicht könnte man das in die Ecombase Version miteinbauen, das die Bundesländer als Menuauswahl kommt. Ja nicht den Kunden gleich beim Registrieren nerven. Eventuell für Deutschland gar kein Bundesländerauswahl für Ausland wird das eher gebraucht.
msslovi0
23.01.2009, 11:06
Ich lade das bei uns im Shop/Onlineshop per Ajax nach (ohne JavaScript [ Programm ] bleibt es beim alten Vorgehen), anzuschauen über die untenstehenden Link. Kann ich gern mal zusammenkratzen und hier irgendwo reinstellen.
msslovi0
23.01.2009, 22:29
Trifft sich gut, hab eh grad die Schnauze voll vom Video bearbeiten.
Das Beispiel basiert auf jQuery. Aus ladezeittechnischen Gründen wird jQuery nur dann eingebunden, wenn das wirklich erforderlich für diese Erweiterung ist.
Wer ein anderes JS-Framework nutzt oder jQuery noch an anderen Stellen benutzt, muss sich die Teile selbst entsprechend anpassen. Es wird dafür von mir keinen Support geben!
Das ganze sollte auch mit SSL-Proxy funktionieren, hatte ich jetzt keinen inkl. TestShop/Onlineshop / Onlineshop zur Hand und konnte es daher nicht testen.
jQuery downloaden: http://jqueryjs.googlecode.com/files/jquery-1.3.1.min.js (http://anonym.to/?http://jqueryjs.googlecode.com/files/jquery-1.3.1.min.js) und nach templates/[TEMPLATE]/javaScript [ Programm ]/ hochladen.
includes/application_bottom.php
Suche
if (TRACKING_ECONDA_ACTIVE == 'true') {
********require_once (DIR_WS_INCLUDES . 'econda/econda.php');
}
Füge danach ein:
$loadjQuery = array(FILENAME_CREATE_ACCOUNT, FILENAME_CREATE_GUEST_ACCOUNT, FILENAME_ACCOUNT_EDIT, FILENAME_CHECKOUT_SHIPPING_ADDRESS, FILENAME_CHECKOUT_PAYMENT_ADDRESS, FILENAME_ADDRESS_BOOK_PROCESS);
if(in_array(basename($PHP_SELF), $loadjQuery)) {
****echo sprintf('<Script [ Programm ] type="Text/javaScript [ Programm ]" src="templates/%s/javaScript [ Programm ]/jquery-1.3.1.min.js"></Script [ Programm ]>', CURRENT_TEMPLATE); // jQuery
****echo sprintf('<Script [ Programm ] type="Text/javaScript [ Programm ]" src="templates/%s/javaScript [ Programm ]/stateDropdown.js"></Script [ Programm ]>', CURRENT_TEMPLATE); // Dropdown-Script
}
templates/[TEMPLATE]/create_account.html, templates/[TEMPLATE]/create_guest_account.html, templates/[TEMPLATE]/address_book_details.html
Suche:
{if $state=='1'}
<tr>
**<td class="main">{#Text_state#}</td>
**<td class="inputRequirement">{$INPUT_STATE}</td>
</tr>
{/if}
<tr>
**<td class="main">{#Text_country#}</td>
**<td class="inputRequirement">{$SELECT_COUNTRY}</td>
</tr>
Ersetze Durch:
<tr>
**<td class="main">{#Text_country#}</td>
**<td id="countryDropdown" class="inputRequirement">{$SELECT_COUNTRY}</td>
</tr>
{if $state=='1'}
<tr>
**<td class="main">{#Text_state#}</td>
**<td id="stateDropdown" class="inputRequirement">{$INPUT_STATE}</td>
</tr>
{/if}
updateState.php in das Rootverzeichnis des Shops hochladen.
stateDropdown.js nach templates/[TEMPLATE]/javaScript [ Programm ]/ hochladen.
Download: [attachmentid=3827]
GPL-Lizenz (http://anonym.to/?http://creativecommons.org/licenses/GPL/2.0/)
''>ZITAT(msslovi0 @ Jan 24 2009, 0:29) 130897updateState.php in das Rootverzeichnis des Shops hochladen.
stateDropdown.js nach templates/[TEMPLATE]/javaScript [ Programm ]/ hochladen.
Download: [attachmentid=3827]
GPL-Lizenz (http://anonym.to/?http://creativecommons.org/licenses/GPL/2.0/)
[/b]
Schade, dass der Download nicht mehr existiert. Mich würden die JS-Funktionen interessieren.
Ich habe es jetzt erstmal äußerst billig geändert:
- Startland ist das Land, wo der Laden ist
- Die (falls vorhanden) Bundesländer davon werden geladen
- Wird das Land im Dropdown-Menu geändert, wird die Seite mit der Country-Id als GET-Element neu geladen und das wird als aktuelles Land genommen
Anleitung dafür:
Anmeldung mit sehr einfachem onchange-Bundesland:
create_account.php:
Unter (Zeile 77 - 384 ):
if (isset ($_POST['action']) && ($_POST['action'] == 'process')) {
****...
********if (!isset ($mail_error)) {
************xtc_redirect(xtc_href_link(FILENAME_SH OPPING_CART, '', 'SSL'));
********} else {
************echo $mail_error;
********}
****}
}
Einfügen:
// STATE EDIT: kein Post gesetzt, also Default Werte und Get pruefen
else
{
****$country = STORE_COUNTRY;
****if ( isset($_GET['country']) )
********$country = $_GET['country'];
****$check_query = xtc_db_query("select count( ) as total from ".TABLE_ZONES." where zone_country_id = '".(int) $country."'");
****$check = xtc_db_fetch_array($check_query);
****$entry_state_has_zones = ($check['total'] > 0);
}
// END STATE EDIT
Anstatt (Zeile 448 - 461):
****if ($process == true) {
********if ($entry_state_has_zones == true) {
************$zones_array = array ();
************$zones_query = xtc_db_query("select zone_name from ".TABLE_ZONES." where zone_country_id = '".(int) $country."' order by zone_name");
************while ($zones_values = xtc_db_fetch_array($zones_query)) {
****************$zones_array[] = array ('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
************}
************$state_input = xtc_draw_pull_down_menuNote(array ('name' => 'state', 'text' => '*'. (xtc_not_null(ENTRY_STATE_TEXT) ? ''.ENTRY_STATE_TEXT.'' : '')), $zones_array);
********} else {
************$state_input = xtc_draw_input_fieldNote(array ('name' => 'state', 'text' => '*'. (xtc_not_null(ENTRY_STATE_TEXT) ? ''.ENTRY_STATE_TEXT.'' : '')));
********}
****} else {
********$state_input = xtc_draw_input_fieldNote(array ('name' => 'state', 'text' => '*'. (xtc_not_null(ENTRY_STATE_TEXT) ? ''.ENTRY_STATE_TEXT.'' : '')));
****}
Folgendes:
****// STATE EDIT: ohne aeusseres If
****if ($entry_state_has_zones == true)
****{
********$zones_array = array ();
********$zones_query = xtc_db_query("select zone_name from ".TABLE_ZONES." where zone_country_id = '".(int) $country."' order by zone_name");
********while ($zones_values = xtc_db_fetch_array($zones_query))
********{
************$zones_array[] = array ('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
********}
********$state_input = xtc_draw_pull_down_menuNote(array ('name' => 'state', 'text' => '*'. (xtc_not_null(ENTRY_STATE_TEXT) ? ''.ENTRY_STATE_TEXT.'' : '')), $zones_array);
****}
****else
****{
********$state_input = xtc_draw_input_fieldNote(array ('name' => 'state', 'text' => '*'. (xtc_not_null(ENTRY_STATE_TEXT) ? ''.ENTRY_STATE_TEXT.'' : '')));
****}
****// END STATE EDIT
Anstatt (Zeile 474):
$smarty->assign('SELECT_COUNTRY', xtc_get_country_list(array ('name' => 'country', 'text' => '*'. (xtc_not_null(ENTRY_COUNTRY_TEXT) ? ''.ENTRY_COUNTRY_TEXT.'' : '')), $selected));
Folgendes:
// STATE EDIT: onchange auf Select-Feld
$change_function = "window.location.replace(window.location.href+'&country='+this.value);";
$smarty->assign( 'SELECT_COUNTRY' , str_replace("<select ", "<select onchange=$change_function ", xtc_get_country_list(array ('name' => 'country', 'text' => '*'. (xtc_not_null(ENTRY_COUNTRY_TEXT) ? ''.ENTRY_COUNTRY_TEXT.'' : '')), $country)) );
// END STATE EDIT
Falls mir jemand sagen kann, wie man die Country-Id als POST neu geladen bekommt, ohne den Anmelde-Button zu submitten, wäre ich dankbar. Aber bezweifel, ob das geht.
Übrigens habe ich das nun noch nicht ausgiebig getestet. Ich übernehme keine Haftung bei Fehlern - Ausprobieren auf eigene Gefahr!
PS: Ich sehe gerade, dass alles was im Anmeldeformular ausgefüllt war, bei einem Reload, verursacht duch einen Landwechsel, wieder weg ist. Sehr sehr unschön ... Bin für Tipps offen, ansonsten hake ich es erstmal unter "Beim Start werden die Bundesländer des Startlandes als Dropdown angezeigt, falls vorhanden" ab.
vBulletin® v3.8.4, Copyright ©2000-2012, Jelsoft Enterprises Ltd.