Hallo xtc-Konsumenten
bekam von einem Kollegen ein Zubehörmodul, das er angeblich in einer Version mit update 1b installiert hat, dass er nun in einem anderen shop mit update 1c , später dann 1d installiert haben will. Er hatte auch schon probleme, wesshalb er mich heranzog.
modul-info: ( habe leider nicht mehr ) - anscheinend ein modul für xt-commerce, sollte aber auch in modified laufen.
*****************************************
* @package Zubehoermodul *
* (c) 2009 (( Wir dulden keine kommerziellen Werbelinks - Bitte
Forenregeln beachten! )) *
* @compatible SP2.1 *
*****************************************
ein install.txt ist dabei, mit folgenden instruktionen:
*****************************************
* *
* INSTALLATION-GUIDE *
* *
--------------
NEW FILES:
--------------
admin/accessories.php
admin/includes/javascript/DynPrice.js
inc/xtc_get_default_attributes.inc.php
includes/modules/product_accessories.php
lang/english/admin/accessories.php
lang/german/admin/accessories.php
templates/xtc4/module/accessories.html
templates/xtc4/module/product_info/product_info_zubehoer.html
--------------
CHANGED FILES:
--------------
admin/includes/application_top.php
admin/includes/column_left.php
admin/includes/stylesheet.css
inc/xtc_draw_hidden_field.inc.php
includes/cart_actions.php
includes/classes/product.php
includes/database_tables.php
includes/filenames.php
includes/modules/product_info.php
lang/english/admin/english.php
lang/english/english.php
lang/english/lang_english.conf
lang/german/admin/german.php
lang/german/german.php
lang/german/lang_german.conf
templates/xtc4/javascript/general.js.php
-------------
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,
qty int(4) NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
2. new_files und new_dirs kopieren.
3. changed_files kopieren, oder bei nicht standard-version folgende änderungen durchführen:
-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');
define('TABLE_ACCESSORIES', 'accessories');
define('TABLE_ACCESSORIES_PRODUCTS', 'accessories_products');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-admin/includes/column_left.php
---------------------------------------------------------------------------------------------------
finde folgendes:
if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['products_expected'] == '1')) echo '<a href="' . xtc_href_link(FILENAME_PRODUCTS_EXPECTED, '', 'NONSSL') . '" class="menuBoxContentLink"> -' . BOX_PRODUCTS_EXPECTED . '</a><br>';
und füge danach ein:
if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['accessories'] == '1')) echo '<li><a href="' . xtc_href_link(FILENAME_ACCESSORIES, '', 'NONSSL') . '" class="menuBoxContentLink"> -' . BOX_ACCESSORIES . '</a></li>';
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-admin/includes/stylesheet.css
---------------------------------------------------------------------------------------------------
füge am Ende ein:
.access_step_cc {background-color:#dddddd; padding-left:5px; padding-right:10px;}
.access_step_c2 {padding-left:5px; padding-right:10px;}
.dataTableContentRow_acc {
font-family: Verdana, Arial, sans-serif;
font-size: 10px;
color: #000000;
vertical-align: top;
border-bottom: 1px dashed #cccccc;
padding:5px;
}
.mouseOut {
border:1px solid #CCCCCC;
}
.mouseIn {
border:1px solid #999999;
}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-inc/xtc_draw_hidden_field.inc.php
---------------------------------------------------------------------------------------------------
finde folgendes:
} else {
$field .= xtc_parse_input_field_data($GLOBALS[$name], array('"' => '"'));
}
if (xtc_not_null($parameters)) $field .= ' ' . $parameters;
$field .= '" />';
und ersetze es mit:
} else {
$field .= xtc_parse_input_field_data($GLOBALS[$name], array('"' => '"'));
}
$field .= '"';
if (xtc_not_null($parameters)) $field .= ' ' . $parameters;
$field .= ' />';
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/cart_actions.php
---------------------------------------------------------------------------------------------------
finde folgendes:
Released under the GNU General Public License
---------------------------------------------------------------------------------------*/
und füge danach ein:
require_once (DIR_FS_INC.'xtc_get_default_attributes.inc.php');
---------------------------------------------------------------------------------------------------
finde folgendes:
case 'add_product' :
und füge danach ein:
if (isset($_POST['products_id']))
{
if(is_array($_POST['products_id'])) {
$pids = count($_POST['products_id']);
for($i=0; $i<$pids; $i++){
if ($_POST['products_qty'][$i] > MAX_PRODUCTS_QTY)
$_POST['products_qty'][$i] = 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);
}
for($i=0; $i<$pids; $i++){
if ($i==0)
$_SESSION['cart']->add_cart((int)$_POST['products_id'][$i], $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'][$i], $_POST['id'])) + xtc_remove_non_numeric($_POST['products_qty'][$i]), $_POST['id']);
else
$_SESSION['cart']->add_cart((int)$_POST['products_id'][$i], $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'][$i], $_POST['id'])) + xtc_remove_non_numeric($_POST['products_qty_'.$_POST['products_id'][$i]]), $_POST['id']);
}
} else {
---------------------------------------------------------------------------------------------------
finde folgendes:
$_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)));
und füge danach ein:
}
}
xtc_redirect(xtc_href_link($goto, 'products_id=' . (int) $_POST['products_id'][0] . '&' . xtc_get_all_get_params($parameters)));
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/classes/product.php
---------------------------------------------------------------------------------------------------
finde folgendes:
function buildDataArray(&$array,$image='thumbnail') {
und füge davor ein:
function getAccessoriesCount() {
$products_accessories_query = xtDBquery("SELECT COUNT(ap.id) AS total
FROM ".TABLE_ACCESSORIES_PRODUCTS." ap, ".TABLE_ACCESSORIES." a
WHERE a.head_product_id = '".$this->pID."'
AND a.id = ap.accessories_id");
$products_accessories = xtc_db_fetch_array($products_accessories_query, true);
return $products_accessories['total'];
}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/database_tables.php
---------------------------------------------------------------------------------------------------
finde folgendes:
?>
und füge davor ein:
define('TABLE_ACCESSORIES', 'accessories');
define('TABLE_ACCESSORIES_PRODUCTS', 'accessories_products');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/filenames.php
---------------------------------------------------------------------------------------------------
finde folgendes:
?>
und füge davor ein:
define('FILENAME_ACCESSORIES', 'accessories.php');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-includes/modules/product_info.php
---------------------------------------------------------------------------------------------------
finde folgendes (2 Mal):
$info_smarty->assign('ADD_QTY', xtc_draw_input_field('products_qty', '1', 'size="3"').' '.xtc_draw_hidden_field('products_id', $product->data['products_id']));
und ersetze es mit:
$info_smarty->assign('ADD_QTY', xtc_draw_input_field('products_qty[]', '1', 'size="3" id="products_qty" onkeyup="upDatePrice();"').' '.xtc_draw_hidden_field('products_id[]', $product->data['products_id']));
---------------------------------------------------------------------------------------------------
finde folgendes:
$info_smarty->assign('PRODUCTS_PRICE', $products_price['formated']);
und füge danach ein:
$info_smarty->assign('PRODUCTS_PRICE_HIDDEN', xtc_draw_hidden_field('priceHidden',$products_price['plain'],'id=\'priceHidden\''));
---------------------------------------------------------------------------------------------------
finde folgendes:
include (DIR_WS_MODULES.'product_reviews.php');
und füge danach ein:
include (DIR_WS_MODULES.'product_accessories.php');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/english/admin/english.php
---------------------------------------------------------------------------------------------------
finde folgendes:
?>
und füge davor ein:
define('BOX_ACCESSORIES', 'Accessories');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/english/english.php
---------------------------------------------------------------------------------------------------
finde folgendes:
?>
und füge davor ein:
// for dynPrice Display
define('FOR_ALL_OPTIONS_CHOSEN','Total price including all accessories');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/english/lang_english.conf
---------------------------------------------------------------------------------------------------
finde folgendes:
[product_info]
und füge danach ein.
text_accessories = 'To this article we have suitable Accessories'
text_accessories_info = 'Falls Sie einen oder mehr Zubehörartikel mit einkaufen möchten dann brauchen Sie nur die Checkbox des jeweiligen Zubehörartikels auszuwählen.'
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/german/admin/german.php
---------------------------------------------------------------------------------------------------
finde folgendes:
?>
und füge davor ein:
define('BOX_ACCESSORIES', 'Zubehör');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/german/german.php
---------------------------------------------------------------------------------------------------
finde folgendes:
?>
und füge davor ein:
// for dynPrice Display
define('FOR_ALL_OPTIONS_CHOSEN','Gesamtpreis incl. gewähltes Zubehör');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-lang/german/lang_german.conf
---------------------------------------------------------------------------------------------------
finde folgendes:
[product_info]
und füge danach ein:
text_accessories = 'Zu diesem Artikel haben wir passendes Zubehör'
text_accessories_info = 'Falls Sie einen oder mehr Zubehörartikel mit einkaufen möchten dann brauchen Sie nur die Checkbox des jeweiligen Zubehörartikels auszuwählen.'
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-templates/xtc4/javascript/general.js.php
---------------------------------------------------------------------------------------------------
finde folgendes:
<script type="text/javascript"><!--
und füge danach ein:
function SuchenUndErsetzen(QuellText, SuchText, ErsatzText)
{ if ((QuellText == null) || (SuchText == null)) { return null; }
if ((QuellText.length == 0) || (SuchText.length == 0)) { return QuellText; }
// Kein ErsatzText ?
if ((ErsatzText == null) || (ErsatzText.length == 0)) { ErsatzText = ""; }
var LaengeSuchText = SuchText.length;
var LaengeErsatzText = ErsatzText.length;
var Pos = QuellText.indexOf(SuchText, 0);
while (Pos >= 0)
{
QuellText = QuellText.substring(0, Pos) + ErsatzText + QuellText.substring(Pos + LaengeSuchText);
Pos = QuellText.indexOf(SuchText, Pos + LaengeErsatzText);
}
return QuellText;
}
function myRound(n, Stellen)
{
return ergebnis = (Math.round(n * Math.pow(10, Stellen)) / Math.pow(10, Stellen));
}
function upDatePrice()
{
var preisAufschlag=0;
var zubebhoerAktiv = 0;
if (document.getElementById('products_qty').value == '') {
document.getElementById('products_qty').value = 0;
}
preisAufschlag=eval(document.getElementById('products_qty').value)*document.getElementById('priceHidden').value;
for(var i=0;i<document.forms.cart_quantity.elements.length;i++)
{
if(document.forms.cart_quantity.elements
.type=="checkbox" && document.forms.cart_quantity.elements.name=='products_id[]' && document.forms.cart_quantity.elements.checked===true)
{
zubebhoerAktiv = 1;
nummer = document.forms.cart_quantity.elements.value;
preisAufschlag+=eval(document.getElementById('wert_' + nummer).value)*eval(document.getElementById('products_qty_' + nummer).value);
}
}
/*if (zubebhoerAktiv == 0) {
document.getElementById("DynPrice").innerHTML='';
return;
}*/
if(preisAufschlag!=document.getElementById('priceHidden').value)
{
gerundet = myRound(preisAufschlag,2);
document.getElementById("DynPrice").innerHTML='<strong>' + SuchenUndErsetzen(gerundet.toFixed(2),'.',',') + '<?php echo " ".$_SESSION["currency"]."</strong><br>".FOR_ALL_OPTIONS_CHOSEN; ?>';
}
else
document.getElementById("DynPrice").innerHTML='';
}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-------------------------------------------
--- beim durchführen der "installation" viel mir auf, dass die halben sachen so nicht existieren, passen.
_____________
Bevor ich nun den code des modules analysiere, wollte ich mal anfragen ob das jemand kennt, bzw ob eines der folgenden module läuft - oder könnt ihr eines empfehlen ? - da die module recht "günstig" sind zahlt es sich nicht aus hier lange herumzuhacken...
http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte Forenregeln beachten! ))/product_info.php/info/p138_Accessoires-Manager--Zubehoer-.html
https://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte Forenregeln beachten! ))/modul-zubehoer.html
http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte Forenregeln beachten! ))/Modul-Zubehoer.html
ok, die links gehen nicht, will jezt hier nicht herum url-shortnen und die forumregeln umgehen, ev kann ja der admin mal ne Ausnahme machen.
für Infos / Erfahrungen berzügl erprobter zubehör-module für 1c und aufwärts wäre ich sehr verbunden
danke, gruss
Linkback: https://www.modified-shop.org/forum/index.php?topic=22155.0