Modify

Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#1792 closed Neues Feature (fixed)

alsoPurchased Produkte im Backend deaktivierbar machen

Reported by: noRiddle Owned by: somebody
Priority: normal Milestone: modified-shop-2.0.5.1
Component: Shop Version: 2.0.5.0
Keywords: Cc:
Blocked By: Blocking:

Description

Da Produkt-Module wie MODULE_also_purchased Resourcen verbrauchen, manche dies aber nicht benutzen möchten, wäre es schön wenn man das Laden des Modules und seinen Verarbeitungs-Code im Backend deaktivierbar machen würde.
Bislang kann man das Modul update-sicher lediglich im Template auskommentieren, die Queries und die Smarty-Generierungen laufen dann aber ja trotzdem im Hintergrund.

Es gab gerade (wieder) einen Wunsch das Modul "rauszuwerfen":
"Kunden, die diesen Artikel kauften, haben auch ..." ausblenden

Evtl. wäre das auch für Cross-Selling interesant.

Gruß,
noRiddle

Attachments (0)

Change History (7)

comment:1 by noRiddle, 6 years ago

Könnte man vielleicht einfach mittels der Abfrage nach MAX_DISPLAY_ALSO_PURCHASED in der Funktion getAlsoPurchased() der product-Class machen.
Also:

if(MAX_DISPLAY_ALSO_PURCHASED  > 0) {
    ...
}

Gruß,
noRiddle

comment:2 by Torsten Riemer, 6 years ago

Milestone: modified-shop-2.0.5.1
Version: 2.0.5.0

comment:3 by Gerhard Waldemair, 6 years ago

Resolution: fixed
Status: newclosed

In 12684:

fix #1792 - add option to deactivate also purchased and cross selling products

comment:4 by Gerhard Waldemair, 6 years ago

In 12685:

fix #1792 - add option to deactivate also purchased and cross selling products

comment:5 by Gerhard Waldemair, 6 years ago

In 12687:

fix #1792 - add option to deactivate also purchased and cross selling products

comment:6 by anonymous, 6 years ago

Weiß nicht wie Ihr's gelöst habt.

Zur Info und gravierender Performance-Verbesserung:
Hatte gerade einen Kunden der nur einen Artikel hat, der natürlich ständig verkauft wird.
Die alsoPurchased hat den Aufruf der product_info bis auf über 7 Sek. verzögert.
Nach einer neuen if-Clause
if(MIN_DISPLAY_ALSO_PURCHASED > 0) { added if-clause, noRiddle

$data = $product->getAlsoPurchased();
if (count($data) >= MIN_DISPLAY_ALSO_PURCHASED) {

$module_smarty->assign('language', $_SESSIONlanguage);
$module_smarty->assign('module_content', $data);


set cache ID
$module_smarty->caching = 0;
$module = $module_smarty->fetch(CURRENT_TEMPLATE.'/module/also_purchased.html');

$info_smarty->assign('MODULE_also_purchased', $module);

}

}

in /includes/modules/also_purchased_products.php kann man im Backend mittels Setzen von MIN_DISPLAY_ALSO_PURCHASED auf 0 die Ausführung des Codes unterbinden und das Problem somit beheben.


Allerdings ist die Programmatik in der Funktion getAlsoPurchased() der product-Class auch nicht gut geschrieben, da in einem while-Loop die Queries für die Produkt-Daten gemacht werden. Wenn ein Produkt also in mehreren Bestellungen auftaucht wird die Query im while-Loop auch mehrfach durchgeführt, was, um ein und dasselbe Produkt nicht mehrfach zu bekommen, erst in der Query im while-Loop durch GROUP BY abgefangen wird.
Ein simples LIMIT 1 in der 1. Query würde das verhindern:

    $orders_query = "SELECT orders_id 
                       FROM ".TABLE_ORDERS_PRODUCTS." 
                      WHERE products_id = '".(int)$pID."'
                   ORDER BY orders_id DESC
                      LIMIT 1";

und würde auch das GROUP BY in der Query im while-Loop obsolet machen.

Korrekt ?

Gruß,
noRiddle

comment:7 by Gerhard Waldemair, 6 years ago

bzgl. deaktivieren der also purchased Artikel haben wir genau so gelöst.

Deine Limitierung des ersten SQL mit LIMIT 1 verursacht dass nur von 1 Bestellung die Artikel geholt werden die auch gekauft wurden.

Wir schauen aber gerne nochmals ob wir an der Stelle die Performance verbessern können.

Modify Ticket

Action
as closed The owner will remain somebody.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.