4axis Posted September 25, 2014 Share Posted September 25, 2014 (edited) Witam. Korzystam z modułu Exta Product Tab. Chciałbym uzyskać modyfikację, która umożliwi mi przypisanie jednej zakładki do wielu produktów. Mam np. 1600 produktów w których będą np. 4 zakładki z dość dużymi tabelami w html. Oryginalnie moduł tworzy osobne pozycje dla każdego produktu i każdej zakładki. Kiedy dodam 1 tabelę html dla tych 1600 produktów baza rośnie mi o 500 mb !!!! Dodałem osobną tabelę do bazy w której chcę umieszczać kod html. Zmieniłem zapytanie modułu do bazy, ale nie wiem czemu pojawi mi się treść pierwszej zakładki w pozostałych trzech zakładkach. Oryginalna funkcja: public function hookDisplayProductTabContent($params) { $id_product = (int)Tools::getValue('id_product'); $id_lang = (int)Tools::getValue('id_lang'); if ($id_lang == 0) $id_lang = (int)Configuration::get('PS_LANG_DEFAULT'); //get details of active tabs for this product and current lang $productExtraTabsSQL = 'SELECT `tab`.`id_Tab`,`tablang`.`displayname`,`content`.`content` FROM `'._DB_PREFIX_.'extraproducttab` `tab` INNER JOIN `'._DB_PREFIX_.'extraproducttab_lang` `tablang` INNER JOIN `'._DB_PREFIX_.'extraproducttab_product_lang` `content` ON `tab`.`id_Tab` = `tablang`.`id_Tab` AND `tab`.`id_Tab` = `content`.`id_Tab` WHERE `content`.`id_product` = '.$id_product.' AND `content`.`id_lang` = '.$id_lang.' AND `tablang`.`id_lang` = '.$id_lang.' AND `tab`.`id_Tab` NOT IN (SELECT `id_Tab` FROM `'._DB_PREFIX_.'extraproducttab_product` WHERE `id_product` = '.$id_product.') ORDER BY `tab`.`position` ASC;'; $productExtraTabsContent = Db::getInstance()->ExecuteS($productExtraTabsSQL); if ($productExtraTabsContent) { $extraTabIDs = array(); $extraTabContent = array(); foreach ($productExtraTabsContent as $tabContent) { $extraTabIDs[] = $tabContent['id_Tab']; $extraTabContent[$tabContent['id_Tab']] = $tabContent['content']; } //echo $extraTabContent[$tabContent['id_Tab']]; //echo $tabContent['id_Tab']; //assign variables to smarty $this->context->smarty->assign(array( 'extraTabIDs' => $extraTabIDs, 'extraTabContent' => $extraTabContent )); return $this->display(__FILE__, 'producttabcontent.tpl'); } } Zmienione zapytanie: SELECT `tab`.`id_Tab`,`tablang`.`displayname`,`content`.`content`,`tabeli`.`id_tabeli`,`txt`.`tabela` FROM `'._DB_PREFIX_.'extraproducttab` `tab` INNER JOIN `'._DB_PREFIX_.'extraproducttab_lang` `tablang` INNER JOIN `'._DB_PREFIX_.'extraproducttab_product_lang` `content` INNER JOIN `'._DB_PREFIX_.'extraproducttab_product_lang` `tabeli` INNER JOIN `'._DB_PREFIX_.'tabele` `txt` ON `tab`.`id_Tab` = `tablang`.`id_Tab` AND `tab`.`id_Tab` = `content`.`id_Tab` AND `tab`.`id_Tab` = `tabeli`.`id_Tab` AND `tab`.`id_Tab` = `txt`.`id_Tab` WHERE `content`.`id_product` = '.$id_product.' AND `content`.`id_lang` = '.$id_lang.' AND `tablang`.`id_lang` = '.$id_lang.' AND `tab`.`id_Tab` NOT IN (SELECT `id_Tab` FROM `'._DB_PREFIX_.'extraproducttab_product` WHERE `id_product` = '.$id_product.') ORDER BY `tab`.`position` ASC; Zmieniona zmienna: $extraTabContent[$tabContent['id_Tab']] = $tabContent['tabela']; Edited September 25, 2014 by 4axis (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts