Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

AlexMax13

Пользователи
  
  • Публикаций

    506
  • Зарегистрирован

  • Посещение

Все публикации пользователя AlexMax13

  1. хотя там еще ниже есть строка: $pagination->limit = 5; и строка: $data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * 5) + 1 : 0, ((($page - 1) * 5) > ($review_total - 5)) ? $review_total : ((($page - 1) * 5) + 5), $review_total, ceil($review_total / 5));
  2. нашел, файл: /catalog/controller/product/product.php строка: $results = $this->model_catalog_review->getReviewsByProductId($this->request->get['product_id'], ($page - 1) * 5, 5); пятерки меняем на нужное. а лучше вообще добавить параметр в настройки сборки сайта (для удобства).
  3. заметил что на странице товара по умолчанию выводится 5 комментариев, затем идет переключение страниц. как увеличить количество выводимых комментариев на странице?
  4. это нечто. столько времени экономит такая бы казалось мелочь... спасибо)
  5. это да, но не забываем еще кроме контроллера, внести данные в модель продукта: /catalog/model/catalog/product.php и после строки: 'stock_status' => $query->row['stock_status'], добавить: 'stock_status_id' => $query->row['stock_status_id'],
  6. AlexMax13

    pagination

    спасибо, то что надо)) а как можно убрать промежуточные по шагу вперед/назад? https://prnt.sc/GpVIc24ZOY51 по стилю к ним никак не подкопаться(( https://prnt.sc/e8gCuYP7lszr
  7. подскажите где заменить вот эти символы https://prnt.sc/HQyWBePmKN10
  8. спасибо, буду пробовать)
  9. контроллер (как пример, модуль вывода последних добавленных статей) /controller/extension/module/blog_latest.php твиг /catalog/view/theme/default/template/extension/module/blog_latest.twig модель: model/blog/category.php в админ панели значение записывается в main_blog_category_id https://prnt.sc/2o38MtnbMkU4
  10. как вывести название и ссылку на категорию в которую входит статья https://prnt.sc/7m-Nuru-iDB- в стандартном модуле блога от окстор 3.0.2.0, например на странице блога https://prnt.sc/fjPCV0Qc2z7t
  11. подскажите пожалуйста как вывести (например в модуле html) ид модуля. что то на подобии такого: $data['sid'] = $setting['module_id']; не работает. поэтому я добавляю скрытое поле в настройки самого модуля куда и записываю id. но это костыльно... как можно побороть эту проблему раз и навсегда? спасибо.
  12. на удивление с кодом все ок, вся конструкция в норме. проблема оказалась в том что забыл в контроллер добавить это: 'minimum' => $result['minimum'],
  13. вывожу товары определенных категорий на главной (мобильные, пк, ноутбуки и т.д.) потребовалось добавить одну из опций к мини карточкам товаров на главной - все ок, но только тогда когда добавляю больше одного модуля с товарами (и они повторяются в одном и втором блоке) - проблема с добавлением. пишет что добавлено в корзину но по факту нет. как только убираю второй блок с товарами (например оставляю блок телефоны) - все ок. добавил отдельную функцию добавления в корзину add2, в которой прописываю даже id модуля (для уникальности, чтобы добавлялся товар из конкретного модуля). Потому что если этого не делать, выбрать товар из модуля Смартфоны, а он есть и модуле Телефоны, тогда возникает конфликт. В общем хочу чтобы добавляло товар из конкретного блока (модуля). Видимо нужно просто поправить функцию в js, но никак не вкурю что не так сделал... твиг: контроллер: новая функция в common.js
  14. да, вы правы. но я изначально добавил отельную функцию в модель и изменил название функции в контроллере, чтобы не было конфликтов. но вариант от buslikdrev вообще идеален)
  15. спасибо, то что надо. сделал так и без лишних правок: $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { if ($category['top']) { // Level 2 $children_data = array(); $children = $this->model_catalog_category->getCategories($category['category_id']); foreach ($children as $child) { if ($child['top']) { $filter_data = array( 'filter_category_id' => $child['category_id'], 'filter_sub_category' => true ); $children_data[] = array( 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } } // Level 1 $data['categories'][] = array( 'sid' => $category['category_id'], 'name' => $category['name'], 'children' => $children_data, 'column' => $category['column'] ? $category['column'] : 1, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); } }
  16. в стандартном оксторе 3.0.2.0 есть вывод выбранных категорий в шапке, но у меня какой то треш. вне зависимости что я отметил тут https://prnt.sc/mWLQzpr3-3r6 выводит сразу все категории. в бд все ок https://prnt.sc/q6HLrd2leXTf но на сайте выводит все категории игнорируя отмеченный пункт для топа https://prnt.sc/Wcy11Rp61sQ9 выяснил что для сайта всегда топ выводит значение 1 при любом раскладе. контроллер: $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { if ($category['top']) { // Level 2 $children_data = array(); $children = $this->model_catalog_category->getCategories($category['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'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } // Level 1 $data['categories'][] = array( 'sid' => $category['category_id'], 'name' => $category['name'], 'children' => $children_data, 'column' => $category['column'] ? $category['column'] : 1, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); } } твиг: {% if categories %} {% for category in categories %} {% if category.children %} {% if category.sid == 59 %} <a href="{{ category.href }}" class="gl_cat"><span><img src="/image/catalog/icons/katalog.svg"> {{ category.name }}</span></a> {% else %} <a href="{{ category.href }}" class="gl_cat"><span>{{ category.name }}</span></a> {% endif %} {% for children in category.children|batch(category.children|length / category.column|round(1, 'ceil')) %} {% for child in children %} <a href="{{ child.href }}" class="rod_cat"><span>{{ child.name }}</span></a> {% endfor %} {% endfor %} {% else %} <a href="{{ category.href }}" class="gl_cat"><span>{{ category.name }}</span></a> {% endif %} {% endfor %} {% endif %} модель: public function getCategories($parent_id = 0) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)"); return $query->rows; } проблему решил так: контроллер: $categories = $this->model_catalog_category->get_menu_top(0); foreach ($categories as $category) { if ($category['top']) { // Level 2 $children_data = array(); $children = $this->model_catalog_category->get_menu_top($category['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'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } // Level 1 $data['categories'][] = array( 'sid' => $category['category_id'], 'name' => $category['name'], 'children' => $children_data, 'column' => $category['column'] ? $category['column'] : 1, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); } } модель: public function get_menu_top($parent_id = 0) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' AND c.top = '1' ORDER BY c.sort_order, LCASE(cd.name)"); return $query->rows; } но все же интересно, это баг окстора или что?
  17. хороший вариант предложил один из пользователей сайта
  18. в стандартном опенкарте есть модуль - новинки / latest но он выводит последние добавленные товары из всех категорий. а как можно сделать, чтобы выводил только из конкретной категории?
  19. модуль когда то назывался - Мой список товаров. Ладно, а остался ли модуль вывода товаров из конкретной категории на главной? например если я хочу вывести несколько последних товаров из рубрики телефоны на главной
  20. здравствуйте. где то был модуль вывода товаров на главной из определенных категорий. пример: https://prnt.sc/LcBbZAMogwRq подскажите пожалуйста название модуля
  21. нашел проблему. $price меняем на $opt_price замена в 3х местах
  22. здравствуйте. добавил опции на страницу каталога. все в принципе ок. но неверно отображается цена опций. твиг: <div class="button-group but_box"> <input type="hidden" name="product_id" value="{{ product.product_id }}"> <input type="hidden" name="quantity" value="{{ product.minimum }}"> <button type="button" class="add_cart" onclick="cart.add2('{{ product.product_id }}');">{{ button_cart }}</button> <span class="dop_but"> <button type="button" data-toggle="tooltip" title="{{ button_compare }}" onclick="compare.add('{{ product.product_id }}');"><img src="/image/catalog/icons/compare.png"></button> <button type="button" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><img src="/image/catalog/icons/like.png"></button> </span> </div> контроллер: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $opt_price = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']); } else { $opt_price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } common.js 'add2': function(product_id) { $.ajax({ url: 'index.php?route=checkout/cart/add', type: 'post', data: $('#product'+product_id+' input[type=\'text\'], #product'+product_id+' input[type=\'hidden\'], #product'+product_id+' input[type=\'radio\']:checked, #product'+product_id+' input[type=\'checkbox\']:checked, #product'+product_id+' select, #product'+product_id+' textarea'), dataType: 'json', beforeSend: function() { $('#cart > button').button('loading'); }, complete: function() { $('#cart > button').button('reset'); }, success: function(json) { $('.alert-dismissible, .text-danger').remove(); if (json['redirect']) { location = json['redirect']; } if (json['success']) { $('#content').parent().before('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>'); $('.cart_num').html('<div class="flex3">' + json['total'] + '</div>'); $('html, body').animate({ scrollTop: 0 }, 'slow'); $('#cart > ul').load('index.php?route=common/cart/info ul li'); } }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); }, результат: https://prnt.sc/cy4qOvx4j9yP т.е. вместо цены опции выводит цену товара без скидки.
  23. странно, но ошибка ушла. включил лог ошибок на сервере (он пуст), очистил все модификаторы и все что только возможно. тогда ошибка ушла. но что то явно не так. при очистке лога в админ части - была ошибка первый раз, после все ок. боюсь что явно не так, ведь первый раз на окстор наблюдаю подобные приколы.
  24. перед этим отключал стандартный модуль аккаунт https://prnt.sc/UHVz598yLtON но включил и очистил кэш. пробовал отключать сео юрл - без результатов...
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.