admin/new_attributes_matrix.php
admin/includes/modules/new_attributes_matrix_change.php
admin/includes/modules/new_attributes_matrix_choose.php
admin/includes/modules/new_attributes_matrix_include.php
admin/includes/modules/new_attributes_matrix_select.php
inc/xtc_check_matrix_stock.inc.php
lang/german/admin/new_attributes_matrix.php
templates/xtc4/module/product_options/table_matrix.html
admin/includes/application_top.php
ca. Zeile 113
define('FILENAME_NEW_ATTRIBUTES','new_attributes.php');danach einfügen
define('FILENAME_NEW_ATTRIBUTES_MATRIX','new_attributes_matrix.php');
ca. Zeile 180
define('TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD', 'products_attributes_download');danach einfügen
define('TABLE_PRODUCTS_ATTRIBUTES_MATRIX', 'products_attributes_matrix');
admin/includes/column_left.php
ca. Zeile 29
if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['new_attributes'] == '1')) echo '<a href="' . xtc_href_link(FILENAME_NEW_ATTRIBUTES, '', 'NONSSL') . '" class="menuBoxContentLink"> -'.BOX_ATTRIBUTES_MANAGER.'</a><br>';danach einfügen
if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['new_attributes_matrix'] == '1')) echo '<a href="' . xtc_href_link(FILENAME_NEW_ATTRIBUTES_MATRIX, '', 'NONSSL') . '" class="menuBoxContentLink"> -'.BOX_ATTRIBUTES_MATRIX.'</a><br>';
checkout_process.php
ca. Zeile 151
$stock_query_raw = "SELECT products_quantity, pad.products_attributes_filenameändern in
$stock_query_raw = "SELECT products_quantity, products_matrix1, products_matrix2, pad.products_attributes_filename
ca. Zeile 166
$stock_query = xtc_db_query("select products_quantity from ".TABLE_PRODUCTS." where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
ersetzen durch:
$stock_query = xtc_db_query("select products_quantity, products_matrix1, products_matrix2 from ".TABLE_PRODUCTS." where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
ca. Zeile 177
xtc_db_query("update ".TABLE_PRODUCTS." set products_quantity = '".$stock_left."' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'"); if (($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false')) { xtc_db_query("update ".TABLE_PRODUCTS." set products_status = '0' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'"); }ersetzen durch:
if ($stock_values['products_matrix1'] > 0 && $stock_values['products_matrix2'] > 0) { $products_attributes = $order->products[$i]['attributes']; xtc_db_query(" UPDATE " . TABLE_PRODUCTS_ATTRIBUTES_MATRIX . " SET quantity=quantity-". $order->products[$i]['qty'] . " WHERE products_id=" . xtc_get_prid($order->products[$i]['id']) . " AND (matrix1=" . $products_attributes[0]['value_id'] . " AND matrix2=" . $products_attributes[1]['value_id'] . ") OR (matrix1=" . $products_attributes[1]['value_id'] . " AND matrix2=" . $products_attributes[0]['value_id'] . ") "); } else { xtc_db_query("update ".TABLE_PRODUCTS." set products_quantity = '".$stock_left."' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'"); if (($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false')) { xtc_db_query("update ".TABLE_PRODUCTS." set products_status = '0' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'"); } }
includes/cart_actions.php
ca. Zeile 68
case 'add_product' : if (isset ($_POST['products_id']) && is_numeric($_POST['products_id'])) { if ($_POST['products_qty'] > MAX_PRODUCTS_QTY) $_POST['products_qty'] = MAX_PRODUCTS_QTY; $_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']); } xtc_redirect(xtc_href_link($goto, 'products_id='.(int) $_POST['products_id'].'&'.xtc_get_all_get_params($parameters))); break;ersetzen durch
case 'add_product' : if ($_POST['matrix'] == 1) { if (isset ($_POST['products_id']) && is_numeric($_POST['products_id'])) { $values = $_POST; unset($values['x']); unset($values['y']); unset($values['matrix']); unset($values['products_id']); foreach ($values as $key => $value) { if ($value > 0) { $ids = explode("-", $key); $id[$ids[1]] = $ids[0]; $id[$ids[3]] = $ids[2]; if ($value > MAX_PRODUCTS_QTY) $value = MAX_PRODUCTS_QTY; if (is_object($econda)) { $econda->_emptyCart(); $old_quantity = $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'], $_POST['id'])); $econda->_addProduct($_POST['products_id'], $value, $old_quantity); } $_SESSION['cart']->add_cart((int) $_POST['products_id'], $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'], $id)) + xtc_remove_non_numeric($value), $id); } } } } else { if (isset ($_POST['products_id']) && is_numeric($_POST['products_id'])) { if ($_POST['products_qty'] > MAX_PRODUCTS_QTY) $_POST['products_qty'] = MAX_PRODUCTS_QTY; if (is_object($econda)) { $econda->_emptyCart(); $old_quantity = $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'], $_POST['id'])); $econda->_addProduct($_POST['products_id'], $_POST['products_qty'], $old_quantity); } $_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']); } } xtc_redirect(xtc_href_link($goto, 'products_id='.(int) $_POST['products_id'].'&'.xtc_get_all_get_params($parameters))); break;
includes/database_tables.php
ca. Zeile 55
define('TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD', 'products_attributes_download');danach einfügen
define('TABLE_PRODUCTS_ATTRIBUTES_MATRIX', 'products_attributes_matrix');
includes/modules/order_details_cart.php
ca. Zeile 35
require_once (DIR_FS_INC.'xtc_check_stock.inc.php');danach einfügen:
require_once (DIR_FS_INC.'xtc_check_matrix_stock.inc.php');
ca. Zeile 49
if (STOCK_CHECK == 'true') { $mark_stock = xtc_check_stock($products[$i]['id'], $products[$i]['quantity']); if ($mark_stock) $_SESSION['any_out_of_stock'] = 1; }ersetzen durch:
if (STOCK_CHECK == 'true') { $mark_stock = xtc_check_stock($products[$i]['id'], $products[$i]['quantity']); } $sql = xtc_db_query("SELECT products_matrix1, products_matrix2 FROM " . TABLE_PRODUCTS . " WHERE products_id=" . (int)$products[$i]['id']); $erg = xtc_db_fetch_array($sql); if ($erg['products_matrix1']>0 && $erg['products_matrix2']>0) $mark_stock = xtc_check_matrix_stock($products[$i]['id'], $products[$i]['quantity'], $products[$i]['attributes'][$erg['products_matrix1']], $products[$i]['attributes'][$erg['products_matrix2']]); if ($mark_stock) $_SESSION['any_out_of_stock'] = 1;
includes/modules/product_attributes.php
ca. Zeile 52
if ($product->getAttributesCount() > 0) {danach einfügen:
if ($product->data['products_matrix1'] > 0 || $product->data['products_matrix2'] > 0) { $sql = xtc_db_query("SELECT products_options_name FROM " . TABLE_PRODUCTS_OPTIONS . " WHERE products_options_id=" . $product->data['products_matrix1'] . " AND language_id=" . $_SESSION['languages_id']); $erg = xtc_db_fetch_array($sql); $title = $erg['products_options_name']; $sql = xtc_db_query("SELECT products_options_name FROM " . TABLE_PRODUCTS_OPTIONS . " WHERE products_options_id=" . $product->data['products_matrix2'] . " AND language_id=" . $_SESSION['languages_id']); $erg = xtc_db_fetch_array($sql); $title .= "<br /><hr />" . $erg['products_options_name']; $sql = xtc_db_query("SELECT * FROM " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov WHERE pa.products_id = " . $product->data['products_id'] . " AND pa.options_id = " . $product->data['products_matrix1'] . " AND pa.options_values_id = pov.products_options_values_id AND pov.language_id = " . $_SESSION['languages_id'] . " ORDER BY pa.sortorder"); $matrix1 = array(); while ($matrix = xtc_db_fetch_array($sql)) { $matrix1[] = array('id' => $matrix['products_options_values_id'], 'text' => $matrix['products_options_values_name']); } $sql = xtc_db_query("SELECT * FROM " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov WHERE pa.products_id = " . $product->data['products_id'] . " AND pa.options_id = " . $product->data['products_matrix2'] . " AND pa.options_values_id = pov.products_options_values_id AND pov.language_id = " . $_SESSION['languages_id'] . " ORDER BY pa.sortorder"); $matrix2 = array(); while ($matrix = xtc_db_fetch_array($sql)) { $matrix2[] = array('id' => $matrix['products_options_values_id'], 'text' => $matrix['products_options_values_name']); } $sql = xtc_db_query("SELECT * FROM " . TABLE_PRODUCTS_ATTRIBUTES_MATRIX . " WHERE products_id=" . $product->data['products_id']); $quantity = array(); while ($erg = xtc_db_fetch_array($sql)) { $quantity[$erg['matrix1']][$erg['matrix2']] = $erg['quantity']; } $i=0; $j=0; $products_options_data = array (); for ($i=0; $i <= sizeof($matrix2); $i++) { if ($i==0) { $products_options_data[$i]['DATA'][$j]['content'] = $title; } else { $products_options_data[$i]['DATA'][$j]['content'] = $matrix2[$i-1]['text']; } for ($j=1; $j <= sizeof($matrix1); $j++) { if ($i==0) { $products_options_data[$i]['DATA'][$j]['content'] = $matrix1[$j-1]['text']; } else { if (ATTRIBUTE_STOCK_CHECK == 'false' || $quantity[$matrix1[$j-1]['id']][$matrix2[$i-1]['id']] > 0) { $products_options_data[$i]['DATA'][$j]['content'] = '<input type="text" name="' . $matrix1[$j-1]['id'] . "-" . $product->data['products_matrix1'] . "-" . $matrix2[$i-1]['id'] . "-" . $product->data['products_matrix2'] . '" value="0" size="4" onMouseOver="showWMTT(\'tooltip\', \'' . TEXT_AVAILABLE_QUANTITY . $quantity[$matrix1[$j-1]['id']][$matrix2[$i-1]['id']] . '\')" onMouseOut="hideWMTT(\'tooltip\')" />'; } else { $products_options_data[$i]['DATA'][$j]['content'] = ' '; } } } } // Show javascript tooltip only when stock is controlled by shop $module_smarty->assign('SHOW_QUANTITY', STOCK_LIMITED === 'true'); } else {
ca Zeile 146
if ($product->data['options_template'] == '' or $product->data['options_template'] == 'default') {davor einfügen
}
includes/modules/product_info.php
ca. Zeile 50
// check if customer is allowed to add to cartdavor einfügen
$matrix = ($product->data['products_matrix1'] > 0 && $product->data['products_matrix2'] > 0) ? true : false;
ca. Zeile 55
if ($product->data['products_fsk18'] == '0') { $info_smarty->assign('ADD_QTY', xtc_draw_input_field('products_qty', '1', 'size="3"').' '.xtc_draw_hidden_field('products_id', $product->data['products_id']));ersetzen durch
if ($product->data['products_fsk18'] == '0') { if ($matrix) { $info_smarty->assign('ADD_QTY', xtc_draw_hidden_field('products_id', $product->data['products_id']) . xtc_draw_hidden_field('matrix', '1')); } else { $info_smarty->assign('ADD_QTY', xtc_draw_input_field('products_qty', '1', 'size="3"').' '.xtc_draw_hidden_field('products_id', $product->data['products_id'])); }
ca. Zeile 63
} else { $info_smarty->assign('ADD_QTY', xtc_draw_input_field('products_qty', '1', 'size="3"').' '.xtc_draw_hidden_field('products_id', $product->data['products_id']));ersetzen durch
} else { if ($matrix) { $info_smarty->assign('ADD_QTY', xtc_draw_hidden_field('products_id', $product->data['products_id']) . xtc_draw_hidden_field('matrix', '1')); } else { $info_smarty->assign('ADD_QTY', xtc_draw_input_field('products_qty', '1', 'size="3"').' '.xtc_draw_hidden_field('products_id', $product->data['products_id'])); }
lang/german/german.php
Am Ende (vor dem ?>) einfügen
define('TEXT_AVAILABLE_QUANTITY', 'Verfügbare Menge: ');
lang/german/admin/german.php
ca. Zeile 140
define('BOX_ATTRIBUTES_MANAGER','Attribut Verwaltung');danach einfügen
define('BOX_ATTRIBUTES_MATRIX','Attribut Matrix');
templates/TEMPLATE/stylesheet.css
Am Ende anfügen
.tooltip { position: absolute; display: none; background-color: #CCF; border: 1px solid #66F; padding: 3px; }
Bitte die Datei database.sql in die Datenbank importieren (z.B. mittels phpmyadmin)
Bitte darauf achten, den entsprechenden Artikeln im Administrationsbereich auch das richtige Optionstemplate (table_matrix.html) zuzuweisen.