|
ECB SEO SHOP SOFTWARE - IMEDES SOFTWARE DOWNLOADS
*****************************************
* *
* INSTALLATION-GUIDE *
* *
*****************************************
* @package ibundle *
* @compatible SP2.1 *
*****************************************
--------------
NEW FILES:
--------------
admin/accessories.php
admin/includes/classes/ibundle.php
inc/xtc_get_default_attributes.inc.php
includes/functions/database.php
lang/english/admin/accessories.php
lang/german/admin/accessories.php
templates/xtc4/module/product_info/product_info_v1_bundle.html
templates/xtc4/module/product_info/product_info_v1_offerbundle.html
--------------
NEW DIRS:
--------------
admin/functions
imedes_library
includes/classes/adodb_full
--------------
CHANGED FILES:
--------------
admin/categories.php
admin/includes/application_top.php
admin/includes/classes/categories.php
admin/includes/column_left.php
admin/includes/functions/sessions.php
admin/includes/modules/categories_view.php
admin/includes/modules/new_product.php
checkout_process.php
includes/application_top.php
includes/cart_actions.php
includes/classes/order.php
includes/classes/product.php
includes/classes/shopping_cart.php
includes/database_tables.php
includes/functions/sessions.php
includes/modules/order_details_cart.php
includes/modules/product_info.php
lang/english/admin/categories.php
lang/english/admin/configuration.php
lang/english/admin/english.php
lang/english/english.php
lang/english/lang_english.conf
lang/german/admin/categories.php
lang/german/admin/configuration.php
lang/german/admin/german.php
lang/german/german.php
lang/german/lang_german.conf
templates/xtc4/module/order_details.html
templates/xtc4/stylesheet.css
-------------
INSTALLATION:
-------------
1. Datenkbankerweiterungen durchführen
ALTER TABLE admin_access ADD(accessories int(1) default '0');
UPDATE admin_access SET accessories = 1 WHERE customers_id = 1;
CREATE TABLE accessories (
id int(11) NOT NULL auto_increment,
head_product_id int(11) NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
CREATE TABLE accessories_products (
id int(11) NOT NULL auto_increment,
accessories_id int(11) NOT NULL,
product_id int(11) NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
ALTER TABLE `products` ADD `products_bundle` INT( 1 ) NOT NULL ;
ALTER TABLE `products`
ADD `products_bundle_link_0` INT NOT NULL DEFAULT '0',
ADD `products_bundle_link_1` INT NOT NULL DEFAULT '0',
ADD `products_bundle_link_2` INT NOT NULL DEFAULT '0',
ADD `products_bundle_link_3` INT NOT NULL DEFAULT '0',
ADD `products_bundle_link_4` INT NOT NULL DEFAULT '0';
INSERT INTO `configuration` (
`configuration_id` ,
`configuration_key` ,
`configuration_value` ,
`configuration_group_id` ,
`sort_order` ,
`last_modified` ,
`date_added` ,
`use_function` ,
`set_function`
)
VALUES (
NULL , 'IBUNDLE_ZEROPRODUCTS', 'true', '17', '99', NULL , '0000-00-00 00:00:00', NULL , 'xtc_cfg_select_option(array(''true'', ''false''),'
);
2. new_files kopieren.
3. changed_files kopieren, oder bei nicht standard-version folgende änderungen durchführen:
-admin/categories.php
---------------------------------------------------------------------------------------------------
finde folgendes:
require_once (DIR_WS_CLASSES.'currencies.php');
und füge danach ein:
require_once (DIR_WS_CLASSES.'ibundle.php'); // ibundle
$bundle = new bundle(0); // ibundle
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-admin/includes/application_top.php
---------------------------------------------------------------------------------------------------
finde folgendes:
define('FILENAME_XSELL_GROUPS','cross_sell_groups.php');
und füge danach ein:
define('FILENAME_ACCESSORIES', 'accessories.php'); // ibundle
define('TABLE_ACCESSORIES', 'accessories');
define('TABLE_ACCESSORIES_PRODUCTS', 'accessories_products');
---------------------------------------------------------------------------------------------------
Achtung!!!! Diese folgende Änderung ist nur notwendig, wenn Sie bisher noch KEINE Bibliothek von Imedes
erworben haben, welches unter einer Bezahllizenz steht. Falls Sie nicht sicher sind, dann schauen Sie
einfach in den Quellcode der entsprechenden Datei oder sprechen uns einfach an
finde folgendes:
require_once(DIR_FS_INC . 'xtc_db_connect.inc.php');
require_once(DIR_FS_INC . 'xtc_db_close.inc.php');
require_once(DIR_FS_INC . 'xtc_db_error.inc.php');
require_once(DIR_FS_INC . 'xtc_db_query.inc.php');
require_once(DIR_FS_INC . 'xtc_db_queryCached.inc.php');
require_once(DIR_FS_INC . 'xtc_db_perform.inc.php');
require_once(DIR_FS_INC . 'xtc_db_fetch_array.inc.php');
require_once(DIR_FS_INC . 'xtc_db_num_rows.inc.php');
require_once(DIR_FS_INC . 'xtc_db_data_seek.inc.php');
require_once(DIR_FS_INC . 'xtc_db_insert_id.inc.php');
require_once(DIR_FS_INC . 'xtc_db_free_result.inc.php');
require_once(DIR_FS_INC . 'xtc_db_fetch_fields.inc.php');
require_once(DIR_FS_INC . 'xtc_db_output.inc.php');
require_once(DIR_FS_INC . 'xtc_db_input.inc.php');
und ersetze es mit:
require_once('../'.DIR_WS_FUNCTIONS.'database.php');
//require_once(DIR_FS_INC . 'xtc_db_connect.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_close.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_error.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_query.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_queryCached.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_perform.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_fetch_array.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_num_rows.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_data_seek.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_insert_id.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_free_result.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_fetch_fields.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_output.inc.php');
//require_once(DIR_FS_INC . 'xtc_db_input.inc.php');
---------------------------------------------------------------------------------------------------
Achtung!!!! Diese folgende Änderung ist nur notwendig, wenn Sie bisher noch KEINE Bibliothek von Imedes
erworben haben, welches unter einer Bezahllizenz steht. Falls Sie nicht sicher sind, dann schauen Sie
einfach in den Quellcode der entsprechenden Datei oder sprechen uns einfach an
finde folgendes:
xtc_db_connect() or die('Unable to connect to database server!');
und ersetze es mit:
require_once (DIR_FS_CATALOG.'imedes_library/db_connect_alt_admin.php');
db_connect_alt() or die('Unable to connect to database server!');
global $ADODB_FETCH_MODE;
$ADODB_FETCH_MODE=ADODB_FETCH_ASSOC;
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-admin/includes/classes/categories.php
---------------------------------------------------------------------------------------------------
finde folgendes:
$sql_data_array = array ('products_quantity' => xtc_db_prepare_input($products_data['products_quantity']), 'products_model' => xtc_db_prepare_input($products_data['products_model']), 'products_ean' => xtc_db_prepare_input($products_data['products_ean']), 'products_price' => xtc_db_prepare_input($products_data['products_price']), 'products_sort' => xtc_db_prepare_input($products_data['products_sort']), 'products_shippingtime' => xtc_db_prepare_input($products_data['shipping_status']), 'products_discount_allowed' => xtc_db_prepare_input($products_data['products_discount_allowed']), 'products_date_available' => $products_date_available, 'products_weight' => xtc_db_prepare_input($products_data['products_weight']), 'products_status' => $products_status, 'products_startpage' => xtc_db_prepare_input($products_data['products_startpage']), 'products_startpage_sort' => xtc_db_prepare_input($products_data['products_startpage_sort']), 'products_tax_class_id' => xtc_db_prepare_input($products_data['products_tax_class_id']), 'product_template' => xtc_db_prepare_input($products_data['info_template']), 'options_template' => xtc_db_prepare_input($products_data['options_template']), 'manufacturers_id' => xtc_db_prepare_input($products_data['manufacturers_id']), 'products_fsk18' => xtc_db_prepare_input($products_data['fsk18']), 'products_vpe_value' => xtc_db_prepare_input($products_data['products_vpe_value']), 'products_vpe_status' => xtc_db_prepare_input($products_data['products_vpe_status']), 'products_vpe' => xtc_db_prepare_input($products_data['products_vpe']));
und ersetze es mit:
$sql_data_array = array ( 'products_quantity' => xtc_db_prepare_input($products_data['products_quantity']),
'products_model' => xtc_db_prepare_input($products_data['products_model']),
'products_ean' => xtc_db_prepare_input($products_data['products_ean']),
'products_price' => xtc_db_prepare_input($products_data['products_price']),
'products_sort' => xtc_db_prepare_input($products_data['products_sort']),
'products_shippingtime' => xtc_db_prepare_input($products_data['shipping_status']),
'products_discount_allowed' => xtc_db_prepare_input($products_data['products_discount_allowed']),
'products_date_available' => $products_date_available,
'products_weight' => xtc_db_prepare_input($products_data['products_weight']),
'products_status' => $products_status,
'products_startpage' => xtc_db_prepare_input($products_data['products_startpage']),
'products_startpage_sort' => xtc_db_prepare_input($products_data['products_startpage_sort']),
'products_tax_class_id' => xtc_db_prepare_input($products_data['products_tax_class_id']),
'product_template' => xtc_db_prepare_input($products_data['info_template']),
'options_template' => xtc_db_prepare_input($products_data['options_template']),
'manufacturers_id' => xtc_db_prepare_input($products_data['manufacturers_id']),
'products_fsk18' => xtc_db_prepare_input($products_data['fsk18']),
'products_vpe_value' => xtc_db_prepare_input($products_data['products_vpe_value']),
'products_vpe_status' => xtc_db_prepare_input($products_data['products_vpe_status']),
'products_bundle' => xtc_db_prepare_input($products_data['products_bundle']), // ibundle
'products_bundle_link_0' => xtc_db_prepare_input($products_data['products_bundle_link_0']),
'products_bundle_link_1' => xtc_db_prepare_input($products_data['products_bundle_link_1']),
'products_bundle_link_2' => xtc_db_prepare_input($products_data['products_bundle_link_2']),
'products_bundle_link_3' => xtc_db_prepare_input($products_data['products_bundle_link_3']),
'products_bundle_link_4' => xtc_db_prepare_input($products_data['products_bundle_link_4']),
'products_vpe' => xtc_db_prepare_input($products_data['products_vpe'])
);
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-admin/includes/column_left.php
---------------------------------------------------------------------------------------------------
finde folgendes:
if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['module_export'] == '1')) echo '<a href="' . xtc_href_link(FILENAME_MODULE_EXPORT) . '" class="menuBoxContentLink"> -' . BOX_MODULE_EXPORT . '</a><br>';
und füge danach ein:
if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['accessories'] == '1')) echo '<a href="' . xtc_href_link(FILENAME_ACCESSORIES, '', 'NONSSL') . '" class="menuBoxContentLink"> -' . BOX_BUNDLES . '</a><br>'; // ibundle
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-admin/includes/functions/sessions.php
---------------------------------------------------------------------------------------------------
Achtung!!!! Diese folgende Änderung ist nur notwendig, wenn Sie bisher noch KEINE Bibliothek von Imedes
erworben haben, welches unter einer Bezahllizenz steht. Falls Sie nicht sicher sind, dann schauen Sie
einfach in den Quellcode der entsprechenden Datei oder sprechen uns einfach an
finde folgendes:
function _sess_write($key, $val) {
global $SESS_LIFE;
und ersetze es mit:
function _sess_write($key, $val) {
global $SESS_LIFE;
if(!is_object($db)){// Vermutlich wird das $db objekt gelöscht, bevor die Session geschrieben wird
global$db;
require_once (DIR_FS_CATALOG.'imedes_library/db_connect_alt_admin.php');
db_connect_alt() or die('Unable to connect to database server!');
$db->Execute("SET NAMES '".$_SESSION['language_charset']."'");
$db->Execute("SET CHARACTER_SET_CLIENT=".$_SESSION['language_charset']);
$db->Execute("SET CHARACTER_SET_RESULTS=".$_SESSION['language_charset']);
}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-admin/includes/modules/categories_view.php
---------------------------------------------------------------------------------------------------
finde folgendes (2 Mal):
p.products_date_available,
p.products_status,
p.products_startpage,
und füge danach ein:
p.products_bundle,
---------------------------------------------------------------------------------------------------
finde folgendes:
<?php echo check_stock($products['products_id']); ?>
und ersetze es mit:
<?php
if( $products['products_bundle']=='1' ) { // ibundle
$link = $bundle->bundle_link($products['products_id']);
$bundle_marker= ' <strong>B</strong>';
$bundle_marker = '<a href="'.$link.'">'.$bundle_marker.'</a>';
echo $bundle_marker;
} else {
echo check_stock($products['products_id']);
}
?>
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-admin/includes/modules/new_product.php
---------------------------------------------------------------------------------------------------
finde folgendes:
<span class="main"><br /></span>
</td><td>
<table bgcolor="f3f3f3" style="border: 1px solid; border-color: #cccccc;" "width="100%" border="0">
und füge danach ein:
<!------ ibundle beginn ------------------------ -->
<tr>
<td><span class="main"><?php echo TEXT_PRODUCTS_BUNDLE; ?> <?php echo xtc_draw_selection_field('products_bundle', 'checkbox', '1',$pInfo->products_bundle==1 ? true : false); ?></td>
<td><span class="main"> </td>
</tr>
<!------ ibundle end ------------------------ -->
---------------------------------------------------------------------------------------------------
finde folgendes:
</table></td>
</tr>
</table>
und füge davor ein:
<!------ ibundle beginn ------------------------ -->
<tr>
<?php
$bundle_products_ids = array ();
$bundle_products_ids[] = array ( 'id' => 0,
'text' => '---' );
$query = xtc_db_query("SELECT
p.products_id,
p.products_model,
pd.products_name
FROM ".
TABLE_PRODUCTS." p, ".
TABLE_PRODUCTS_DESCRIPTION." pd
where
p.products_status = 1
AND p.products_id = pd.products_id
AND p.products_bundle='1'
AND pd.language_id = '".$_SESSION['languages_id']."'
ORDER BY
p.products_id ASC");
while($data = xtc_db_fetch_array($query)) {
$bundle_products_ids[] = array( 'id' => $data['products_id'],
'text' => $data['products_name'] );
}
$default = $bundle_products_ids[0]['id'];
$files = array ();
$files[] = array ('id' => 1, 'text' => 'bla1');
$files[] = array ('id' => 2, 'text' => 'bla2');
echo '<tr>';
echo ' <td class="main">'.TEXT_PRODUCTS_BUNDLE_LINKS.'</td>';
echo ' <td><span class="main">'.xtc_draw_pull_down_menu('products_bundle_link_0', $bundle_products_ids, $pInfo->products_bundle_link_0).'</span></td>';
echo '</tr>';
echo '<tr>';
echo ' <td class="main"> </td>';
echo ' <td><span class="main">'.xtc_draw_pull_down_menu('products_bundle_link_1', $bundle_products_ids, $pInfo->products_bundle_link_1).'</span></td>';
echo '</tr>';
echo '<tr>';
echo ' <td class="main"> </td>';
echo ' <td><span class="main">'.xtc_draw_pull_down_menu('products_bundle_link_2', $bundle_products_ids, $pInfo->products_bundle_link_2).'</span></td>';
echo '</tr>';
echo '<tr>';
echo ' <td class="main"> </td>';
echo ' <td><span class="main">'.xtc_draw_pull_down_menu('products_bundle_link_3', $bundle_products_ids, $pInfo->products_bundle_link_3).'</span></td>';
echo '</tr>';
echo '<tr>';
echo ' <td class="main"> </td>';
echo ' <td><span class="main">'.xtc_draw_pull_down_menu('products_bundle_link_4', $bundle_products_ids, $pInfo->products_bundle_link_4).'</span></td>';
echo '</tr>';
?>
<!------ ibundle end ------------------------ -->
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-checkout_process.php
---------------------------------------------------------------------------------------------------
finde folgendes:
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'])."'");
}
und füge danach ein:
// --- ibundle beginn --------------------
$bundle = new bundle(xtc_get_prid($order->products[$i]['id']));
if( $bundle->valid ) {
$bundle->update_stock_items( $order->products[$i]['qty'] );
}
// --- ibundle end --------------------
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/application_top.php
---------------------------------------------------------------------------------------------------
Achtung!!!! Diese folgende Änderung ist nur notwendig, wenn Sie bisher noch KEINE Bibliothek von Imedes
erworben haben, welches unter einer Bezahllizenz steht. Falls Sie nicht sicher sind, dann schauen Sie
einfach in den Quellcode der entsprechenden Datei oder sprechen uns einfach an
finde folgendes:
// Database
require_once (DIR_FS_INC.'xtc_db_connect.inc.php');
require_once (DIR_FS_INC.'xtc_db_close.inc.php');
require_once (DIR_FS_INC.'xtc_db_error.inc.php');
require_once (DIR_FS_INC.'xtc_db_perform.inc.php');
require_once (DIR_FS_INC.'xtc_db_query.inc.php');
require_once (DIR_FS_INC.'xtc_db_queryCached.inc.php');
require_once (DIR_FS_INC.'xtc_db_fetch_array.inc.php');
require_once (DIR_FS_INC.'xtc_db_num_rows.inc.php');
require_once (DIR_FS_INC.'xtc_db_data_seek.inc.php');
require_once (DIR_FS_INC.'xtc_db_insert_id.inc.php');
require_once (DIR_FS_INC.'xtc_db_free_result.inc.php');
require_once (DIR_FS_INC.'xtc_db_fetch_fields.inc.php');
require_once (DIR_FS_INC.'xtc_db_output.inc.php');
require_once (DIR_FS_INC.'xtc_db_input.inc.php');
require_once (DIR_FS_INC.'xtc_db_prepare_input.inc.php');
require_once (DIR_FS_INC.'xtc_get_top_level_domain.inc.php');
und ersetze es mit:
// Database
require_once(DIR_WS_FUNCTIONS.'database.php');
// require_once (DIR_FS_INC.'xtc_db_connect.inc.php');
// require_once (DIR_FS_INC.'xtc_db_close.inc.php');
// require_once (DIR_FS_INC.'xtc_db_error.inc.php');
// require_once (DIR_FS_INC.'xtc_db_perform.inc.php');
// require_once (DIR_FS_INC.'xtc_db_query.inc.php');
// require_once (DIR_FS_INC.'xtc_db_queryCached.inc.php');
// require_once (DIR_FS_INC.'xtc_db_fetch_array.inc.php');
// require_once (DIR_FS_INC.'xtc_db_num_rows.inc.php');
// require_once (DIR_FS_INC.'xtc_db_data_seek.inc.php');
// require_once (DIR_FS_INC.'xtc_db_insert_id.inc.php');
// require_once (DIR_FS_INC.'xtc_db_free_result.inc.php');
// require_once (DIR_FS_INC.'xtc_db_fetch_fields.inc.php');
// require_once (DIR_FS_INC.'xtc_db_output.inc.php');
// require_once (DIR_FS_INC.'xtc_db_input.inc.php');
require_once (DIR_FS_INC.'xtc_db_prepare_input.inc.php');
require_once (DIR_FS_INC.'xtc_get_top_level_domain.inc.php');
---------------------------------
Achtung!!!! Diese folgende Änderung ist nur notwendig, wenn Sie bisher noch KEINE Bibliothek von Imedes
erworben haben, welches unter einer Bezahllizenz steht. Falls Sie nicht sicher sind, dann schauen Sie
einfach in den Quellcode der entsprechenden Datei oder sprechen uns einfach an
finde folgendes:
// make a connection to the database... now
xtc_db_connect() or die('Unable to connect to database server!');
und ersetze es mit:
// make a connection to the database... now
require_once (DIR_FS_CATALOG.'imedes_library/db_connect_alt.php');
db_connect_alt() or die('Unable to connect to database server!');
global $ADODB_FETCH_MODE;
$ADODB_FETCH_MODE=ADODB_FETCH_ASSOC;
---------------------------------
Achtung!!!! Diese folgende Änderung ist nur notwendig, wenn Sie bisher noch KEINE Bibliothek von Imedes
erworben haben, welches unter einer Bezahllizenz steht. Falls Sie nicht sicher sind, dann schauen Sie
einfach in den Quellcode der entsprechenden Datei oder sprechen uns einfach an
finde folgendes:
// include the language translations
require (DIR_WS_LANGUAGES.$_SESSION['language'].'/'.$_SESSION['language'].'.php');
und ersetze es mit:
// include the language translations
require (DIR_WS_LANGUAGES.$_SESSION['language'].'/'.$_SESSION['language'].'.php');
$db->Execute("SET NAMES '".$_SESSION['language_charset']."'");
$db->Execute("SET CHARACTER_SET_CLIENT=".$_SESSION['language_charset']);
$db->Execute("SET CHARACTER_SET_RESULTS=".$_SESSION['language_charset']);
---------------------------------
finde folgendes:
$_SESSION['cart'] = new shoppingCart();
und ersetze es mit:
// $_SESSION['cart'] = new shoppingCart();
$_SESSION['cart'] = new shoppingCart_bundle(); // ibundle
---------------------------------
finde folgendes:
$product = new product($actual_products_id);
und ersetze es mit:
// $product = new product($actual_products_id);
$product = new product_bundle($actual_products_id); // ibundle
---------------------------------
finde folgendes:
$product = new product($actual_products_id);
und ersetze es mit:
// $product = new product($actual_products_id);
$product = new product_bundle($actual_products_id); // ibundle
---------------------------------
finde folgendes:
$product = new product();
und ersetze es mit:
// $product = new product();
$product = new product_bundle(); // ibundle
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/cart_actions.php
---------------------------------------------------------------------------------------------------
finde folgendes:
case 'add_product' :
und füge danach ein:
if( isset($_POST['products_bundle'] ) ) {
foreach( $_POST['products_bundle'] as $bid ) {
$attr = xtc_get_default_attributes( $bid );
$_SESSION['cart']->add_cart($bid, $_SESSION['cart']->get_quantity(xtc_get_uprid($bid, $attr)) + xtc_remove_non_numeric($_POST['products_qty']), $attr);
}
xtc_redirect(xtc_href_link($goto, 'products_id=' . (int) $_POST['products_id'] . '&' . xtc_get_all_get_params($parameters)));
break;
}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/classes/order.php
---------------------------------------------------------------------------------------------------
finde folgendes:
$products = $_SESSION['cart']->get_products();
for ($i=0, $n=sizeof($products); $i<$n; $i++) {
und füge danach ein:
if( $products[$i]['bundle_item'] && (IBUNDLE_ZEROPRODUCTS != 'true') ) { // ibundle
continue;
}
---------------------------------------------------------------------------------------------------
finde folgendes:
'shipping_time'=>$products[$i]['shipping_time'],
'weight' => $products[$i]['weight'],
'id' => $products[$i]['id']);
und füge danach ein:
if( $products[$i]['bundle_item'] ) { // ibundle
$products_price=0.0;
$this->products[$index]['name'] .= IBUNDLE_ORDER_MARKER;
$this->products[$index]['price'] = 0.0;
$this->products[$index]['final_price'] = 0.0;
}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/classes/product.php
---------------------------------------------------------------------------------------------------
finde folgendes:
class product {
und füge davor ein:
class product_bundle extends product {
var $bundle_id=0,
$bundle_products_id_arr = array(),
$data_bundle = array();
function product_bundle($pID = 0) {
$this->product($pID);
if( $pID==0 ) {
return;
}
if( $this->data['products_bundle']=='1' ) { // wenn bundle produkt
$this->read_products_data_bundle($pID);
}
}
function buildDataArray(&$array,$image='thumbnail') {
$ret = parent::buildDataArray($array,$image);
$ret['PRODUCTS_MODEL'] = $array['products_model'];
return $ret;
}
function buildDataArray_bundle() {
$ret = array();
reset($this->data_bundle);
foreach( $this->data_bundle as $data_bundle ) {
$ret[]=$this->buildDataArray($data_bundle);
}
return $ret;
}
function read_products_data_bundle($pID) {
$query = "select id from ".TABLE_ACCESSORIES." where head_product_id='".$pID."'";
$query = xtDBquery($query);
$data = xtc_db_fetch_array($query, true);
$this->bundle_id = $data['id'];
if( $this->bundle_id>0 ) { // wenn liste gefunden
$query = "select product_id from ".TABLE_ACCESSORIES_PRODUCTS." where accessories_id='".$this->bundle_id."'";
$query = xtDBquery($query);
while( $data = xtc_db_fetch_array($query, true) ) {
$this->bundle_products_id_arr[] = $data['product_id'];
}
if( sizeof($this->bundle_products_id_arr)>0 ) { // wenn ids gefunden
$this->data_bundle=array();
foreach( $this->bundle_products_id_arr as $bid ) {
$product_query = "select *
FROM ".
TABLE_PRODUCTS." p,".
TABLE_PRODUCTS_DESCRIPTION." pd
where
p.products_status = '1'
and p.products_id = '".$bid."'
and pd.products_id = p.products_id
".$group_check.$fsk_lock."
and pd.language_id = '".(int) $_SESSION['languages_id']."'";
$product_query = xtDBquery($product_query);
if( $data = xtc_db_fetch_array($product_query, true) ) {
$this->data_bundle[]=$data;
}
}
}
}
}
}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/classes/shopping_cart.php
---------------------------------------------------------------------------------------------------
finde folgnedes:
Released under the GNU General Public License
---------------------------------------------------------------------------------------*/
und füge danach ein:
define( MAGIC_BUNDLE_ATTRIBUT, -1 );
define( BUNDLE_LINKS_COUNT, 5 ); // anzahl Bundlelinks max
---------------------------------------------------------------------------------------------------
finde folgnedes:
require_once (DIR_FS_INC.'xtc_get_tax_description.inc.php');
und füge danach ein:
/* -----------------------------------------------------------------------------------------
class shoppingCart_bundle
12.2007 h.koch (hendrik.koch@gmx.de) for imedes.de
---------------------------------------------------------------------------------------*/
require_once (DIR_FS_INC.'xtc_get_default_attributes.inc.php');
require_once ('imedes_library/ibundle.php');
class shoppingCart_bundle extends shoppingCart {
function get_products_price( $products_id ) {
global $xtPrice;
$products_query = xtc_db_query("select
products_id, products_price
from ".TABLE_PRODUCTS."
where products_id='".xtc_get_prid($products_id)."'");
if ($products = xtc_db_fetch_array($products_query)) {
$products_price = $xtPrice->xtcGetPrice($products['products_id'], $format = false, $this->contents[$products_id]['qty'], 0, $products['products_price']);
}
return $products_price;
}
function add_cart($products_id, $qty = '1', $attributes = '', $notify = true) {
parent::add_cart($products_id, $qty, $attributes, $notify);
$bundle = new bundle( $products_id );
if( $bundle->valid ) {
$uprid=xtc_get_uprid($products_id, $attributes);
$this->contents[$uprid]['bundle'] = $bundle;
$this->contents[$uprid]['bundle_head'] = true;
$count=$bundle->count_items();
foreach( $count as $bpid => $qty2 ) {
$attr = xtc_get_default_attributes($bpid);
$attr[MAGIC_BUNDLE_ATTRIBUT] = $uprid;
parent::add_cart($bpid, $qty*$qty2, $attr, false);
$uprid2=xtc_get_uprid($bpid, $attr);
$this->contents[$uprid2]['bundle_item'] = true;
}
}
}
function reorder_products() {
$cont_norm = array();
$cont_bundle = array();
reset($this->contents);
while (list ($products_id,$content) = each($this->contents)) {
if( $content['bundle_item'] == true ) {
continue;
} else if( $content['bundle_head'] == true ) {
$cont_bundle[$products_id]=$content;
} else {
$cont_norm[$products_id]=$content;
}
}
$this->remove_all();
foreach( $cont_norm as $products_id => $cont ) {
$this->add_cart($products_id, $cont['qty'], $cont['attributes'], false );
}
foreach( $cont_bundle as $products_id => $cont ) {
$this->add_cart($products_id, $cont['qty'], $cont['attributes'], false );
}
}
function get_products() {
$this->reorder_products();
$products = parent::get_products();
for ($i = 0, $n = sizeof($products); $i < $n; $i ++) {
$products[$i]['bundle_head'] = $this->contents[$products[$i]['id']]['bundle_head'];
$products[$i]['bundle_item'] = $this->contents[$products[$i]['id']]['bundle_item'];
if (isset ($products[$i]['attributes'][MAGIC_BUNDLE_ATTRIBUT])) {
unset($products[$i]['attributes'][MAGIC_BUNDLE_ATTRIBUT]);
}
}
$total_bundle_val = 0.0;
$i = sizeof($products)-1;
while( $i>= 0 ) {
if( $products[$i]['bundle_item'] ) {
$total_bundle_val += ($products[$i]['price']*$products[$i]['quantity']);
}
if( $products[$i]['bundle_head'] ) {
$products[$i]['sub_sum'] = $total_bundle_val;
$total_bundle_val = 0.0;
}
$i--;
}
$factor = 1;
for ($i = 0, $n = sizeof($products); $i < $n; $i ++) {
if( ($products[$i]['bundle_head']) && $products[$i]['sub_sum']>0 ) {
$factor = $products[$i]['price']/$products[$i]['sub_sum'];
$factor *= $products[$i]['quantity'];
}
if( $products[$i]['bundle_item'] ) {
$products[$i]['bundle_price'] = $products[$i]['price']*$factor;
$products[$i]['bundle_final_price'] = $products[$i]['final_price']*$factor;
$products[$i]['price'] = 0.0;
$products[$i]['final_price'] = 0.0;
}
}
return $products;
}
function calculate() {
global $xtPrice;
$this->total = 0;
$this->weight = 0;
$this->tax = array ();
if (!is_array($this->contents))
return 0;
reset($this->contents);
while (list ($products_id,) = each($this->contents)) {
// -- ibundle beginn ----------------
// this 3 lines are the only difference between this and the parent.calculate();
if( $this->contents[$products_id]['bundle_item'] ) {
continue;
}
// -- ibundle end ----------------
$qty = $this->contents[$products_id]['qty'];
// products price
$product_query = xtc_db_query("select products_id, products_price, products_discount_allowed, products_tax_class_id, products_weight from ".TABLE_PRODUCTS." where products_id='".xtc_get_prid($products_id)."'");
if ($product = xtc_db_fetch_array($product_query)) {
$products_price = $xtPrice->xtcGetPrice($product['products_id'], $format = false, $qty, $product['products_tax_class_id'], $product['products_price']);
$this->total += $products_price * $qty;
$this->weight += ($qty * $product['products_weight']);
// attributes price
$attribute_price = 0;
if (isset ($this->contents[$products_id]['attributes'])) {
reset($this->contents[$products_id]['attributes']);
while (list ($option, $value) = each($this->contents[$products_id]['attributes'])) {
$values = $xtPrice->xtcGetOptionPrice($product['products_id'], $option, $value);
$this->weight += $values['weight'] * $qty;
$this->total += $values['price'] * $qty;
$attribute_price+=$values['price'];
}
}
if ($product['products_tax_class_id'] != 0) {
if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == 1) {
$products_price_tax = $products_price - ($products_price / 100 * $_SESSION['customers_status']['customers_status_ot_discount']);
$attribute_price_tax = $attribute_price - ($attribute_price / 100 * $_SESSION['customers_status']['customers_status_ot_discount']);
}
$products_tax = $xtPrice->TAX[$product['products_tax_class_id']];
$products_tax_description = xtc_get_tax_description($product['products_tax_class_id']);
// price incl tax
if ($_SESSION['customers_status']['customers_status_show_price_tax'] == '1') {
if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == 1) {
$this->tax[$product['products_tax_class_id']]['value'] += ((($products_price_tax+$attribute_price_tax) / (100 + $products_tax)) * $products_tax)*$qty;
$this->tax[$product['products_tax_class_id']]['desc'] = TAX_ADD_TAX."$products_tax_description";
} else {
$this->tax[$product['products_tax_class_id']]['value'] += ((($products_price+$attribute_price) / (100 + $products_tax)) * $products_tax)*$qty;
$this->tax[$product['products_tax_class_id']]['desc'] = TAX_ADD_TAX."$products_tax_description";
}
}
// excl tax + tax at checkout
if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) {
if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == 1) {
$this->tax[$product['products_tax_class_id']]['value'] += (($products_price_tax+$attribute_price_tax) / 100) * ($products_tax)*$qty;
$this->total+=(($products_price_tax+$attribute_price_tax) / 100) * ($products_tax)*$qty;
$this->tax[$product['products_tax_class_id']]['desc'] = TAX_NO_TAX."$products_tax_description";
} else {
$this->tax[$product['products_tax_class_id']]['value'] += (($products_price+$attribute_price) / 100) * ($products_tax)*$qty;
$this->total+= (($products_price+$attribute_price) / 100) * ($products_tax)*$qty;
$this->tax[$product['products_tax_class_id']]['desc'] = TAX_NO_TAX."$products_tax_description";
}
}
}
}
}
if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] != 0) {
// $this->total -= $this->total / 100 * $_SESSION['customers_status']['customers_status_ot_discount'];
}
// echo 'total_NACH'.$this->total;
}
}
---------------------------------------------------------------------------------------------------
finde folgendes:
$products_array[] = array ('id' => $products_id, 'name' => $products['products_name'], 'model' => $products['products_model'], 'image' => $products['products_image'], 'price' => $products_price + $this->attributes_price($products_id), 'quantity' => $this->contents[$products_id]['qty'], 'weight' => $products['products_weight'],'shipping_time' => $main->getShippingStatusName($products['products_shippingtime']), 'final_price' => ($products_price + $this->attributes_price($products_id)), 'tax_class_id' => $products['products_tax_class_id'], 'attributes' => $this->contents[$products_id]['attributes']);
und ersetze es mit:
$products_array[] = array ( 'id' => $products_id,
'name' => $products['products_name'],
'model' => $products['products_model'],
'image' => $products['products_image'],
'price' => $products_price + $this->attributes_price($products_id),
'quantity' => $this->contents[$products_id]['qty'],
'weight' => $products['products_weight'],
'shipping_time' => $main->getShippingStatusName($products['products_shippingtime']),
'final_price' => ($products_price + $this->attributes_price($products_id)),
'tax_class_id' => $products['products_tax_class_id'],
'attributes' => $this->contents[$products_id]['attributes']);
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/database_tables.php
---------------------------------------------------------------------------------------------------
finde folgendes:
Released under the GNU General Public License
---------------------------------------------------------------------------------------*/
und füge danach ein:
define('TABLE_ACCESSORIES', 'accessories'); // ibundle
define('TABLE_ACCESSORIES_PRODUCTS', 'accessories_products'); // ibundle
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/functions/sessions.php
---------------------------------------------------------------------------------------------------
Achtung!!!! Diese folgende Änderung ist nur notwendig, wenn Sie bisher noch KEINE Bibliothek von Imedes
erworben haben, welches unter einer Bezahllizenz steht. Falls Sie nicht sicher sind, dann schauen Sie
einfach in den Quellcode der entsprechenden Datei oder sprechen uns einfach an
finde folgendes:
function _sess_write($key, $val) {
global $SESS_LIFE;
und ersetze es mit:
function _sess_write($key, $val) {
global $SESS_LIFE;
if(!is_object($db)){// Vermutlich wird das $db objekt gelöscht, bevor die Session geschrieben wird
global$db;
require_once (DIR_FS_CATALOG.'imedes_library/db_connect_alt.php');
db_connect_alt() or die('Unable to connect to database server!');
$db->Execute("SET NAMES '".$_SESSION['language_charset']."'");
$db->Execute("SET CHARACTER_SET_CLIENT=".$_SESSION['language_charset']);
$db->Execute("SET CHARACTER_SET_RESULTS=".$_SESSION['language_charset']);
}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/modules/order_details_cart.php
---------------------------------------------------------------------------------------------------
finde folgendes:
$module_content[$i] = array ('PRODUCTS_NAME' => $products[$i]['name'].$mark_stock, 'PRODUCTS_QTY' => xtc_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="2"').xtc_draw_hidden_field('products_id[]', $products[$i]['id']).xtc_draw_hidden_field('old_qty[]', $products[$i]['quantity']), 'PRODUCTS_MODEL' => $products[$i]['model'],'PRODUCTS_SHIPPING_TIME'=>$products[$i]['shipping_time'], 'PRODUCTS_TAX' => number_format($products[$i]['tax'], TAX_DECIMAL_PLACES), 'PRODUCTS_IMAGE' => $image, 'IMAGE_ALT' => $products[$i]['name'], 'BOX_DELETE' => xtc_draw_checkbox_field('cart_delete[]', $products[$i]['id']), 'PRODUCTS_LINK' => xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($products[$i]['id'], $products[$i]['name'])), 'PRODUCTS_PRICE' => $xtPrice->xtcFormat($products[$i]['price'] * $products[$i]['quantity'], true), 'PRODUCTS_SINGLE_PRICE' =>$xtPrice->xtcFormat($products[$i]['price'], true), 'PRODUCTS_SHORT_DESCRIPTION' => xtc_get_short_description($products[$i]['id']), 'ATTRIBUTES' => '');
und ersetze es mit::
$module_content[$i] = array ( 'PRODUCTS_NAME' => $products[$i]['name'].$mark_stock,
'PRODUCTS_QTY' => xtc_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="2"').xtc_draw_hidden_field('products_id[]', $products[$i]['id']).xtc_draw_hidden_field('old_qty[]', $products[$i]['quantity']),
'PRODUCTS_MODEL' => $products[$i]['model'],
'PRODUCTS_SHIPPING_TIME'=>$products[$i]['shipping_time'],
'PRODUCTS_TAX' => number_format($products[$i]['tax'], TAX_DECIMAL_PLACES),
'PRODUCTS_IMAGE' => $image, 'IMAGE_ALT' => $products[$i]['name'],
'BOX_DELETE' => xtc_draw_checkbox_field('cart_delete[]', $products[$i]['id']),
'PRODUCTS_LINK' => xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($products[$i]['id'], $products[$i]['name'])),
'PRODUCTS_PRICE' => $xtPrice->xtcFormat($products[$i]['price'] * $products[$i]['quantity'], true),
'PRODUCTS_SINGLE_PRICE' =>$xtPrice->xtcFormat($products[$i]['price'], true),
'PRODUCTS_SHORT_DESCRIPTION' => xtc_get_short_description($products[$i]['id']),
'PRODUCTS_BUNDLE_PRICE' => $xtPrice->xtcFormat($products[$i]['bundle_price'] * $products[$i]['quantity'], true),
'PRODUCTS_BUNDLE_SINGLE_PRICE' =>$xtPrice->xtcFormat($products[$i]['bundle_price'], true),
'PRODUCTS_BUNDLE' => ($products[$i]['bundle_head']==true)||($products[$i]['bundle_item']==true)?true:false, // ibundle
'PRODUCTS_BUNDLE_HEAD' => $products[$i]['bundle_head'], // ibundle
'PRODUCTS_BUNDLE_ITEM' => $products[$i]['bundle_item'], // ibundle
'ATTRIBUTES' => '');
if( $products[$i]['bundle_item']==true ) {
$module_content[$i]['PRODUCTS_QTY'] = $products[$i]['quantity'];
}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/modules/product_info.php
---------------------------------------------------------------------------------------------------
finde folgendes:
$info_smarty->assign('PRODUCTS_ORDERED', $product->data['products_ordered']);
$info_smarty->assign('PRODUCTS_PRINT', '<img src="templates/'.CURRENT_TEMPLATE.'/buttons/'.$_SESSION['language'].'/print.gif" style="cursor:hand" onclick="javascript:window.open(\''.xtc_href_link(FILENAME_PRINT_PRODUCT_INFO, 'products_id='.$product->data['products_id']).'\', \'popup\', \'toolbar=0, width=640, height=600\')" alt="" />');
$info_smarty->assign('PRODUCTS_DESCRIPTION', stripslashes($product->data['products_description']));
und füge danach ein:
// --- ibundle beginn ------------------------------------------------
$bundle_ids = array();
if( $product->data['products_bundle_link_0']>0 ) { $bundle_ids[] = $product->data['products_bundle_link_0']; }
if( $product->data['products_bundle_link_1']>0 ) { $bundle_ids[] = $product->data['products_bundle_link_1']; }
if( $product->data['products_bundle_link_2']>0 ) { $bundle_ids[] = $product->data['products_bundle_link_2']; }
if( $product->data['products_bundle_link_3']>0 ) { $bundle_ids[] = $product->data['products_bundle_link_3']; }
if( $product->data['products_bundle_link_4']>0 ) { $bundle_ids[] = $product->data['products_bundle_link_4']; }
$bundle_products_data = array();
if( sizeof($bundle_ids)>0 ) {
$info_smarty->assign('PRODUCTS_BUNDLE_LINK_ANZ', sizeof($bundle_ids) );
$in = "'".implode("','", $bundle_ids)."'";
$query = xtc_db_query("SELECT
p.products_id,
p.products_model,
p.products_image,
p.products_price,
p.products_tax_class_id,
pd.products_name,
pd.products_description,
pd.products_short_description
FROM ".
TABLE_PRODUCTS." p, ".
TABLE_PRODUCTS_DESCRIPTION." pd
where
p.products_status = 1
AND p.products_id = pd.products_id
AND p.products_id in (".$in.")
AND pd.language_id = '".$_SESSION['languages_id']."'
ORDER BY
p.products_sort ASC");
$i=0;
while($data = xtc_db_fetch_array($query)) {
$data['selection_field'] = xtc_draw_selection_field('products_bundle['.$i.']', 'checkbox', $data['products_id'],'','' );
$data['products_image'] = $data['products_image']==''?'':DIR_WS_THUMBNAIL_IMAGES.$data['products_image'];
$data['products_link'] = xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($data['products_id'], $data['products_name']));
$data['products_price'] = $xtPrice->xtcGetPrice($data['products_id'], $format = true, 1, $data['products_tax_class_id'], $data['products_price'], 1);
$tax_rate = $xtPrice->TAX[$data['products_tax_class_id']];
$tax_info = $main->getTaxInfo($tax_rate);
$data['PRODUCTS_TAX_INFO'] = $tax_info;
$data['PRODUCTS_SHIPPING_LINK'] = $main->getShippingLink();
$data['bundle'] = new bundle( $data['products_id'] );
$bundle_products_data[] = $data;
$i++;
}
}
$info_smarty->assign('bundle_products_data', $bundle_products_data );
// --- ibundle end ------------------------------------------------
---------------------------------------------------------------------------------------------------
finde folgendes:
if ($product->data['products_image'] != '')
$image = DIR_WS_INFO_IMAGES.$product->data['products_image'];
und füge danach ein:
$info_smarty->assign('bundle_content', $product->buildDataArray_bundle() ); // ibundle
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/english/admin/categories.php
---------------------------------------------------------------------------------------------------
Finde folgendes:
?>
und füge davor ein:
define('TEXT_PRODUCTS_BUNDLE','Artikelset:'); // ibundle
define('TEXT_PRODUCTS_BUNDLE_LINKS','Artikelsets Offer:'); // ibundle---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/english/admin/configuration.php
---------------------------------------------------------------------------------------------------
Finde folgendes:
?>
und füge davor ein:
// ibundle
define('IBUNDLE_ZEROPRODUCTS_TITLE' , 'Bundles 0-EUR Products');
define('IBUNDLE_ZEROPRODUCTS_DESC' , 'Bundles 0-EUR Products in order?');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/english/admin/english.php
---------------------------------------------------------------------------------------------------
Finde folgendes:
?>
und füge davor ein:
define('BOX_BUNDLES', 'Product Bundles'); // ibundle
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/english/english.php
---------------------------------------------------------------------------------------------------
Finde folgendes:
?>
und füge davor ein:
define(IBUNDLE_ORDER_MARKER, ' (#Part of Bundle#)'); // ibundle, marker in orders
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/english/lang_english.conf
---------------------------------------------------------------------------------------------------
finde folgendes:
text_article = 'Item'
text_total = 'Total'
text_single = 'Singleprice'
und füge danach ein:
text_bundle_part = 'anteiliger Preis'
---------------------------------------------------------------------------------------------------
finde folgendes:
model = 'Product No.:'
print = 'Print product data sheet'
text_shippingtime = 'Shipping time:'
und füge danach ein:
bundle_info = 'Buy this product as any bundle'
bundle_single_buy = 'If you are buying these products single:'
bundle_you_save = 'You save:'
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/german/admin/categories.php
---------------------------------------------------------------------------------------------------
Finde folgendes:
?>
und füge davor ein:
define('TEXT_PRODUCTS_BUNDLE','Artikelset:'); // ibundle
define('TEXT_PRODUCTS_BUNDLE_LINKS','Artikelsets Angebot:'); // ibundle
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/german/admin/configuration.php
---------------------------------------------------------------------------------------------------
Finde folgendes:
?>
und füge davor ein:
define('IBUNDLE_ZEROPRODUCTS_TITLE' , 'Artikelsets Null-EUR-Artikel');
define('IBUNDLE_ZEROPRODUCTS_DESC' , 'Sollen Teile eines bestellten Artikelsets als 0-EUR Artikel in der Bestellung erscheinen?');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/german/admin/german.php
---------------------------------------------------------------------------------------------------
Finde folgendes:
?>
und füge davor ein:
define('BOX_BUNDLES', 'Artikelsets'); // ibundle
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/german/german.php
---------------------------------------------------------------------------------------------------
Finde folgendes:
?>
und füge davor ein:
define(IBUNDLE_ORDER_MARKER, ' (#Teil Art.Set#)'); // ibundle, marker in orders
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/german/lang_german.conf
---------------------------------------------------------------------------------------------------
Finde folgendes:
text_article = 'Artikel'
text_total = 'Summe'
text_single = 'Einzelpreis'
und füge danach ein:
text_bundle_part = 'anteil. Preis'
---------------------------------------------------------------------------------------------------
Finde folgendes:
model = 'Art.Nr.:'
print = 'Artikeldatenblatt drucken'
text_shippingtime = 'Lieferzeit:'
und füge danach ein:
bundle_info = 'Erwerben Sie dieses Produkt in einem Artikelset'
bundle_single_buy = 'Würden Sie diese Teile einzeln kaufen:'
bundle_you_save = 'Sie sparen beim Kauf:'
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-templates/xtc4/module/order_details.html
---------------------------------------------------------------------------------------------------
Finde folgendes:
<tr>
<td class="main">{if $module_data.PRODUCTS_IMAGE!=''}<img src="{$module_data.PRODUCTS_IMAGE}" alt="{$module_data.IMAGE_ALT}" />{/if}</td>
<td valign="top" class="main" align="center">{$module_data.PRODUCTS_QTY}</td>
und füge davor ein:
{if $module_data.PRODUCTS_BUNDLE }
{if $module_data.PRODUCTS_BUNDLE_HEAD }
<!-- ---------- Zeile Bundle Hauptartikel --------------------------- -->
<tr>
<td class="main_bundle">{if $module_data.PRODUCTS_IMAGE!=''}<img src="{$module_data.PRODUCTS_IMAGE}" alt="{$module_data.IMAGE_ALT}" />{/if}</td>
<td valign="top" class="main_bundle" align="center">{$module_data.PRODUCTS_QTY}</td>
<td valign="top" class="main_bundle"><strong><a href="{$module_data.PRODUCTS_LINK}">{$module_data.PRODUCTS_NAME}</a></strong><br />
{if $module_data.PRODUCTS_SHIPPING_TIME neq ""}{#text_shippingtime#} {$module_data.PRODUCTS_SHIPPING_TIME}{/if}
{if $module_data.ATTRIBUTES!=''}
<table width="100%" border="0" cellspacing="0" cellpadding="0">
{foreach key=key_data item=item_data from=$module_data.ATTRIBUTES}
<tr>
<td class="main_bundle">{$item_data.NAME}:</td>
<td class="main_bundle" align="left">{$item_data.VALUE_NAME}</td>
</tr>
{/foreach}
</table>
{else}
{/if} </td>
<td valign="top" nowrap class="boxTextBG" style="border-right: 1px solid; border-color: #cccccc;" align="right">{$module_data.PRODUCTS_SINGLE_PRICE}</td>
<td valign="top" nowrap class="boxTextBG" style="border-right: 1px solid; border-color: #cccccc;" align="right">{$module_data.PRODUCTS_PRICE}
</td>
<td width="10" align="center" valign="middle" class="boxTextBGII">{$module_data.BOX_DELETE}</td>
</tr>
{else}
<!-- ---------- Zeile Bundle Teilartikel --------------------------- -->
<tr>
<td class="main">{if $module_data.PRODUCTS_IMAGE!=''}<img src="{$module_data.PRODUCTS_IMAGE}" alt="{$module_data.IMAGE_ALT}" />{/if}</td>
<td valign="top" class="main" align="center">{$module_data.PRODUCTS_QTY}</td>
<td valign="top" class="main"><strong><a href="{$module_data.PRODUCTS_LINK}">{$module_data.PRODUCTS_NAME}</a></strong><br />
{if $module_data.PRODUCTS_SHIPPING_TIME neq ""}{#text_shippingtime#} {$module_data.PRODUCTS_SHIPPING_TIME}{/if}
{if $module_data.ATTRIBUTES!=''}
<table width="100%" border="0" cellspacing="0" cellpadding="0">
{foreach key=key_data item=item_data from=$module_data.ATTRIBUTES}
<tr>
<td class="main">{$item_data.NAME}:</td>
<td class="main" align="left">{$item_data.VALUE_NAME}</td>
</tr>
{/foreach}
</table>
{else}
{/if} </td>
<td valign="top" nowrap class="boxTextBG" style="border-right: 1px solid; border-color: #cccccc;" align="right">{#text_bundle_part#}<br />{$module_data.PRODUCTS_BUNDLE_SINGLE_PRICE}</td>
<td valign="top" nowrap class="boxTextBG" style="border-right: 1px solid; border-color: #cccccc;" align="right">{#text_bundle_part#}<br />{$module_data.PRODUCTS_BUNDLE_PRICE}
</td>
<td width="10" align="center" valign="middle" class="boxTextBGII"> </td>
</tr>
{/if}
{else}
<!-- ---------- Zeile norm. Artikel --------------------------- -->
---------------------------------------------------------------------------------------------------
Finde folgendes:
</td>
<td width="10" align="center" valign="middle" class="boxTextBGII">{$module_data.BOX_DELETE}</td>
</tr>
und füge danach ein:
{/if}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-templates/xtc4/stylesheet.css
---------------------------------------------------------------------------------------------------
füge am Ende ein:
/* ibundle */
TD.main_bundle {
background: #f4f7fd;
font-family: Verdana, Arial, sans-serif;
font-size: 11px;
line-height: 1.5;
}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
|