tirk Posted August 16, 2022 at 04:41 PM Share Posted August 16, 2022 at 04:41 PM Подскажите, как реализовать вывод определенных атрибутов по примеру вывода опции в корзине. OcStore 3.0.3.7 Шаблон unishop2. Готов оплатить труд, желательно модификатором сделать. 0 Quote Link to comment Share on other sites More sharing options...
DEVAGENCY Posted August 16, 2022 at 07:11 PM Share Posted August 16, 2022 at 07:11 PM Из массива выбираются по ID, а где вам нужно выводить? 0 Quote Дизайн, программирование, обновление и тех. поддержка Opencart, ocStore Телеграм — @devagency Link to comment Share on other sites More sharing options...
Solution mpn2005 Posted August 16, 2022 at 08:00 PM Solution Share Posted August 16, 2022 at 08:00 PM Можно сделать такой правкой в 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) 4 Quote Link to comment Share on other sites More sharing options...
tirk Posted August 17, 2022 at 02:56 AM Author Share Posted August 17, 2022 at 02:56 AM 7 часов назад, DEVAGENCY сказал: Из массива выбираются по ID, а где вам нужно выводить? тут 0 Quote Link to comment Share on other sites More sharing options...
tirk Posted August 17, 2022 at 03:08 AM Author Share Posted August 17, 2022 at 03:08 AM (edited) 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 August 17, 2022 at 12:26 PM by tirk 0 Quote Link to comment Share on other sites More sharing options...
mpn2005 Posted August 17, 2022 at 10:24 AM Share Posted August 17, 2022 at 10:24 AM 7 часов назад, tirk сказал: Спасибо, тут я сделал. А Как вывести во фронте в корзине теперь? Я так понимаю нужно в этом файле uni_cart.twig добавить что то, и в контроллере. Во вложении сменил расширение, twig не загружается тут. Если в выводимом месте выводит и опции, то они там и должны появиться после внесённой правки. 0 Quote Link to comment Share on other sites More sharing options...
tirk Posted August 17, 2022 at 12:14 PM Author Share Posted August 17, 2022 at 12:14 PM 1 час назад, mpn2005 сказал: Если в выводимом месте выводит и опции, то они там и должны появиться после внесённой правки. Спасибо, получилось, ID не верный указывал просто. 0 Quote Link to comment Share on other sites More sharing options...
Fortoo Posted September 8, 2022 at 06:14 PM Share Posted September 8, 2022 at 06:14 PM В 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']), 0 Quote Link to comment Share on other sites More sharing options...
mpn2005 Posted September 8, 2022 at 09:59 PM Share Posted September 8, 2022 at 09:59 PM 3 часа назад, Fortoo сказал: А разве не проще? в /catalog/controller/checkout/cart.php Нет. Не проще. 1) Нарушает общую архитектуру 2) Метод getProducts - не подходит для выборки товаров из корзины 3) Очень много лишних ненужных данных 4) Тянутся все атрибуты, а если их у каждого товара 50? По всем факторам - проще одним запросом получить только нужные данные, чем лепить неуместную модель с очень большой избыточностью. 1 Quote Link to comment Share on other sites More sharing options...
mpn2005 Posted September 8, 2022 at 10:00 PM Share Posted September 8, 2022 at 10:00 PM 3 часа назад, Fortoo сказал: /catalog/controller/checkout/cart.php Если добавлять сюда, то данные не пойдут в письмо заказчику. И не пойдёт в таблицы заказ в админке. Придётся дублировать функционал, ещё в двух местах. 1 Quote Link to comment Share on other sites More sharing options...
greendaytoday Posted May 8, 2024 at 10:50 PM Share Posted May 8, 2024 at 10:50 PM В 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) Спасибо, как раз искал подобное решение, все работает как часы! 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.