Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: zubehör - module für version update 1b, 1c und 1d

    womd

    • Neu im Forum
    • Beiträge: 39
    zubehör - module für version update 1b, 1c und 1d
    am: 06. September 2012, 21:53:49
    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('"' => '&quot;'));
         }

         if (xtc_not_null($parameters)) $field .= ' ' . $parameters;

        $field .= '" />';

    und ersetze es mit:
         } else {
           $field .= xtc_parse_input_field_data($GLOBALS[$name], array('"' => '&quot;'));
         }
        $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&ouml;rartikel mit einkaufen m&ouml;chten dann brauchen Sie nur die Checkbox des jeweiligen Zubeh&ouml;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&ouml;r'
    text_accessories_info = 'Falls Sie einen oder mehr Zubeh&ouml;rartikel mit einkaufen m&ouml;chten dann brauchen Sie nur die Checkbox des jeweiligen Zubeh&ouml;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 "&nbsp;".$_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

    DirkK

    • Fördermitglied
    • Beiträge: 230
    • Geschlecht:
    Re: zubehör - module für version update 1b, 1c und 1d
    Antwort #1 am: 07. September 2012, 02:05:02
    Also ich habe nur 1 Stelle gefunden die nicht so ganz passt und zwar in der /includes/modules/product_info.php

    Ansonsten kann man es in einen Sp1d Shop mit Sicherheitsupdate und Buttonlösung ganz einfach umsetzen. Am Besten schaust Du Dir das noch mal an und schreibst dann im Notfall genau was Du nicht findest.

    Gruß
     Dirk

    womd

    • Neu im Forum
    • Beiträge: 39
    Re: zubehör - module für version update 1b, 1c und 1d
    Antwort #2 am: 07. September 2012, 23:20:05
    Hi Dirk!

    danke, durch deinen positiven Zuspruch hatte ich die Motivation es nochmal sauber durchzuziehen, bis auf Kleinigkeiten gab es keine Probleme.

    Jedoch nach dem "aktivieren" ( admin_access ) für den User, schmiss es einen FATAL_ERROR und zwar weil die Methode: xtc_parse_input_field_data() in der Datei /inc/xtc_parse_input_field_data.inc.php und in der Datei /admin/includes/functions/general.php definiert ist - zumindest in dem code den ich hier habe.  In letzterer hab ich's ausgeklammert und jetzt scheint alles in Ordnung.

    kannst du das nachvollziehen ?

    danke, gruss

     

    ralph_84

    • Fördermitglied
    • Beiträge: 499
    • Geschlecht:
    Re: zubehör - module für version update 1b, 1c und 1d
    Antwort #3 am: 01. Januar 2013, 23:33:10
    @ womd

    Du hast den Code an der falschen Stelle auskommentiert.
    Sehe mal in der Datei:
    admin/accessories.php nach
    dort sollte so gleich in den ersten Zeile das stehen

    Code: PHP  [Auswählen]
    <?php

            require('includes/application_top.php');
            require_once(DIR_FS_INC.'xtc_parse_input_field_data.inc.php');

            // SEARCH NEW HEAD PRODUCT

    Und dort musst Du dann das auskomentieren.

    Gruß Ralph
    Managed Server
    18 Antworten
    9991 Aufrufe
    01. Februar 2016, 11:21:26 von Marcel86
    7 Antworten
    4571 Aufrufe
    13. Januar 2011, 08:33:00 von franky_n
    1 Antworten
    1041 Aufrufe
    18. Januar 2019, 13:07:07 von Tomcraft
    155 Antworten
    160496 Aufrufe
    30. November 2023, 13:58:48 von Tomcraft
               
    anything