ACHTUNG: Ein Modul für Shopversion 2.x gibt es hier: MODUL: Attributauswahl als Pflichtfeld und vorbelegt mit "Bitte wählen"Hier meine Lösung für einen JS Check inkl. Fallback. Damit wird die Auswahl auch geprüft, wenn JS deaktiviert ist.
Das ganze ist auch Multilingual.
Also los:
in der "/includes/modules/product_info.php"
das hier:
$info_smarty->assign('FORM_ACTION', xtc_draw_form
('cart_quantity', xtc_href_link
(FILENAME_PRODUCT_INFO
, xtc_get_all_get_params
(array ('action')).'action=add_product'))); mit dem hier ersetzen:
$info_smarty->assign('FORM_ACTION', xtc_draw_form
('cart_quantity', xtc_href_link
(FILENAME_PRODUCT_INFO
, xtc_get_all_get_params
(array ('action')).'action=add_product'),'post','onsubmit="return wk_check(\''.PULL_DOWN_DEFAULT
.'\')"')); und die Funktion so ins Template am Anfang einfügen:
/templates/xtc5/module/product_info/product_xx.html
{literal}
<script type="text/javascript"><!--
function wk_check(search){
var element = document.forms["cart_quantity"].elements;
for (var i=0;i<element.length;i++) {
if(element[i].options[element[i].selectedIndex].text.indexOf(search) != -1) {
alert(unescape("Achtung%21 bitte zuerst Ausf%FChrung w%E4hlen."));
return false;
}
}
}
//-->
</script>
{/literal}
und das an gewünschter Stelle im Template platzieren:
{if $error}<div class="errormessage">{$error}</div>{/if}
jetzt muss nur noch das "Bitte wählen" als Default Wert zugeordnet werden. Das am besten so:
/includes/modules/product_attributes.php
das hier:
$col = 0;
while ($products_options = xtc_db_fetch_array($products_options_query,true)) {
mit dem hier ersetzen:
$products_options_data[$row]['DATA'][0] = array ('ID' => 0, 'TEXT' => PULL_DOWN_DEFAULT
);$col = 1; while ($products_options = xtc_db_fetch_array
($products_options_query,true)) { und vor dem hier:
}
if ($product->data['options_template'] == '' or $product->data['options_template'] == 'default') {
das hier einsetzen:
if (isset($_GET['error']) && $_GET['error']=='attributecheck') { $info_smarty->assign('error', ATTRIBUTE_ERROR
);} /includes/cart_actions.php
im case 'add_product' :
vor dem hier:
$_SESSION['cart']->add_cart((int) $_POST['products_id'], $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'], $_POST['id'])) + xtc_remove_non_numeric($_POST['products_qty']), $_POST['id']);
das hier einfügen:
if (isset($_POST['id'])) { while (list ($option, $value) = each($_POST['id'])) { if($value==0){ xtc_redirect
(xtc_href_link
(FILENAME_PRODUCT_INFO
, 'products_id=' . (int
) $_POST['products_id'] . '&error=attributecheck','NONSSL')); } }} Jetzt muss man nur noch die Sprachvariablen einfügen.
/lang/german/german.php
das hier einfügen:
define('ATTRIBUTE_ERROR', 'Bitte wählen sie eine Ausführung'); damit ist das Ganze auch Mehrsprachig, inkl. Fallback.
Gruss Gerhard
ACHTUNG: Ein Modul für Shopversion 2.x gibt es hier: MODUL: Attributauswahl als Pflichtfeld und vorbelegt mit "Bitte wählen"[
EDIT Tomcraft 30.12.2011: Fehler in Anleitung korrigiert, Danke an Caro für den Hinweis.]
[
EDIT Tomcraft 16.10.2017: Modul für Shopversion 2.x verlinkt.]