Jump to content

Zmiany w Exta Product Tab


Recommended Posts

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 by 4axis (see edit history)
Link to comment
Share on other sites

×
×
  • Create New...