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: Bugfix: Kategorien verschieben

    Jan Knoblauch

    • Neu im Forum
    • Beiträge: 4
    • Geschlecht:
    Bugfix: Kategorien verschieben
    am: 06. September 2018, 09:56:54
    Hallo Forum!

    Ich habe einen Fehler beim Verschieben einer oder mehrerer Kategorien gefunden. Ich verwende die Version "v2.0.3.0 rev 10907".
    Bei der Auswahl "Verschiebe alle nach:" werden immer alle Kategorien angezeigt. Bei Auswahl der falschen Kategorie kann ein Zyklus in der Datenbank-Tabelle "categories" entstehen, sodass die rekursive Funktion "xtc_get_subcategories" in einer Endlosschleife stecken bleibt. Dadurch kann z.B. die Navigation nicht erzeugt werden und der Shop ist nicht mehr aufrufbar.

    Gehen wir von folgender Kategorie-Struktur aus:

    Top
    - A
    -- A1
    --- A11

    Verschiebe ich nun fälschlicherweise die Kategorie A in die Kategorie A1 ergeben sich folgende Einträge in der Tabelle "categories":

    categories_id      parent_id      ...
    ...                ...            ...
    100 (A)            101 (A1)       ...
    101 (A1)           100 (A)        ...
    ...                ...            ...

    Diese Fehlbedienung wird verhindert, wenn bei der Auswahl der Zielkategorie kritische Kategorien nicht angezeigt werden. Folgender Code filtert jede zu verschiebende Kategorie mit deren Unterkategorien aus:

    Code: PHP  [Auswählen]
    $category_tree_exclude = array();

    if ((isset($_POST['multi_categories'])) && (is_array($_POST['multi_categories']))) {
            foreach ($_POST['multi_categories'] as $moved_category) {
                    $category_tree_exclude = xtc_get_category_tree($moved_category, '', '0', $category_tree_exclude, true);
            }
    }

    $category_ids_exclude = array();

    if (isset($current_category_id)) {
            $category_ids_exclude[] = $current_category_id;
    }

    foreach ($category_tree_exclude as $exclude_category) {
            $category_ids_exclude[] = $exclude_category['id'];
    }

    $category_tree = array();
    $complete_category_tree = xtc_get_category_tree();

    foreach ($complete_category_tree as $current_category) {
            if (!in_array($current_category['id'], $category_ids_exclude)) {
                    $category_tree[] = $current_category;
            }
    }

    Er ersetzt folgenden Code in Zeile 769 in der Datei "admin/includes/modules/categories_view.php":

    Code: PHP  [Auswählen]
    $category_tree = xtc_get_category_tree();


    Linkback: https://www.modified-shop.org/forum/index.php?topic=39467.0
    10 Antworten
    5364 Aufrufe
    12. November 2013, 20:06:01 von Teichbau
    0 Antworten
    1624 Aufrufe
    03. April 2013, 17:00:25 von bbholzbb
    1 Antworten
    1777 Aufrufe
    14. Dezember 2016, 17:48:43 von GTB
               
    anything