Hallo, Wir versenden in die gesamte EU wobei der Hauptteil der Kunden aus DACH kommt. Daher wollten wir das in der Länderauswahl in der Kundenregistrierung und in der Versandkostenberechnung eben DE, AT und CH als erstes erscheinen. Blöderweise sortiert Gambio ja nur nach Ländernamen und hat keine Funktion einer Sortierung der Länderreihenfolge. Unsere Lösung ist zwar nicht ganz die feine Art (weil nicht updatesicher und keine Bearbeitung über das Backend) aber sie funktioniert wenigstens. Was haben wir gemacht? 1) In der Datenbank in der Tabelle countries eine weitere Spalte angelegt Code: ALTER TABLE `countries` ADD `countries_sort` INT(2) NOT NULL DEFAULT '99' ; 2) Die Datei inc/xtc_get_countries.inc.php wie folgt umgeschrieben PHP: <?php/* -------------------------------------------------------------- xtc_get_countries.inc.php 2013-07-08 gm Gambio GmbH http://www.gambio.de Copyright (c) 2013 Gambio GmbH Released under the GNU General Public License (Version 2) [http://www.gnu.org/licenses/gpl-2.0.html] -------------------------------------------------------------- http://www.xtc-webservice.de info@xtc-webservice.de ----------------------------------------------------------------------------------------- based on: (c) 2000-2001 The Exchange Project (earlier name of osCommerce) (c) 2002-2003 osCommerce(general.php,v 1.225 2003/05/29); www.oscommerce.com (c) 2003 nextcommerce (xtc_get_countries.inc.php,v 1.3 2003/08/13); www.nextcommerce.org (c) 2003 XT-Commerce - community made shopping http://www.xt-commerce.com ($Id: xtc_get_countries.inc.php 899 2005-04-29 02:40:57Z hhgag $) Released under the GNU General Public License ---------------------------------------------------------------------------------------*/function xtc_get_countriesList($countries_id = '', $with_iso_codes = false, $only_active = true){ $countries_array = array(); if (xtc_not_null($countries_id)) { if ($with_iso_codes == true) { $countries = xtc_db_query("select countries_name, countries_iso_code_2, countries_iso_code_3 from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$countries_id . "'" . ($only_active ? " and status = '1'" : "") . " order by countries_name"); $countries_values = xtc_db_fetch_array($countries); $countries_array = array('countries_name' => $countries_values['countries_name'], 'countries_iso_code_2' => $countries_values['countries_iso_code_2'], 'countries_iso_code_3' => $countries_values['countries_iso_code_3']); } else { $countries = xtc_db_query("select countries_name from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$countries_id . "'" . ($only_active ? " and status = '1'" : "")); $countries_values = xtc_db_fetch_array($countries); $countries_array = array('countries_name' => $countries_values['countries_name']); } } else { if($with_iso_codes == true) { $countries = xtc_db_query("select countries_id, countries_name, countries_iso_code_2, countries_iso_code_3 from " . TABLE_COUNTRIES . ($only_active ? " where status = '1'" : "") . " order by countries_name"); while ($countries_values = xtc_db_fetch_array($countries)) { $countries_array[] = array('countries_id' => $countries_values['countries_id'], 'countries_name' => $countries_values['countries_name'], 'countries_iso_code_2' => $countries_values['countries_iso_code_2'], 'countries_iso_code_3' => $countries_values['countries_iso_code_3']); } } else { $countries = xtc_db_query("select countries_id, countries_name, countries_sort from " . TABLE_COUNTRIES . ($only_active ? " where status = '1'" : "") . " order by countries_sort, countries_name"); while ($countries_values = xtc_db_fetch_array($countries)) { $countries_array[] = array('countries_id' => $countries_values['countries_id'], 'countries_name' => $countries_values['countries_name']); } } } return $countries_array;}?> Nun kann man in der DB im Feld countries_sort die Reihenfolge der Länder entsprechend seinen Vorstellungen anpassen. Alle Länder die keinen Wert erhalten werden dann wie gewohnt nach Namen sortiert. In unserem Fall haben wir DE auf 1, AT auf 2 und CH auf 3 gesetzt. Alle anderen bleiben auf 99. Jetzt wird bei uns in den Dropdowns entsprechen die Reihenfolge DE, AT, CH und dann der Rest alphabetisch angezeigt. So sieht das ganze dann im Frontend aus.. LG Oli
Hallo Oli, Danke für diesen Ansatz! Haben ihn nun ebenfalls bei uns umgesetzt. Allerdings ist bei uns Deutschland nicht auf 1 ("Bitte wählen" ist 1), wird aber dennoch standardmäßig vorselektiert. Weißt Du, wo ich dies ändern kann? Besten Dank & viele Grüße Jonas edit: Wenn ich Code: {if $country_data.countries_id == $form_data.country.value} selected="selected"{/if} in der create_account(_guest).html entferne, wird zwar standardmäßig der erste Eintrag genommen, allerdings funktioniert die Affenformular-Logik dann nicht mehr richtig. Es wird dann bei jeder Prüfung erneut der erste Eintrag gesetzt anstatt das bereits ausgewählte Land beizubehalten.
Hat einer eine Lösung für die sprachlich korrekte Darstellung der Ländernamen? Ich hätte die Liste gerne auf deutsch, englisch und französisch dargestellt, je nach Auswahl der Shopsprache.