Možná že mi poradíte, v opencart jsem uplný nováček a migruju jeden náš eshop právě na tento systém.
Problém nastal když jsem měl migrovat kategorie (je jich asi 800 s mnoha potomky) opencart evidentně nepočítá s tolika položkami a tak se načítá skutečně nechutně pomalu (cca 60 sec).
Problém je ve funkci getCategories která se nachází v ./catalog/controller/common/header.php:
Code: Select all
private function getCategories($parent_id, $level = 0) {
$level++;
$data = array();
$results = $this->model_catalog_category->getCategories($parent_id);
foreach ($results as $result) {
$data[] = array(
'category_id' => $result['category_id'],
'name' => str_repeat(' ', $level) . $result['name']
);
$children = $this->getCategories($result['category_id'], $level);
if ($children) {
$data = array_merge($data, $children);
}
}
return $data;
}
Funkce udělá loop a ptá se mnohokrát za sebou jaký má potomky což vyvolá u mnoha kategorií šílené zdržení.
Řešení jsem našel jediné v té samé třídě na řádce 115 kde je volání této funkce kterou jsem zakomentoval.
Code: Select all
//$this->data['categories'] = $this->getCategories(0);
Je nějaký dobrodivec který by mi pomohl říci jak problém vyřešit ? Všiml jsem si například že opencart má cache kde ovšem ukládá kategorie jen administrace, nelze tuto funkci uplně vyřadit pluginem popřípadě ji pluginem vylepšit ?
Děkuji za odpovědi.