pShark Posted September 5, 2019 Share Posted September 5, 2019 Hola, Necesito mostrar en la ficha de producto junto a la referencia, el valor asignado a la "Ubicación de stock" de la combinación que se seleccione. ¿Alguien sabe cual es la variable para mostrar esa información? He estado buscando, pero no he sido capaz de encontrarla. Al ser la de stock {$product.quantity}, he probado con {$product.location}, al ser "location" el nombre en la base de datos, pero no ha colado. Gracias y un saludo. Link to comment Share on other sites More sharing options...
pShark Posted September 5, 2019 Author Share Posted September 5, 2019 Investigando bastante más, he encontrado una función que contiene el valor de la ubicación del stock que necesito. La función esta en el archivo: /classes/Product.php (linea 2306), y es la siguiente: public function getAttributesResume($id_lang, $attribute_value_separator = ' - ', $attribute_separator = ', ') { if (!Combination::isFeatureActive()) { return array(); } $combinations = Db::getInstance()->executeS('SELECT pa.*, product_attribute_shop.* FROM `' . _DB_PREFIX_ . 'product_attribute` pa ' . Shop::addSqlAssociation('product_attribute', 'pa') . ' WHERE pa.`id_product` = ' . (int) $this->id . ' GROUP BY pa.`id_product_attribute`'); if (!$combinations) { return false; } $product_attributes = array(); foreach ($combinations as $combination) { $product_attributes[] = (int) $combination['id_product_attribute']; } $lang = Db::getInstance()->executeS('SELECT pac.id_product_attribute, GROUP_CONCAT(agl.`name`, \'' . pSQL($attribute_value_separator) . '\',al.`name` ORDER BY agl.`id_attribute_group` SEPARATOR \'' . pSQL($attribute_separator) . '\') as attribute_designation FROM `' . _DB_PREFIX_ . 'product_attribute_combination` pac LEFT JOIN `' . _DB_PREFIX_ . 'attribute` a ON a.`id_attribute` = pac.`id_attribute` LEFT JOIN `' . _DB_PREFIX_ . 'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group` LEFT JOIN `' . _DB_PREFIX_ . 'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = ' . (int) $id_lang . ') LEFT JOIN `' . _DB_PREFIX_ . 'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = ' . (int) $id_lang . ') WHERE pac.id_product_attribute IN (' . implode(',', $product_attributes) . ') GROUP BY pac.id_product_attribute'); foreach ($lang as $k => $row) { $combinations[$k]['attribute_designation'] = $row['attribute_designation']; } //Get quantity of each variations foreach ($combinations as $key => $row) { $cache_key = $row['id_product'] . '_' . $row['id_product_attribute'] . '_quantity'; if (!Cache::isStored($cache_key)) { $result = StockAvailable::getQuantityAvailableByProduct($row['id_product'], $row['id_product_attribute']); Cache::store( $cache_key, $result ); $combinations[$key]['quantity'] = $result; } else { $combinations[$key]['quantity'] = Cache::retrieve($cache_key); } } return $combinations; } Ahora lo que necesitaría es, dentro del tema en el archivo... /templates/catalog/_partials/product-prices.tpl, llamar a esa función getAttributesResume y mostrar el valor de "location", que es uno de los valores que devuelve esa función. No lo he indicado antes, pero la versión de Prestashop que utilizo es la 1.7.5.0. ¿Alguien me podría decir como hacer esto? Gracias. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now