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: "continue shopping" soll zu "product_listing" führen

    fishnet

    • Fördermitglied
    • Beiträge: 4.821
    • Geschlecht:
    ##edit...falsch gedacht

    ich habe ein Mengenfeld und den Button "in den korb" in die product_listing eingefügt.
    Im Admin habe ich angehakt

    Soll Warenkorb nach dem einfügen Angezeigt werden?   - false

    Denn ich möchte nicht das der Käufer zum Warenkorb springt.
    Nun springt er aber in den Artikel. Ich möchte aber das er in der Produktübersicht bleibt.

    Hat jemand eine Idee, wo ich welchen Link ändern muss ?

    #edit2 Mist... noch ein Problem... das Mengenfeld und der Button "in den Korb" tauchen nun auch in der Liste der neuen Artikel auf (funktionieren dort aber natürlich nicht).
    Also dort müsste ich es entweder rauskriegen oder zum Funktionieren bekommen
    *seufz*



    Linkback: https://www.modified-shop.org/forum/index.php?topic=6879.0

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    "continue shopping" soll zu "product_listing" führen
    Antwort #1 am: 26. Juli 2010, 13:43:58
    Hallo Karsten,

    schau dir die /includes/cart_action.php an

    case 'add_product'

    Code: PHP  [Auswählen]
    xtc_redirect(xtc_href_link($goto, 'products_id=' . (int) $_POST['products_id'] . '&' . xtc_get_all_get_params($parameters)));
     
    diese Zeile musst du dafür ändern

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    "continue shopping" soll zu "product_listing" führen
    Antwort #2 am: 26. Juli 2010, 13:50:52
    Nachtrag:

    wenn ich mir das mal so überlege, dann sind diese Funktionen bereits vorhanden. Redirect, dorthin, wo der Kunde vor dem Kaufen war

    Code: PHP  [Auswählen]
    $goto = basename($PHP_SELF);
                    if ($_GET['action'] == 'buy_now') {
                            $parameters = array (
                                    'action',
                                    'pid',
                                    'products_id',
                                    'BUYproducts_id'
                            );
                    }
     
    und der Button ist ja nichts neues, den gibt es Standardmässig bereits und der funktioniert auch in der products_new.php

    Alles was neu ist, ist das Mengenfeld oder irre ich mich ?

    fishnet

    • Fördermitglied
    • Beiträge: 4.821
    • Geschlecht:
    "continue shopping" soll zu "product_listing" führen
    Antwort #3 am: 26. Juli 2010, 13:56:36
    ich schreib mal detailliert, was ich bisher gemacht habe

    In der includes/classes/product.php habe ich unter

    Code: PHP  [Auswählen]
    return array ('PRODUCTS_NAME' => $array['products_name'],
                                    'COUNT'=>$array['ID'],
                                    'PRODUCTS_ID'=>$array['products_id'],
    das hier eingefügt

    Code: PHP  [Auswählen]
    'FORM_ACTION' => xtc_href_link(FILENAME_DEFAULT, xtc_get_all_get_params(array('action')) . 'action=add_product'),
    'ADD_QTY' => xtc_draw_input_field('products_qty', '1','size="3"') . ' ' . xtc_draw_hidden_field('products_id', $array['products_id']),
    'ADD_CART_BUTTON' => xtc_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART),
    Und dann habe ich in module/product_listing/product_listing.html

    statt {$module_data.PRODUCTS_BUTTON_BUY_NOW} das hier eingefügt:

    Code: PHP  [Auswählen]
    <form action="{$module_data.FORM_ACTION}" method="post">{$module_data.ADD_QTY} {$module_data.ADD_CART_BUTTON}</form>
    Wenn ich nun die Menge eingebe und auf "in den Korb" klicke - in der Produktübersicht - dann lande ich je nach Admineinstellung entweder im Produkt oder im Warenkorb, statt einfach in der Produktübersicht zu bleiben.

    fishnet

    • Fördermitglied
    • Beiträge: 4.821
    • Geschlecht:
    "continue shopping" soll zu "product_listing" führen
    Antwort #4 am: 26. Juli 2010, 15:20:05
    Nachtrag:

    wenn ich mir das mal so überlege, dann sind diese Funktionen bereits vorhanden. Redirect, dorthin, wo der Kunde vor dem Kaufen war

    öhm... nein.
    Anscheinend nicht. Das System geht davon aus, das der Kunde vor dem Kauf in der product_info war

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    "continue shopping" soll zu "product_listing" führen
    Antwort #5 am: 26. Juli 2010, 15:25:06
    gehe mal in den Demoshop und probier das aus.

    Ich kann dort einen "Neuen Artikel" in den Warenkorb legen und bleibe auf der Startseite  8)  (habe natürlich im Vorfeld im Admin die Weiterleitung in den Warenkorb deaktiviert)

    fishnet

    • Fördermitglied
    • Beiträge: 4.821
    • Geschlecht:
    "continue shopping" soll zu "product_listing" führen
    Antwort #6 am: 26. Juli 2010, 15:27:57
    Da wird wohl grad dran gebastelt, krieg gleich beim Aufruf des Demoshops ne Fehlermeldung
    Ich sitze hier aber auch ein einem XTM V 1.01

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    "continue shopping" soll zu "product_listing" führen
    Antwort #7 am: 26. Juli 2010, 15:31:08
    funktioniert der Aufruf soweit, dass das Produkt korrekt in den Warenkorb gelegt wird?

    poste mal deine "cart_action.php".

    fishnet

    • Fördermitglied
    • Beiträge: 4.821
    • Geschlecht:
    "continue shopping" soll zu "product_listing" führen
    Antwort #8 am: 26. Juli 2010, 15:58:24
    Ja, zumindest in der product_listing wird das Produkt in den Warenkorb gelegt

    cart_actions.php:

    Code: PHP  [Auswählen]
    <?php

    /* -----------------------------------------------------------------------------------------
       $Id: cart_actions.php 1298 2005-10-09 13:14:44Z mz $

       XT-Commerce - community made shopping
       http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))

       Copyright (c) 2003 XT-Commerce
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(application_top.php,v 1.273 2003/05/19); www.oscommerce.com
       (c) 2003         nextcommerce (application_top.php,v 1.54 2003/08/25); www.nextcommerce.org

       Released under the GNU General Public License
       -----------------------------------------------------------------------------------------
       Third Party contribution:
       Add A Quickie v1.0 Autor  Harald Ponce de Leon

       Credit Class/Gift Vouchers/Discount Coupons (Version 5.10)
       http://www.oscommerce.com/community/contributions,282
       Copyright (c) Strider | Strider@oscworks.com
       Copyright (c  Nick Stanko of UkiDev.com, nick@ukidev.com
       Copyright (c) Andre ambidex@gmx.net
       Copyright (c) 2001,2002 Ian C Wilson http://www.phesis.org

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/


    // Shopping cart actions
    if (isset ($_GET['action'])) {
            // redirect the customer to a friendly cookie-must-be-enabled page if cookies are disabled
            if ($session_started == false) {
                    xtc_redirect(xtc_href_link(FILENAME_COOKIE_USAGE));
            }

            if (DISPLAY_CART == 'true') {
                    $goto = FILENAME_SHOPPING_CART;
                    $parameters = array (
                            'action',
                            'cPath',
                            'products_id',
                            'pid'
                    );
            } else {
                    $goto = basename($PHP_SELF);
                    if ($_GET['action'] == 'buy_now') {
                            $parameters = array (
                                    'action',
                                    'pid',
                                    'products_id',
                                    'BUYproducts_id'
                            );
                    } else {
                            $parameters = array (
                                    'action',
                                    'pid',
                                    'BUYproducts_id',
                                    'info'
                            );
                    }
            }
            switch ($_GET['action']) {
                    // customer wants to update the product quantity in their shopping cart
                    case 'update_product' :

                            if (is_object($econda))
                                    $econda->_emptyCart();

                            for ($i = 0, $n = sizeof($_POST['products_id']); $i <$n; $i++) {
                                            if (in_array($_POST['products_id'][$i], (is_array($_POST['cart_delete']) ? $_POST['cart_delete'] : array ()))) {
                                            $_SESSION['cart']->remove($_POST['products_id'][$i]);

                                            if (is_object($econda))
                                                    $econda->_delArticle($_POST['products_id'][$i], $_POST['cart_quantity'][$i], $_POST['old_qty'][$i]);

                                    } else {
                                            if ($_POST['cart_quantity'][$i]> MAX_PRODUCTS_QTY)
                                                    $_POST['cart_quantity'][$i] = MAX_PRODUCTS_QTY;
                                            $attributes = ($_POST['id'][$_POST['products_id'][$i]]) ? $_POST['id'][$_POST['products_id'][$i]] : '';

                                            if (is_object($econda)) {
                                                    $old_quantity = $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'][$i], $_POST['id'][$i]));
                                                    $econda->_updateProduct($_POST['products_id'][$i], $_POST['cart_quantity'][$i], $old_quantity);
                                            }

                                            $_SESSION['cart']->add_cart($_POST['products_id'][$i], xtc_remove_non_numeric($_POST['cart_quantity'][$i]), $attributes, false);
                                    }
                            }
                            xtc_redirect(xtc_href_link($goto, xtc_get_all_get_params($parameters)));
                            break;
                            // customer adds a product from the products page
                    case 'add_product' :
                            if (isset ($_POST['products_id']) && is_numeric($_POST['products_id'])) {
                                    if ($_POST['products_qty']> MAX_PRODUCTS_QTY)
                                            $_POST['products_qty'] = MAX_PRODUCTS_QTY;

                                    if (is_object($econda)) {
                                            $econda->_emptyCart();
                                            $old_quantity = $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'], $_POST['id']));
                                            $econda->_addProduct($_POST['products_id'], $_POST['products_qty'], $old_quantity);
                                    }

                                    $_SESSION['cart']->add_cart((int) $_POST['products_id'], $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'], $_POST['id'])) + xtc_remove_non_numeric($_POST['products_qty']), $_POST['id']);
                            }
                            xtc_redirect(xtc_href_link($goto, 'products_id=' . (int) $_POST['products_id'] . '&' . xtc_get_all_get_params($parameters)));
                            break;

                    // <neu> extended product_listing 07-04-25 SCL
                    // customer adds a product from the products_listing page
                    case 'listing_add_product':
                            reset ($_REQUEST['submit']);
                            list($products_id,) = each($_REQUEST['submit']);
                            // check permission to view product
                            if (isset($products_id) && is_numeric($products_id)) {
                                    $permission_query=xtc_db_query("SELECT group_permission_" . $_SESSION['customers_status']['customers_status_id'] . " as customer_group,products_fsk18 from ".TABLE_PRODUCTS." where products_id='". $products_id. "'");
                                    $permission=xtc_db_fetch_array($permission_query);

                                    // check for FSK18
                                    if ($permission['products_fsk18']=='1' && ( $_SESSION['customers_status']['customers_fsk18']=='1' || $_SESSION['customers_status']['customers_fsk18_display']=='0' ) )
                                            xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_id, 'NONSSL'));

                                    if (GROUP_CHECK=='true')
                                            if ($permission['customer_group'] != '1')
                                                    xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id='. $products_id));

                                    if (xtc_has_product_attributes($products_id)) {
                                            xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id='. $products_id));
                                    } else {
                                            if (isset ($_SESSION['cart'])) {
                                                    if ($_POST['products_qty_'. $products_id]> MAX_PRODUCTS_QTY)
                                                            $_POST['products_qty'. $products_id] = MAX_PRODUCTS_QTY;
                                                    if (is_object($econda)) {
                                                            $econda->_emptyCart();
                                                            $old_quantity = $_SESSION['cart']->get_quantity($products_id);
                                                            $econda->_addProduct($products_id, $old_quantity + $_POST['products_qty'. $products_id], $old_quantity);
                                                    }
                                                    $_SESSION['cart']->add_cart((int)$products_id, $_SESSION['cart']->get_quantity(xtc_get_uprid($products_id, $_POST['id']))+$_POST['products_qty_'.$products_id]);
                                            } else {
                                                    xtc_redirect(xtc_href_link(FILENAME_DEFAULT));
                                            }
                                    }
                            }
                            xtc_redirect(xtc_href_link($goto, xtc_get_all_get_params($parameters)));
                            break;
                    // </neu>

                    case 'check_gift' :
                            require_once (DIR_FS_INC . 'xtc_collect_posts.inc.php');
                            xtc_collect_posts();
                            break;

                            // customer wants to add a quickie to the cart (called from a box)
                    case 'add_a_quickie' :
                            $quicky = addslashes($_POST['quickie']);
                            if (GROUP_CHECK == 'true') {
                                    $group_check = "and group_permission_" . $_SESSION['customers_status']['customers_status_id'] . "=1 ";
                            }

                            $quickie_query = xtc_db_query("select
                                                                                            products_fsk18,
                                                                                            products_id from "
    . TABLE_PRODUCTS . "
                                                                                            where products_model = '"
    . $quicky . "' " . "AND products_status = '1' " . $group_check);

                            if (!xtc_db_num_rows($quickie_query)) {
                                    if (GROUP_CHECK == 'true') {
                                            $group_check = "and group_permission_" . $_SESSION['customers_status']['customers_status_id'] . "=1 ";
                                    }
                                    $quickie_query = xtc_db_query("select
                                                                                                                     products_fsk18,
                                                                                                                     products_id from "
    . TABLE_PRODUCTS . "
                                                                                                                     where products_model LIKE '%"
    . $quicky . "%' " . "AND products_status = '1' " . $group_check);
                            }
                            if (xtc_db_num_rows($quickie_query) != 1) {
                                    xtc_redirect(xtc_href_link(FILENAME_ADVANCED_SEARCH_RESULT, 'keywords=' . $quicky, 'NONSSL'));
                            }
                            $quickie = xtc_db_fetch_array($quickie_query);
                            if (xtc_has_product_attributes($quickie['products_id'])) {
                                    xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $quickie['products_id'], 'NONSSL'));
                            } else {
                                    if ($quickie['products_fsk18'] == '1' && $_SESSION['customers_status']['customers_fsk18'] == '1') {
                                            xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $quickie['products_id'], 'NONSSL'));
                                    }
                                    if ($_SESSION['customers_status']['customers_fsk18_display'] == '0' && $quickie['products_fsk18'] == '1') {
                                            xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $quickie['products_id'], 'NONSSL'));
                                    }
                                    if ($_POST['quickie'] != '') {
                                            $act_qty = $_SESSION['cart']->get_quantity(xtc_get_uprid($quickie['products_id'], 1));
                                            if ($act_qty> MAX_PRODUCTS_QTY)
                                                    $act_qty = MAX_PRODUCTS_QTY - 1;
                                            $_SESSION['cart']->add_cart($quickie['products_id'], $act_qty +1, 1);
                                            xtc_redirect(xtc_href_link($goto, xtc_get_all_get_params(array (
                                                    'action'
                                            )), 'NONSSL'));
                                    } else {
                                            xtc_redirect(xtc_href_link(FILENAME_ADVANCED_SEARCH_RESULT, 'keywords=' . $quicky, 'NONSSL'));
                                    }
                            }
                            break;

                            // performed by the 'buy now' button in product listings and review page
                    case 'buy_now' :
                            if (isset ($_GET['BUYproducts_id'])) {
                                    // check permission to view product

                                    $permission_query = xtc_db_query("SELECT group_permission_" . $_SESSION['customers_status']['customers_status_id'] . " as customer_group, products_fsk18 from " . TABLE_PRODUCTS . " where products_id='" . (int) $_GET['BUYproducts_id'] . "'");
                                    $permission = xtc_db_fetch_array($permission_query);

                                    // check for FSK18
                                    if ($permission['products_fsk18'] == '1' && $_SESSION['customers_status']['customers_fsk18'] == '1') {
                                            xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . (int) $_GET['BUYproducts_id'], 'NONSSL'));
                                    }
                                    if ($_SESSION['customers_status']['customers_fsk18_display'] == '0' && $permission['products_fsk18'] == '1') {
                                            xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . (int) $_GET['BUYproducts_id'], 'NONSSL'));
                                    }

                                    if (GROUP_CHECK == 'true') {

                                            if ($permission['customer_group'] != '1') {
                                                    xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . (int) $_GET['BUYproducts_id']));
                                            }
                                    }
                                    if (xtc_has_product_attributes($_GET['BUYproducts_id'])) {
                                            xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . (int) $_GET['BUYproducts_id']));
                                    } else {
                                            if (isset ($_SESSION['cart'])) {

                                                    if (is_object($econda)) {
                                                            $econda->_emptyCart();
                                                            $old_quantity = $_SESSION['cart']->get_quantity((int) $_GET['BUYproducts_id']);
                                                            $econda->_addProduct($_GET['BUYproducts_id'], $old_quantity +1, $old_quantity);
                                                    }

                                                    $_SESSION['cart']->add_cart((int) $_GET['BUYproducts_id'], $_SESSION['cart']->get_quantity((int) $_GET['BUYproducts_id']) + 1);
                                            } else {
                                                    xtc_redirect(xtc_href_link(FILENAME_DEFAULT));
                                            }
                                    }
                            }
                            xtc_redirect(xtc_href_link($goto, xtc_get_all_get_params(array (
                                    'action',
                                    'BUYproducts_id'
                            ))));
                            break;
                    case 'cust_order' :
                            if (isset ($_SESSION['customer_id']) && isset ($_GET['pid'])) {
                                    if (xtc_has_product_attributes((int) $_GET['pid'])) {
                                            xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . (int) $_GET['pid']));
                                    } else {
                                            $_SESSION['cart']->add_cart((int) $_GET['pid'], $_SESSION['cart']->get_quantity((int) $_GET['pid']) + 1);
                                    }
                            }
                            xtc_redirect(xtc_href_link($goto, xtc_get_all_get_params($parameters)));
                            break;
            }
    }
    ?>

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    "continue shopping" soll zu "product_listing" führen
    Antwort #9 am: 27. Juli 2010, 08:09:57
    ändere mal in deiner "/includes/classes/product.php".

    Code: PHP  [Auswählen]
    'FORM_ACTION' => xtc_href_link(FILENAME_DEFAULT, xtc_get_all_get_params(array('action')) . 'action=add_product')

    in

    Code: PHP  [Auswählen]
    'FORM_ACTION' => xtc_href_link(FILENAME_DEFAULT, xtc_get_all_get_params(array('action')) . 'action=listing_add_product')

    und ein Link zum testen ist auch interessant...

    fishnet

    • Fördermitglied
    • Beiträge: 4.821
    • Geschlecht:
    "continue shopping" soll zu "product_listing" führen
    Antwort #10 am: 27. Juli 2010, 08:16:09
    Code: PHP  [Auswählen]
    Warning: reset() [function.reset]: Passed variable is not an array or object in /www/htdocs/xxxxxxx/includes/cart_actions.php on line 114

    Warning: Variable passed to each() is not an array or object in /www/htdocs/xxxxxxx/includes/cart_actions.php on line 115

    Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/xxxxxxx/includes/cart_actions.php:114) in /www/htdocs/xxxxxxx/inc/xtc_redirect.inc.php on line 29

    Link zum Shop schick ich dir per PM.

    fishnet

    • Fördermitglied
    • Beiträge: 4.821
    • Geschlecht:
    "continue shopping" soll zu "product_listing" führen
    Antwort #11 am: 27. Juli 2010, 10:29:57
    gelöst, vielen Dank !  :B

    Falls wer dasselbe Problem hat:
    "/includes/cart_action.php"
    suche:

    Code: PHP  [Auswählen]
    xtc_redirect(xtc_href_link($goto, 'products_id=' . (int) $_POST['products_id'] . '&' . xtc_get_all_get_params($parameters)));

    ersetze durch:

    Code: PHP  [Auswählen]
    xtc_redirect(xtc_href_link($goto, xtc_get_all_get_params($parameters)));

    Anschließend die Änderungen aus der product_listing auch in diesen Dateien durchführen:

    Zitat
    new_products_default.html
    new_products_overview.html
    new_products.html

    p3e

    • Experte
    • Beiträge: 2.424
    Re: "continue shopping" soll zu "product_listing" führen
    Antwort #12 am: 29. Oktober 2011, 23:10:10
    Das

    Code: PHP  [Auswählen]
    xtc_redirect(xtc_href_link($goto, xtc_get_all_get_params($parameters)));

    funktioniert prima. Nur wenn Du aus der "advanced_search_result.php" Ware in den Warenkorb legst, wirst Du auf die index.php?keywords=DEINSUCHWORT weitergeleitet.

    EDIT: Eigentlich sollte durch

    Code: PHP  [Auswählen]
    $goto = basename($PHP_SELF);

    $goto richtig belegt sein. Irgendwie stehe ich auf dem Schlauch.

    p3e

    • Experte
    • Beiträge: 2.424
    Re: "continue shopping" soll zu "product_listing" führen
    Antwort #13 am: 30. Oktober 2011, 00:20:28
    Hab es jetzt so gelöst:

    Code: PHP  [Auswählen]
    if (isset ($_GET['keywords'])) {
                                    $goto = FILENAME_ADVANCED_SEARCH_RESULT;
                            }

    Sicher nicht die eleganteste Lösung, aber mir qualmte der Kopf und $goto war immer mit "index.php" belegt.

    NACHTRAG:Sollte man aus Sicherheitsgründen nicht sowieso $_SERVER['SCRIPT_NAME'] statt $PHP_SELF nutzen?
    Trade Republic - Provisionsfrei Aktien handeln
    7 Antworten
    5627 Aufrufe
    15. August 2011, 15:59:32 von Tomcraft
    6 Antworten
    5028 Aufrufe
    12. März 2018, 14:32:49 von andy.kegel
    10 Antworten
    11133 Aufrufe
    06. Juli 2011, 15:49:42 von Tomcraft
               
    anything