i12fehea Posted February 14, 2020 Share Posted February 14, 2020 Buenas!! Estoy intentando crear en la plantilla de correo electrónico donde manda la confirmación del pedido un campo nuevo, que es una característica del producto (features). Sé que antes debo meter en este array $product_var_tpl el nuevo campo, lo que no se como acceder en la variable $product. Para el albaran de entrega lo he resuelto muy fácil, pero aquí no consigo meter el campo feature_value_lang. // Construct order detail table for the email $products_list = ''; $virtual_product = true; $product_var_tpl_list = array(); foreach ($order->product_list as $product) { $price = Product::getPriceStatic((int) $product['id_product'], false, ($product['id_product_attribute'] ? (int) $product['id_product_attribute'] : null), 6, null, false, true, $product['cart_quantity'], false, (int) $order->id_customer, (int) $order->id_cart, (int) $order->{Configuration::get('PS_TAX_ADDRESS_TYPE')}, $specific_price, true, true, null, true, $product['id_customization']); $price_wt = Product::getPriceStatic((int) $product['id_product'], true, ($product['id_product_attribute'] ? (int) $product['id_product_attribute'] : null), 2, null, false, true, $product['cart_quantity'], false, (int) $order->id_customer, (int) $order->id_cart, (int) $order->{Configuration::get('PS_TAX_ADDRESS_TYPE')}, $specific_price, true, true, null, true, $product['id_customization']); $product_price = Product::getTaxCalculationMethod() == PS_TAX_EXC ? Tools::ps_round($price, 2) : $price_wt; $product_var_tpl = array( 'id_product' => $product['id_product'], 'reference' => $product['reference'], 'name' => $product['name'] . (isset($product['attributes']) ? ' - ' . $product['attributes'] : ''), 'price' => Tools::displayPrice($product_price * $product['quantity'], $this->context->currency, false), 'quantity' => $product['quantity'], 'customization' => array(), ); Link to comment Share on other sites More sharing options...
ventura Posted February 15, 2020 Share Posted February 15, 2020 De primeras necesitaras instanciar a las features del producto algo asi por ejemplo $features = Product::getFeaturesStatic((int)$product['id_product']); Luego ya si se trata de una feature en concreto lo podrás establecer con condicionales, por id o nombre 1 Link to comment Share on other sites More sharing options...
i12fehea Posted February 18, 2020 Author Share Posted February 18, 2020 Gracias por ayudarme, si ese valor por ejemplo esta dentro de la tabla ps_feature_value_lang, y quiero accede al contenido del value ¿cómo lo puedo hacer? Sé que tendría que acceder primero a la tabla ps_feature_product, donde de los tres campos id_feature=6, id_product tambien lo se, pero como obtengo id_feature_value, para luego dentro de ps_feature_value_lang ponerlo en el array $product_var_tpl ? Sé como lo haría con SQL y PHP pero no con las instancias ¿algún ejemplo o ayuda? gracias. Link to comment Share on other sites More sharing options...
ventura Posted February 18, 2020 Share Posted February 18, 2020 Dentro del foreach ($order->product_list as $product) { Añades $features = Product::getFeaturesStatic((int)$product['id_product']); $featureToShow = false; // false by default $feature_selected = 6; // select the id_feature_value if (is_array($features) && count($features)) { foreach ($features as $feature) { $objFeatureValue = new FeatureValue((int)$feature['id_feature_value'],$this->context->language->id); if ($feature['id_feature_value'] == $feature_selected) { $featureToShow = $objFeatureValue->value ; } } } Luego para acceder a la variable desde la plantilla de los mails, la añades en el array junto con las otras variables, sin olvidar la coma al final $product_var_tpl = array( 'featureToShow' => $featureToShow, 1 Link to comment Share on other sites More sharing options...
i12fehea Posted February 19, 2020 Author Share Posted February 19, 2020 Hola, me confundí de fichero PHP, porque lo quiero en el mail de los correos que llegan al administrador, es decir del módulo ps_emailalerts.php. Pues ahí he puesto según tus indicaciones lo siguiente (código de abajo), sin colocar el 6, pues lo que quiero el valor de la característica que tiene ese producto (cada producto solo tiene una). MUCHAS MUCHAS GRACIAS POR TU AYUDA!!!! $url = $context->link->getProductLink($product['product_id']); $features = Product::getFeaturesStatic((int)$product['id_product']); if (is_array($features) && count($features)) { foreach ($features as $feature) { $objFeatureValue = new FeatureValue((int)$feature['id_feature_value'],$this->context->language->id); $featureToShow = $objFeatureValue->value ; } } $items_table .= '<tr style="background-color:'.($key % 2 ? '#DDE2E6' : '#EBECEE').';"> <td style="padding:0.6em 0.4em;">'.$product['product_reference'].'</td> <td style="padding:0.6em 0.4em;"> <strong><a href="'.$url.'">'.$product['product_name'].'</a>' .'<br>Modelo: '.$featureToShow .(isset($product['attributes_small']) ? ' '.$product['attributes_small'] : '') .(!empty($customization_text) ? '<br />'.$customization_text : '') .'</strong> </td> <td style="padding:0.6em 0.4em; text-align:right;">'.Tools::displayPrice($unit_price, $currency, false).'</td> <td style="padding:0.6em 0.4em; text-align:center;">'.(int) $product['product_quantity'].'</td> <td style="padding:0.6em 0.4em; text-align:right;">' .Tools::displayPrice(($unit_price * $product['product_quantity']), $currency, false) .'</td> </tr>'; Link to comment Share on other sites More sharing options...
ventura Posted February 19, 2020 Share Posted February 19, 2020 Me alegro. Un saludo 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