* module: ets_seo */ public function getBrandName() { if ($this->product->id_manufacturer) { $manuf = new Manufacturer( $this->product->id_manufacturer, $this->context->language->id ); } if (isset($manuf) && $manuf->id) { return $manuf->name; } return ''; } /* * module: ets_seo */ public function init(): void { $this->id_product = (int) Tools::getValue('id_product'); $product = new Product($this->id_product); if (!Validate::isLoadedObject($product)) { Tools::redirect($this->context->link->getPageLink('404')); return; } parent::init(); } /* * Combined overrides: * - alcaqtydiscountbuttons 1.2.0 * - ststickybuybutton 1.0.3 * * Keep the standard response fields and append each module's own fields. */ public function displayAjaxRefresh() { $alcaEnabled = (bool) Module::isEnabled('alcaqtydiscountbuttons'); $stickyEnabled = (bool) Module::isEnabled('ststickybuybutton'); if (!$alcaEnabled && !$stickyEnabled) { return parent::displayAjaxRefresh(); } $product = $this->getTemplateVarProduct(); $minimalProductQuantity = $this->getProductMinimalQuantity($product); $productDiscounts = $alcaEnabled ? Module::getInstanceByName('alcaqtydiscountbuttons')->renderFromOverride() : $this->render('catalog/_partials/product-discounts'); $response = [ 'product_prices' => $this->render('catalog/_partials/product-prices'), 'product_cover_thumbnails' => $this->render('catalog/_partials/product-cover-thumbnails'), 'product_customization' => $this->render( 'catalog/_partials/product-customization', [ 'customizations' => $product['customizations'], ] ), 'product_details' => $this->render('catalog/_partials/product-details'), 'product_variants' => $this->render('catalog/_partials/product-variants'), 'product_discounts' => $productDiscounts, 'product_add_to_cart' => $this->render('catalog/_partials/product-add-to-cart'), 'product_additional_info' => $this->render('catalog/_partials/product-additional-info'), 'product_images_modal' => $this->render('catalog/_partials/product-images-modal'), 'product_flags' => $this->render('catalog/_partials/product-flags'), 'product_url' => $this->context->link->getProductLink( $product['id_product'], null, null, null, $this->context->language->id, null, $product['id_product_attribute'], false, false, true, (version_compare(_PS_VERSION_, '8.0.0', '>=') ? $this->isPreview() : ('1' === Tools::getValue('preview'))) ? ['preview' => '1'] : [] ), 'product_minimal_quantity' => $minimalProductQuantity, 'product_has_combinations' => !empty($this->combinations), 'id_product_attribute' => $product['id_product_attribute'], 'id_customization' => $product['id_customization'], 'product_title' => $this->getTemplateVarPage()['meta']['title'], 'is_quick_view' => $this->isQuickView(), ]; if ($stickyEnabled) { $response['ststickybuybutton'] = [ 'block' => $this->render( 'module:ststickybuybutton/views/templates/hook/block.tpl' ), ]; } if (ob_get_level() > 0) { ob_end_clean(); } header('Content-Type: application/json'); return $this->ajaxRender(json_encode($response)); } }