

bzserg
Користувачі-
Публікації
112 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Усі публікації користувача bzserg
-
Підкажіть таке питання Опис для категорії стоїть обмеження на 5000 символів. Якщо додати більше буде ось таке повідомлення "Це поле має бути між 1 і 5000 символами!" проблема в тому, що текст в разом з пробеломи 4155 і більше не дає додати. Як це виправити та який код відповідає за перевірку на наявність символів? ось цей код не працює якщо змінити 5000 наприклад на 6000 чи більше все одно додати опис на категорію де більше 5000 символів не виходить Дякую
- 153 відповіді
-
- ocdevwizard
- blog
- (і ще %d)
-
Потрібен модуль Sidebar menu, щоб можно було створити власні пункти меню кастомні лінки та вивести їх в Sidebar через макет підтримка 2 мов та декілька рівнів пунктів меню підкажіть будь ласка такий модуль дякую
-
нещодавно зіткнувся з проблемою, сайт атакував бот і відправляв десятки запитів за хвилину через Модуль замовити дзвінок У налаштуваннях на жаль немає можливості поставити на цю форму капчу. Підкажіть хтось займався проблемою захисту цією формою, якщо так, як ви це зробили Поділіться, будь ласка, інформацією як вирішити проблему. дякую
- 1 166 відповідей
-
- новинка
- octemplates
-
(і ще %d)
Теги:
-
Всім привіт Потрібен модуль який працює з опціями Стандартний функционал якщо я додаю якусь опцію до товару і цина її наприклад 100 грн то при замовлені товара наприклад 20 одиниць, опція буде коштувати 2000 грн, тобто 1 товар 1 опція А мені потрібно зробити так щоб опція коштувала фіксовано в не залежності від того скільки було куплено одиниць товару. Підкажіть кто знає чи є такий модуль, та як це зробити. Дякую
-
Підкажіть чи шаблони тут на форумі які підтримують мови RTL потрібно буде зробити сайт на 2-х мовах, де треба щоб була підтримка мови RTL дякую
-
Лист для замовника так блок Інструкції
topic відповів в bzserg bzserg Opencart 3.x: Загальні питання
Получилось, спасибо. -
Лист для замовника так блок Інструкції
topic відповів в bzserg bzserg Opencart 3.x: Загальні питання
пробую, но не выход, делаю не то что нужно. я добавлял переменные $data['text_order_detail'] = $language->get('text_order_detail'); $data['text_instruction'] = $language->get('text_instruction'); также if ($comment && $notify) { $data['comment'] = nl2br($comment); } else { $data['comment'] = ''; } но ничего не работает думаю что нужно часть из этого кода if ($order_info && !$order_info['order_status_id'] && $order_status_id && in_array('order', (array)$this->config->get('config_mail_alert'))) { $this->load->language('mail/order_alert'); // HTML Mail $data['text_received'] = $this->language->get('text_received'); $data['text_order_id'] = $this->language->get('text_order_id'); $data['text_date_added'] = $this->language->get('text_date_added'); $data['text_order_status'] = $this->language->get('text_order_status'); $data['text_product'] = $this->language->get('text_product'); $data['text_total'] = $this->language->get('text_total'); $data['text_instruction'] = $language->get('text_instruction'); $data['text_comment'] = $this->language->get('text_comment'); $data['order_id'] = $order_info['order_id']; $data['date_added'] = date($this->language->get('date_format_short'), strtotime($order_info['date_added'])); $order_status_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_status WHERE order_status_id = '" . (int)$order_status_id . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($order_status_query->num_rows) { $data['order_status'] = $order_status_query->row['name']; } else { $data['order_status'] = ''; } $this->load->model('tool/upload'); $data['products'] = array(); $order_products = $this->model_checkout_order->getOrderProducts($order_id); foreach ($order_products as $order_product) { $option_data = array(); $order_options = $this->model_checkout_order->getOrderOptions($order_info['order_id'], $order_product['order_product_id']); foreach ($order_options as $order_option) { if ($order_option['type'] != 'file') { $value = $order_option['value']; } else { $upload_info = $this->model_tool_upload->getUploadByCode($order_option['value']); if ($upload_info) { $value = $upload_info['name']; } else { $value = ''; } } $option_data[] = array( 'name' => $order_option['name'], 'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value) ); } $data['products'][] = array( 'name' => $order_product['name'], 'model' => $order_product['model'], 'quantity' => $order_product['quantity'], 'option' => $option_data, 'price' => $this->currency->format($order_product['price'] + ($this->config->get('config_tax') ? $order_product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']), 'total' => html_entity_decode($this->currency->format($order_product['total'] + ($this->config->get('config_tax') ? ($order_product['tax'] * $order_product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8'), 'href' => $this->url->link('product/product', 'product_id=' . $order_product['product_id']) ); } $data['vouchers'] = array(); $order_vouchers = $this->model_checkout_order->getOrderVouchers($order_id); foreach ($order_vouchers as $order_voucher) { $data['vouchers'][] = array( 'description' => $order_voucher['description'], 'amount' => html_entity_decode($this->currency->format($order_voucher['amount'], $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8') ); } $data['totals'] = array(); $order_totals = $this->model_checkout_order->getOrderTotals($order_id); foreach ($order_totals as $order_total) { $data['totals'][] = array( 'title' => $order_total['title'], 'text' => $this->currency->format($order_total['value'], $order_info['currency_code'], $order_info['currency_value']), 'value' => html_entity_decode($this->currency->format($order_total['value'], $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8') ); } $data['comment'] = strip_tags($order_info['comment']); $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($this->config->get('config_email')); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode(sprintf($this->language->get('text_subject'), $this->config->get('config_name'), $order_info['order_id']), ENT_QUOTES, 'UTF-8')); $mail->setHTML($this->load->view('mail/order_add', $data)); $mail->send(); // Send to additional alert emails $emails = explode(',', $this->config->get('config_mail_alert_email')); foreach ($emails as $email) { if ($email && filter_var($email, FILTER_VALIDATE_EMAIL)) { $mail->setTo($email); $mail->send(); } } } продублировать но не весь в блок функции письма для пользователя -
Лист для замовника так блок Інструкції
topic відповів в bzserg bzserg Opencart 3.x: Загальні питання
а по подробнее можно пожалуйста я не силён в рнр -
Лист для замовника так блок Інструкції
topic відповів в bzserg bzserg Opencart 3.x: Загальні питання
я так зрозумів що очі функція листа користувача public function add($order_info, $order_status_id, $comment, $notify) { // Check for any downloadable products $download_status = false; $order_products = $this->model_checkout_order->getOrderProducts($order_info['order_id']); foreach ($order_products as $order_product) { // Check if there are any linked downloads $product_download_query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "product_to_download` WHERE product_id = '" . (int)$order_product['product_id'] . "'"); if ($product_download_query->row['total']) { $download_status = true; } } // Load the language for any mails that might be required to be sent out $language = new Language($order_info['language_code']); $language->load($order_info['language_code']); $language->load('mail/order_add'); // HTML Mail $data['title'] = sprintf($language->get('text_subject'), $order_info['store_name'], $order_info['order_id']); $data['text_greeting'] = sprintf($language->get('text_greeting'), $order_info['store_name']); $data['text_link'] = $language->get('text_link'); $data['text_download'] = $language->get('text_download'); $data['text_order_detail'] = $language->get('text_order_detail'); $data['text_instruction'] = $language->get('text_instruction'); $data['text_order_id'] = $language->get('text_order_id'); $data['text_date_added'] = $language->get('text_date_added'); $data['text_payment_method'] = $language->get('text_payment_method'); $data['text_shipping_method'] = $language->get('text_shipping_method'); $data['text_email'] = $language->get('text_email'); $data['text_telephone'] = $language->get('text_telephone'); $data['text_ip'] = $language->get('text_ip'); $data['text_order_status'] = $language->get('text_order_status'); $data['text_payment_address'] = $language->get('text_payment_address'); $data['text_shipping_address'] = $language->get('text_shipping_address'); $data['text_product'] = $language->get('text_product'); $data['text_model'] = $language->get('text_model'); $data['text_quantity'] = $language->get('text_quantity'); $data['text_price'] = $language->get('text_price'); $data['text_total'] = $language->get('text_total'); $data['text_footer'] = $language->get('text_footer'); $data['logo'] = $order_info['store_url'] . 'image/' . $this->config->get('config_logo'); $data['store_name'] = $order_info['store_name']; $data['store_url'] = $order_info['store_url']; $data['customer_id'] = $order_info['customer_id']; $data['link'] = $order_info['store_url'] . 'index.php?route=account/order/info&order_id=' . $order_info['order_id']; if ($download_status) { $data['download'] = $order_info['store_url'] . 'index.php?route=account/download'; } else { $data['download'] = ''; } $data['order_id'] = $order_info['order_id']; $data['date_added'] = date($language->get('date_format_short'), strtotime($order_info['date_added'])); $data['payment_method'] = $order_info['payment_method']; $data['shipping_method'] = $order_info['shipping_method']; $data['email'] = $order_info['email']; $data['telephone'] = $order_info['telephone']; $data['ip'] = $order_info['ip']; $order_status_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_status WHERE order_status_id = '" . (int)$order_status_id . "' AND language_id = '" . (int)$order_info['language_id'] . "'"); if ($order_status_query->num_rows) { $data['order_status'] = $order_status_query->row['name']; } else { $data['order_status'] = ''; } if ($comment && $notify) { $data['comment'] = nl2br($comment); } else { $data['comment'] = ''; } if ($order_info['payment_address_format']) { $format = $order_info['payment_address_format']; } else { $format = '{firstname} {lastname}' . "\n" . '{company}' . "\n" . '{address_1}' . "\n" . '{address_2}' . "\n" . '{city} {postcode}' . "\n" . '{zone}' . "\n" . '{country}'; } $find = array( '{firstname}', '{lastname}', '{company}', '{address_1}', '{address_2}', '{city}', '{postcode}', '{zone}', '{zone_code}', '{country}' ); $replace = array( 'firstname' => $order_info['payment_firstname'], 'lastname' => $order_info['payment_lastname'], 'company' => $order_info['payment_company'], 'address_1' => $order_info['payment_address_1'], 'address_2' => $order_info['payment_address_2'], 'city' => $order_info['payment_city'], 'postcode' => $order_info['payment_postcode'], 'zone' => $order_info['payment_zone'], 'zone_code' => $order_info['payment_zone_code'], 'country' => $order_info['payment_country'] ); $data['payment_address'] = str_replace(array("\r\n", "\r", "\n"), '<br />', preg_replace(array("/\s\s+/", "/\r\r+/", "/\n\n+/"), '<br />', trim(str_replace($find, $replace, $format)))); if ($order_info['shipping_address_format']) { $format = $order_info['shipping_address_format']; } else { $format = '{firstname} {lastname}' . "\n" . '{company}' . "\n" . '{address_1}' . "\n" . '{address_2}' . "\n" . '{city} {postcode}' . "\n" . '{zone}' . "\n" . '{country}'; } $find = array( '{firstname}', '{lastname}', '{company}', '{address_1}', '{address_2}', '{city}', '{postcode}', '{zone}', '{zone_code}', '{country}' ); $replace = array( 'firstname' => $order_info['shipping_firstname'], 'lastname' => $order_info['shipping_lastname'], 'company' => $order_info['shipping_company'], 'address_1' => $order_info['shipping_address_1'], 'address_2' => $order_info['shipping_address_2'], 'city' => $order_info['shipping_city'], 'postcode' => $order_info['shipping_postcode'], 'zone' => $order_info['shipping_zone'], 'zone_code' => $order_info['shipping_zone_code'], 'country' => $order_info['shipping_country'] ); $data['shipping_address'] = str_replace(array("\r\n", "\r", "\n"), '<br />', preg_replace(array("/\s\s+/", "/\r\r+/", "/\n\n+/"), '<br />', trim(str_replace($find, $replace, $format)))); $this->load->model('tool/upload'); // Products $data['products'] = array(); foreach ($order_products as $order_product) { $option_data = array(); $order_options = $this->model_checkout_order->getOrderOptions($order_info['order_id'], $order_product['order_product_id']); foreach ($order_options as $order_option) { if ($order_option['type'] != 'file') { $value = $order_option['value']; } else { $upload_info = $this->model_tool_upload->getUploadByCode($order_option['value']); if ($upload_info) { $value = $upload_info['name']; } else { $value = ''; } } $option_data[] = array( 'name' => $order_option['name'], 'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value) ); } $data['products'][] = array( 'name' => $order_product['name'], 'model' => $order_product['model'], 'option' => $option_data, 'quantity' => $order_product['quantity'], 'price' => $this->currency->format($order_product['price'] + ($this->config->get('config_tax') ? $order_product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']), 'total' => $this->currency->format($order_product['total'] + ($this->config->get('config_tax') ? ($order_product['tax'] * $order_product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value']), 'href' => $this->url->link('product/product', 'product_id=' . $order_product['product_id']), ); } // Vouchers $data['vouchers'] = array(); $order_vouchers = $this->model_checkout_order->getOrderVouchers($order_info['order_id']); foreach ($order_vouchers as $order_voucher) { $data['vouchers'][] = array( 'description' => $order_voucher['description'], 'amount' => $this->currency->format($order_voucher['amount'], $order_info['currency_code'], $order_info['currency_value']), ); } // Order Totals $data['totals'] = array(); $order_totals = $this->model_checkout_order->getOrderTotals($order_info['order_id']); foreach ($order_totals as $order_total) { $data['totals'][] = array( 'title' => $order_total['title'], 'text' => $this->currency->format($order_total['value'], $order_info['currency_code'], $order_info['currency_value']), ); } $this->load->model('setting/setting'); $from = $this->model_setting_setting->getSettingValue('config_email', $order_info['store_id']); if (!$from) { $from = $this->config->get('config_email'); } $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($order_info['email']); $mail->setFrom($from); $mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode(sprintf($language->get('text_subject'), $order_info['store_name'], $order_info['order_id']), ENT_QUOTES, 'UTF-8')); $mail->setHtml($this->load->view('mail/order_add', $data)); $mail->send(); } але не розумію що підправити щоб в листі користувача були коментарі змінні які за це відповыдають э -
Лист для замовника так блок Інструкції
topic відповів в bzserg bzserg Opencart 3.x: Загальні питання
строка яка відповідає за відображення коментарів в блоці інформація є $data['text_instruction'] = $language->get('text_instruction'); в обох файлах, але не можу знайти частину коду яка виводить цей блок тільки для листа адміна Я так зрозумів треба $data['text_instruction'] = $language->get('text_instruction'); додати в блок листа для користувача -
Доброго всім дня Допоможіть будь ласка розібратися В листі про нове замовлення для админа є блок Інструкції там додається комментарии до замовлення, який залишив клієнт Проблема в тому что в листі для замовника цього блоку немає але від потрібен які треба файли відреагувати чтоб в листі для користувача ця інформація була також Дякую
-
Уже нашел в чем дело. нет письмо админа в html, просто в подомном моде тоже нужно было добавить строку 'href' => $this->url->link('product/product', 'product_id=' . $order_product['product_id'])
-
в файлі \catalog\controller\mail\order.php в масиві $data['products'][] = array( прописав 'href' => $this->url->link('product/product', 'product_id=' . $order_product['product_id']) але лінк є тільки для листа клієнта для листа адміністратора лінк не працює підкажіть будь ласка чого не вистачає
-
У мене лист з інформацією про замовлення для користувачів надходить у html форматі Потрібно зробити щоб назва товару була посиланням і при натисканні на назву товару в листі був перехід на сайт і цей товар в файлі order_add.twig Було {{product.name}} замінив на <a href="{{ product.href }}">{{ product.name }}</a> Але проблема в тому, що посилання на товар ось таке imap://name%40gmail%[email protected]:993/fetch%3EUID%3E/INBOX%3...... Підкажіть будь ласка у якому файлі в контролері потрібно прописати змінну для посилання ?? Дякую
-
-
якщо бути точним то це файл mail/order_edit.twig {{ text_order_id }} {{ order_id }} {{ text_date_added }} {{ date_added }} {{ text_order_status }} {{ order_status }} {% if link %} {{ text_link }} {{ link }} {% endif %} {% if comment %} {{ text_comment }} {{ comment }} {{ text_footer }} {% else %} {{ text_footer }} {% endif %} Відправляється як простий текст, якщо оформити в html то надішле лист все одно у вигляді тексту Підкажіть як зробити так щоб відправка була в html, якщо змінюєш статус замовлення та повідомляєш клієнта, а також як зробити щоб листи були різні якщо змінюєш статус замовлення приклад Угода завершена - один варіант листа Доставлено інший варіант листа Дякую
-
При зміні статуса замовлення приходить на пошту лист. Доставлено, Угода завершена и.т.д Підкажіть будь ласка в якому файлі я можу змінити текст повідомлення. Дякую
-
Підкажіть, будь ласка, як вирішити проблему. Промокоди (Купони) які створюються в розділі маркетинг діють на всі акційні товари. Чи є спосіб не застосовувати купони на товари, на яких вже є знижка або Акція.
-
есть, указываю в content_top блоки и ничего не отображается пробовал left указать вывод блоков и не выводиться
-
Є сторінка route=product/special на ній відображатися товари зі знижками. Потрібно щоб на цій станиці через макети admin/index.php?route=design/layout Виводити потрібні блоки Створив макет Акції та вказав шлях https://monosnap.com/file/DngPivZoU4rfpR0zEXf6CpLM6S8OtB Але які б блоки не вказував нічого не виводитися, в чому може бути помилка ?? Дякую
-
Помогите пожалуйста разобраться Я создал новый макет product_nabor.twig из макета из product.twig в product_nabor.twig добавил нужные мне блоки. добавил его в админке в разделе макет указал пусть к новому макету https://monosnap.com/file/iwXQ7zSSkofLU4MOhYCbVArofgXc4g на нужных мне товарах я указал новый макет. Проблема в том что блоки и код который я добавил не выводиться, не знаю в чем может быть проблема. Если добавить разные положение модулей то всё работает но моего кода на стр товара нет.
-
всем спасибо за внимание, нашёл решение в файле формирования запроса в базу catalog\model\checkout\order.php изменил с json_encode($data['shipping_custom_field']) на json_encode(array('2' => date('d-m-Y', strtotime($data['shipping_custom_field']['2'])))) работает я не силён в php поэтому не в курсе правильное ли решение
-
пробовал менять тут oct_ultrastore/template/partial/ файл d_custom_field.twig но он отвечает за отображение на сайте на сайте и в письме не меняется дата Менял с YYYY-MM-DD на DD-MM-YYYY менял в файлах catalog/view/javascript/jquery/datetimepicker/moment/moment.min.js но всё равно не помогает
-
в каком файле??? дата выводиться как в админке в информации заказа так и в письме, в одном формате. я так понял это в файлах отвечающие за доп. поля пользователей, но где именно это я не нашёл (( да и в базу данных ити данные записываются в таблице order, поле payment_custom_field в формате json {"2":"2023-03-20T12:30"}