Jump to content

Вывод определенных атрибутов в корзине и в письмах (админу и клиенту) на OcStore 3.0.3.7


tirk
 Share

Go to solution Solved by mpn2005,

Recommended Posts

  • Solution

Можно сделать такой правкой в system/library/cart/cart.php

 

Перед строкой:

$product_data[] = array(

 

Добавляем:

$attribute_query = $this->db->query("SELECT pa.attribute_id, pa.text, ad.name FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (pa.attribute_id = ad.attribute_id) WHERE pa.attribute_id IN (5, 6) AND pa.product_id = '" . (int)$product_query->row['product_id'] . "' AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "'");
foreach ($attribute_query->rows as $attribute) {
    $option_data[] = array(
        'product_option_id'       => 0,
        'product_option_value_id' => '',
        'option_id'               => 0,
        'option_value_id'         => '',
        'name'                    => $attribute['name'],
        'value'                   => $attribute['text'],
        'type'                    => 'attribute-' . $attribute['attribute_id'],
        'quantity'                => '',
        'subtract'                => '',
        'price'                   => '',
        'price_prefix'            => '',
        'points'                  => '',
        'points_prefix'           => '',
        'weight'                  => '',
        'weight_prefix'           => ''
    );
}

 

Вот тут перечисляем ID атрибутов для вывода

pa.attribute_id IN (5, 6)

 

Link to comment
Share on other sites

16 часов назад, mpn2005 сказал:

Можно сделать такой правкой в system/library/cart/cart.php

 

Перед строкой:

$product_data[] = array(

 

Добавляем:

$attribute_query = $this->db->query("SELECT pa.attribute_id, pa.text, ad.name FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (pa.attribute_id = ad.attribute_id) WHERE pa.attribute_id IN (5, 6) AND pa.product_id = '" . (int)$product_query->row['product_id'] . "' AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "'");
foreach ($attribute_query->rows as $attribute) {
    $option_data[] = array(
        'product_option_id'       => 0,
        'product_option_value_id' => '',
        'option_id'               => 0,
        'option_value_id'         => '',
        'name'                    => $attribute['name'],
        'value'                   => $attribute['text'],
        'type'                    => 'attribute-' . $attribute['attribute_id'],
        'quantity'                => '',
        'subtract'                => '',
        'price'                   => '',
        'price_prefix'            => '',
        'points'                  => '',
        'points_prefix'           => '',
        'weight'                  => '',
        'weight_prefix'           => ''
    );
}

 

Вот тут перечисляем ID атрибутов для вывода

pa.attribute_id IN (5, 6)

 

Спасибо, тут я сделал. А Как вывести во фронте в корзине теперь? Я так понимаю нужно в этом файле uni_cart.twig добавить что то, и в контроллере. Во вложении сменил расширение, twig не загружается тут.

Мне нужно тут вывести. И в письме о заказе клиенту и админу 

Спойлер

 

 

 

 

Edited by tirk
Link to comment
Share on other sites

7 часов назад, tirk сказал:

Спасибо, тут я сделал. А Как вывести во фронте в корзине теперь? Я так понимаю нужно в этом файле uni_cart.twig добавить что то, и в контроллере. Во вложении сменил расширение, twig не загружается тут.

Если в выводимом месте выводит и опции, то они там и должны появиться после внесённой правки.

Link to comment
Share on other sites

  • 4 weeks later...
В 16.08.2022 в 23:00, mpn2005 сказал:

Можно сделать такой правкой в system/library/cart/cart.php

А разве не проще?
в

/catalog/controller/checkout/cart.php

Подключить модель
$this->load->model('catalog/product');

А в массив
$data['products'][] = array(


добавить
'attribute_groups' => $this->model_catalog_product->getProductAttributes($product['product_id']),

Link to comment
Share on other sites

3 часа назад, Fortoo сказал:

А разве не проще?
в

/catalog/controller/checkout/cart.php

Нет. Не проще.

1) Нарушает общую архитектуру

2) Метод getProducts - не подходит для выборки товаров из корзины

3) Очень много лишних ненужных данных

4) Тянутся все атрибуты, а если их у каждого товара 50?

 

По всем факторам - проще одним запросом получить только нужные данные, чем лепить неуместную модель с очень большой избыточностью.

 

Link to comment
Share on other sites

3 часа назад, Fortoo сказал:

/catalog/controller/checkout/cart.php

Если добавлять сюда, то данные не пойдут в письмо заказчику.

И не пойдёт в таблицы заказ в админке. 

Придётся дублировать функционал, ещё в двух местах.

Link to comment
Share on other sites

  • 1 year later...
В 16.08.2022 в 23:00, mpn2005 сказал:

Можно сделать такой правкой в system/library/cart/cart.php

 

Перед строкой:

$product_data[] = array(

 

Добавляем:

$attribute_query = $this->db->query("SELECT pa.attribute_id, pa.text, ad.name FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (pa.attribute_id = ad.attribute_id) WHERE pa.attribute_id IN (5, 6) AND pa.product_id = '" . (int)$product_query->row['product_id'] . "' AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "'");
foreach ($attribute_query->rows as $attribute) {
    $option_data[] = array(
        'product_option_id'       => 0,
        'product_option_value_id' => '',
        'option_id'               => 0,
        'option_value_id'         => '',
        'name'                    => $attribute['name'],
        'value'                   => $attribute['text'],
        'type'                    => 'attribute-' . $attribute['attribute_id'],
        'quantity'                => '',
        'subtract'                => '',
        'price'                   => '',
        'price_prefix'            => '',
        'points'                  => '',
        'points_prefix'           => '',
        'weight'                  => '',
        'weight_prefix'           => ''
    );
}

 

Вот тут перечисляем ID атрибутов для вывода

pa.attribute_id IN (5, 6)

 

Спасибо, как раз искал подобное решение, все работает как часы!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...