Jump to content

nash

Пользователи
  • Content Count

    320
  • Joined

  • Last visited

Community Reputation

3 Обычный

1 Follower

About nash

  • Rank
    Продвинутый пользователь

Информация

  • Пол
    Мужчина
  • Город:
    Москва

Support

  • Works Day
    Пн, Вт, Ср, Чт, Пт
  • Holidays
    Сб, Вс
  • Status
    Работаю

Recent Profile Visitors

4,514 profile views
  1. Добрый день! При оформлении заказа создаю EXCEL файл с сохранением в папке Upload через PHPExcel. Файл создается успешно, но при этом не приходит уведомление на почту администратору с вложением. Ошибок в логах нет никаких // Admin Alert Mail if (in_array('order', (array)$this->config->get('config_mail_alert'))) { require_once(DIR_SYSTEM . '/PHPExcel/Classes/PHPExcel.php'); require_once(DIR_SYSTEM . '/PHPExcel/Classes/PHPExcel/Writer/Excel2007.php'); $phpexcel = new PHPExcel(); $phpexcel->setActiveSheetIndex(0); $page = $phpexcel->getActiveSheet(); $page->setTitle('Заказ №'. $order_id); $page->getColumnDimensionByColumn("1")->setAutoSize(true); $page->getColumnDimensionByColumn("2")->setAutoSize(true); $page->getColumnDimensionByColumn("3")->setAutoSize(true); $page->getColumnDimensionByColumn("4")->setAutoSize(true); $page->getColumnDimensionByColumn("5")->setAutoSize(true); $page->getColumnDimensionByColumn("6")->setAutoSize(true); $page->getColumnDimensionByColumn("7")->setAutoSize(true); $page->getColumnDimensionByColumn("8")->setAutoSize(true); $page->getColumnDimensionByColumn("9")->setAutoSize(true); $page->getStyle("A1")->getFont()->setBold(true); $page->getStyle("B1")->getFont()->setBold(true); $page->getStyle("C1")->getFont()->setBold(true); $page->getStyle("D1")->getFont()->setBold(true); $page->getStyle("E1")->getFont()->setBold(true); $page->getStyle("F1")->getFont()->setBold(true); $page->getStyle("G1")->getFont()->setBold(true); $page->getStyle("H1")->getFont()->setBold(true); $page->getStyle("I1")->getFont()->setBold(true); $page->setCellValue("A1", "Товар"); $page->setCellValue("B1", "Высота мдф"); $page->setCellValue("C1", "Ширина мдф"); $page->setCellValue("D1", "Толщина мдф"); $page->setCellValue("E1", "Цвет пленки"); $page->setCellValue("F1", "Артикул пленки"); $page->setCellValue("G1", "Декор"); $page->setCellValue("H1", "Патина"); $page->setCellValue("I1", "Количество"); $subject = sprintf($language->get('text_new_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'), $order_id); // HTML Mail $data['text_greeting'] = $language->get('text_new_received'); if ($comment) { if ($order_info['comment']) { $data['comment'] = nl2br($comment) . '<br/><br/>' . $order_info['comment']; } else { $data['comment'] = nl2br($comment); } } else { if ($order_info['comment']) { $data['comment'] = $order_info['comment']; } else { $data['comment'] = ''; } } $data['text_download'] = ''; $data['text_footer'] = ''; $data['text_link'] = ''; $data['link'] = $order_info['store_url'] . 'admin/index.php?route=sale/order/info&order_id=' . $order_id; //$data['link'] = ''; $data['download'] = ''; // Text $text = $language->get('text_new_received') . "\n\n"; $text .= $language->get('text_new_order_id') . ' ' . $order_id . "\n"; $text .= $language->get('text_new_date_added') . ' ' . date($language->get('date_format_short'), strtotime($order_info['date_added'])) . "\n"; $text .= $language->get('text_new_order_status') . ' ' . $order_status . "\n\n"; $text .= $language->get('text_new_products') . "\n"; $i=2;///////////// foreach ($order_product_query->rows as $product) { $text .= $product['quantity'] . 'x ' . $product['name'] . ' (' . $product['model'] . ') ' . html_entity_decode($this->currency->format($product['total'] + ($this->config->get('config_tax') ? ($product['tax'] * $product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8') . "\n"; $order_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . $product['order_product_id'] . "'"); foreach ($order_option_query->rows as $option) { if ($option['type'] != 'file') { $value = $option['value']; } else { $value = utf8_substr($option['value'], 0, utf8_strrpos($option['value'], '.')); } $text .= chr(9) . '-' . $option['name'] . ' ' . (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value) . "\n"; } $page->setCellValue("A".$i, $product['name']); $page->setCellValue("B".$i, '0'); $page->setCellValue("C".$i, '0'); $page->setCellValue("D".$i, '0'); $page->setCellValue("E".$i, '0'); $page->setCellValue("F".$i, '0'); $page->setCellValue("G".$i, '0'); $page->setCellValue("H".$i, '0'); $page->setCellValue("I".$i, $product['quantity']); $i++; } header("Expires: Mon, 1 Apr 1974 05:00:00 GMT"); header("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); header("Content-Disposition: attachment; filename=" . "file.xlsx"); $objWriter = new PHPExcel_Writer_Excel2007($phpexcel); $objWriter->save(DIR_UPLOAD.'/file.xlsx'); exit(); foreach ($order_voucher_query->rows as $voucher) { $text .= '1x ' . $voucher['description'] . ' ' . $this->currency->format($voucher['amount'], $order_info['currency_code'], $order_info['currency_value']); } $text .= "\n"; $text .= $language->get('text_new_order_total') . "\n"; foreach ($order_total_query->rows as $total) { $text .= $total['title'] . ': ' . html_entity_decode($this->currency->format($total['value'], $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8') . "\n"; } $text .= "\n"; if ($order_info['comment']) { $text .= $language->get('text_new_comment') . "\n\n"; $text .= $order_info['comment'] . "\n\n"; } $mail = new Mail(); $mail->protocol = $this->config->get('config_mail_protocol'); $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($subject, ENT_QUOTES, 'UTF-8')); $mail->setHtml($this->load->view('mail/order', $data)); $mail->setText($text); $mail->AddAttachment(DIR_UPLOAD.'/file.xlsx', "Заказ.xls"); $mail->send(); // Send to additional alert emails $emails = explode(',', $this->config->get('config_alert_email')); foreach ($emails as $email) { if ($email && preg_match($this->config->get('config_mail_regexp'), $email)) { $mail->setTo($email); $mail->send(); } } } В чем может быть проблема?
  2. $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')); $image_coll = 'image/'.$result['image']; } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')); $image_coll = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')); } $children_data = array(); $children = $this->model_catalog_category->getCategories($result['category_id']); foreach ($children as $child) { $filter_data = array( 'filter_category_id' => $child['category_id'], 'filter_sub_category' => true ); $children_data[] = array( 'name' => $child['name'], 'href' => $this->url->link('product/category', 'path=' . $result['category_id'] . '_' . $child['category_id']) ); } $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'thumb' => $image, 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url) ); }
  3. Добрый день! Мне надо вывести все категории третьего уровня на одной странице категории вот в таком виде:
  4. сделал проверку... а как вывести "Ничего не найдено"?
  5. Добрый день! Для опции type=TEXT сделал autocomplete, при клике по полю - отображает пустые значения. В товаре сделал отдельное поле "patina", по которому и происходит поиск. Если ввожу нужное значение, то подбор работает нормально: Как сделать так, чтобы выводились значения товаров, где заполнено только данное поле (patina)? category.tpl <?php if ($option['option_id'] == '18') { ?> <script type="text/javascript"> <!-- $('input[name=\'option[<?php echo $option["product_option_id"]; ?>]\']').autocomplete({ 'source': function(request, response) { $.ajax({ url: 'index.php?route=product/product/autocomplete_patina&filter_patina=' + encodeURIComponent(request), dataType: 'json', success: function(json) { response($.map(json, function(item) { return { label: item['name'], value: item['product_id'] } })); } }); }, 'select': function(item) { $('input[name=\'option[<?php echo $option["product_option_id"]; ?>]\']').val(item['label']); } }); //--> </script> <?php } ?> /*controller product.php */ public function autocomplete_patina() { $json = array(); if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_patina'])) { $this->load->model('catalog/product'); if (isset($this->request->get['filter_patina'])) { $filter_patina = $this->request->get['filter_patina']; } else { $filter_patina = ''; } if (isset($this->request->get['limit'])) { $limit = $this->request->get['limit']; } else { $limit = 10; } $filter_data = array( 'filter_patina' => $filter_patina, 'start' => 0, 'limit' => $limit ); $results = $this->model_catalog_product->getProducts($filter_data); foreach ($results as $result) { $json[] = array( 'product_id' => $result['product_id'], 'name' => strip_tags(html_entity_decode($result['patina'], ENT_QUOTES, 'UTF-8')), 'price' => $result['price'] ); } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } в модель product.php, в getProducts добавил следующее if (!empty($data['filter_model'])) { $sql .= " AND p.model LIKE '%" . $this->db->escape($data['filter_model']) . "%'"; } if (!empty($data['filter_patina'])) { $sql .= " AND p.patina LIKE '%" . $this->db->escape($data['filter_patina']) . "%'"; }
  6. подскажите, пожалуйста, в какой версии модуля был вот такой вывод категорий? или как его можно включить?
  7. Добрый день! Ищу модуль, который будет отображать на странице товара другие соседние категории, помимо той, в которой находится товар.
  8. непонятен смысл тогда наборов полей у доставок? Зачем мне заполненные допполя из другого способа доставки?
  9. У доставки, способа - "Транспортная компания", сделан набор полей: При выборе другого способа доставки (в нашем случае "По Златоусту") и оформлении заказа в админке в кастомных полях отображается, что выбран "Луч" 1. как мне можно отключить/убрать автовыбор транспортной компании, если не выбран данный способ? Такая же ситуация с самовывозом (автоматически проставляет точки выдачи). 2. И, следовательно из предыдущего вопроса, как мне грамотно вывести и в админке и в письме эти поля? чтобы, если выбрана ТК, то рядом было написано какая компания и т.д.
  10. а как сделать, чтобы незаполненная опция (не обязательная для заполнения) тоже записывалась в базу?
×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.