ACHTUNG: Ein Modul für Shopversion 2.x gibt es hier: MODUL: Attributauswahl als Pflichtfeld und vorbelegt mit "Bitte wählen"Resultierend aus dem Thema
ANLEITUNG: Attribut Dropdown Anzeige ergänzen mit "bitte wählen" habe ich euch das Paket mal zusammen gestellt und hier veröffentlicht, da es im anderen Beitrag etwas verloren ist und damals die Fragestellung nur mit der Erweiterung des "Bitte wählen" ging, nicht aber um die Pflichtauswahl der Attribute.
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('{/literal}{#please_select#}{literal}'));
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'); /lang/german/lang_german.conf in Sektion "[product_info]" das hier einfügen:
please_select = 'Achtung%21 bitte zuerst Ausf%FChrung w%E4hlen.'
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 fishnet aka Karsten für den Hinweis.]
[
EDIT Tomcraft 30.12.2011: Anleitung um Mehrsprachigkeit ergänzt, Danke an Gordon.]
[
EDIT Tomcraft 16.10.2017: Modul für Shopversion 2.x verlinkt.]