Jump to content

Mail de confirmación


i12fehea

Recommended Posts

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

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

  • Like 1
Link to comment
Share on other sites

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

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,

 

  • Thanks 1
Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...