public function displayAjaxSearchBlocks($id_search, $hookName, $tplName, $with_product, $selected_criterion = array(), $selected_criterion_hidden = array(), $only_product = false) { ob_start(); $json_return = array(); $searchs = AdvancedSearchClass::getSearch($id_search, $this->_cookie->id_lang); $this->_addToFBLog("Retrieve searchs"); $searchs = $this->getCriterionsGroupsAndCriterionsForSearch($searchs, $this->_cookie->id_lang, $selected_criterion, $selected_criterion_hidden, $with_product, false, true); $this->_addToFBLog("Retrieve criterons and results 2"); $ajaxMode = Tools::getValue('ajaxMode', false); if ($ajaxMode) { $json_return['next_id_criterion_group'] = $this->getNextIdCriterionGroup($id_search); } $location_name = $this->getLocationName($this->_cookie->id_lang); if (preg_match('/displayHome/i', $hookName)) { $hookName = 'home'; } if (Tools::getValue('id_seo')) { $needHiddenForm = false; if ($only_product && version_compare(_PS_VERSION_, '1.5.0.0', '>=') && (preg_match('/leftcolumn/i', $hookName) && !$this->context->controller->display_column_left || preg_match('/rightcolumn/i', $hookName) && !$this->context->controller->display_column_right)) { $needHiddenForm = true; $hookName = ''; } else { if (isset($searchs[0]) && isset($searchs[0]['id_hook']) && $searchs[0]['id_hook'] == -1) { $needHiddenForm = false; $hookName = ''; } } if (empty($hookName) && isset($searchs[0]) && isset($searchs[0]['id_hook']) && $searchs[0]['id_hook'] != -1 || $hookName == 'home') { $needHiddenForm = true; } $this->_smarty->assign(array('hideAS4Form' => $needHiddenForm, 'ajaxMode' => $ajaxMode, 'as_searchs' => $searchs, 'hookName' => $hookName, 'as_obj' => $this, 'as_path' => $this->_path, 'as_selected_criterion' => $selected_criterion, 'as_criteria_group_type_interal_name' => $this->criteria_group_type_interal_name, 'col_img_dir' => _PS_COL_IMG_DIR_, 'as_location_name' => $location_name)); unset($_GET['ajaxMode']); if (!$only_product || $only_product && $needHiddenForm) { $json_return['html_block'] = $this->display(__FILE__, (version_compare(_PS_VERSION_, '1.5.0.0', '<') ? '/views/templates/hook/' : '') . $tplName); } } else { $this->_smarty->assign(array('hideAS4Form' => empty($hookName) && isset($searchs[0]) && isset($searchs[0]['id_hook']) && $searchs[0]['id_hook'] != -1 || $hookName == 'home' ? false : false, 'ajaxMode' => $ajaxMode, 'as_searchs' => $searchs, 'hookName' => $hookName, 'as_obj' => $this, 'as_path' => $this->_path, 'as_selected_criterion' => $selected_criterion, 'as_criteria_group_type_interal_name' => $this->criteria_group_type_interal_name, 'col_img_dir' => _PS_COL_IMG_DIR_, 'as_location_name' => $location_name)); unset($_GET['ajaxMode']); if (!$only_product || $only_product && (empty($hookName) && isset($searchs[0]) && isset($searchs[0]['id_hook']) && $searchs[0]['id_hook'] != -1 || $hookName == 'home')) { $json_return['html_block'] = $this->display(__FILE__, (version_compare(_PS_VERSION_, '1.5.0.0', '<') ? '/views/templates/hook/' : '') . $tplName); } } if ($with_product) { $this->_assignForProductsResults(); $this->_assignProductSort($searchs[0]['products_order_by'], $searchs[0]['products_order_way']); $this->_assignPagination($searchs[0]['products_per_page'], $searchs[0]['total_products']); if ($ajaxMode && !Tools::getIsset('back_from_redirect') && isset($searchs[0]['redirect_one_product']) && $searchs[0]['redirect_one_product'] && isset($searchs[0]['search_method']) && $searchs[0]['search_method'] == 2 && self::_isFilledArray($searchs[0]['products']) && sizeof($searchs[0]['products']) == 1) { self::_cleanBuffer(); echo json_encode(array('html_products' => '', 'html_blocks' => '', 'redirect_to_product' => $searchs[0]['products'][0]['link'])); die; } if ($this->MagicZoomInstance) { $initial_script_name = $GLOBALS['_SERVER']['SCRIPT_NAME']; $GLOBALS['_SERVER']['SCRIPT_NAME'] = '/category.php'; $json_return['html_products'] = $this->MagicZoomInstance->hookHeader(array('cookie', $this->_cookie)); $GLOBALS['_SERVER']['SCRIPT_NAME'] = $initial_script_name; $this->_smarty->assign('products', $searchs[0]['products']); ob_end_clean(); if (!Configuration::get('PS_FORCE_SMARTY_2')) { $this->_smarty->template_resource = 'category.tpl'; } else { $this->_smarty->currentTemplate = 'category'; } $json_return['html_products'] .= $this->MagicZoomInstance->parseTemplateStandard($this->display(__FILE__, (version_compare(_PS_VERSION_, '1.5.0.0', '<') ? '/views/templates/hook/' : '') . 'pm_advancedsearch_results.tpl'), $this->_smarty); } else { $json_return['html_products'] = $this->display(__FILE__, (version_compare(_PS_VERSION_, '1.5.0.0', '<') ? '/views/templates/hook/' : '') . 'pm_advancedsearch_results.tpl'); } $json_return['html_products'] = $this->_fixPaginationLinks($json_return['html_products']); } self::_cleanBuffer(); if ($ajaxMode) { $return = json_encode($json_return); if (function_exists('json_last_error') && json_last_error() == 5 && function_exists('mb_convert_encoding')) { foreach ($json_return as $k => $v) { $json_return[$k] = mb_convert_encoding($json_return[$k], 'UTF-8', 'UTF-8'); } $return = json_encode($json_return); } echo $return; unset($return); } else { $return = ''; foreach ($json_return as $value) { $return .= $value; } return $return; } return false; }