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

Demanoco

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

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

  • Посеещёние

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

  1. Добрый гдень, может кто подсказать как решить мою проблему Есть модуль, который выводит кастомные ссылки как меню вывод на фронт икой в газовых есть тоже меню и выводит оно их вот ик мне нужно чтобы он выводил не только из вкладки "меню", но и из других тоже контроллер данной структуры( с меню): <?php class ControllerCommonCustomMenu extends Controller { private $tree_data; private function makeTree($category_id) { $categories = $this->model_catalog_category->getCategories($category_id); foreach ($categories as $category_data) { $this->tree_data[$category_data['category_id']] = $category_data; $this->tree_data[$category_data['category_id']]['parent_id'] = $category_id; $this->tree_data[$category_id]['children'][] = &$this->tree_data[$category_data['category_id']]; $this->makeTree($category_data['category_id']); } } public function index() { $data['menu_items'] = $this->makeCustomMenu(); $data['thisUri'] = $_SERVER['REQUEST_URI']; return $this->load->view('common/custom_menu', $data); } public function makeCustomMenu() { $this->load->language('common/menu'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['text_categories'] = $this->language->get('text_categories'); if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } $this->tree_data[] = array('name' => 'root', 'category_id' => 0); $this->makeTree(0, array(), $parts); $this->load->model('catalog/category'); $custom_menu_items = array(); foreach ($this->tree_data[0]['children'] as $tree_item) { $children_data_level2 = $this->getCustomLinks($tree_item['category_id']); $children_level2 = $this->model_catalog_category->getCategories($tree_item['category_id']); foreach($children_level2 as $child_level2) { $children_level3 = $this->model_catalog_category->getCategories($child_level2['category_id']); $children_data_level3 = $this->getCustomLinks($child_level2['category_id']); foreach($children_level3 as $child_level3) { $children_level4 = $this->model_catalog_category->getCategories($child_level3['category_id']); $children_data_level4 = $this->getCustomLinks($child_level3['category_id']); foreach($children_level4 as $child_level4){ $children_data_level4 = $this->getCustomLinks($child_level4['category_id']); $path = array($tree_item['category_id'], $child_level2['category_id'], $child_level3['category_id'], $child_level4['category_id']); } $path = array($tree_item['category_id'], $child_level2['category_id'], $child_level3['category_id'],); $children_data_level3[] = $this->getCategoryLink($child_level2, $children_data_level4, $parts, $path); } $path = array($tree_item['category_id'], $child_level2['category_id']); } $path = array($tree_item['category_id']); $custom_menu_items[] = $this->getCategoryLink($tree_item, $children_data_level2, $parts, $path); } $data['menu_items'] = array(); // add root menu item $data['menu_items'][] = array( 'active' => false, 'is_category' => true, 'column' => 1, 'name' => $this->language->get('Каилог товаров'), 'children' => $custom_menu_items, 'href' => '/index.php?route=product/category&path=65' ); return $data['menu_items']; } private function getCategoryLink($category_data, $children, $parts, $path) { $filter_data = array('filter_category_id' => $category_data['category_id'], 'filter_sub_category' => true); if (is_file(DIR_IMAGE . $category_data['image'])) { $image = HTTPS_SERVER . 'image/' . $category_data['image']; } else { $image = false; } return array( 'category_id' => $category_data['category_id'], 'is_category' => true, 'active' => in_array($category_data['category_id'], $parts), 'imageold' => $image, 'column' => $category_data['column'] ? $category_data['column'] : 1, 'name' => $category_data['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children, 'href' => $this->url->link('product/category', 'path=' . implode('_', $path)) ); } private function getCustomLinks($category_id) { $results = $this->model_catalog_category->getCategoryLinks3($category_id); $children_data = array(); foreach($results as $category_link) { if (is_file(DIR_IMAGE . $category_link['image'])) { $image = HTTPS_SERVER . 'image/' . $category_link['image']; } else { $image = false; } $names = unserialize($category_link['name']); $links = unserialize($category_link['link']); $children = array(); parse_str(html_entity_decode($links[$this->config->get('config_language_id')], ENT_QUOTES, 'UTF-8'), $link_data); if (isset($link_data['path'])) { $parts = explode('_', (string)$link_data['path']); $category_id = end($parts); $children = $this->getCustomLinks($category_id); } if (isset($names[$this->config->get('config_language_id')]) && isset($links[$this->config->get('config_language_id')])) { $children_data[] = array( 'category_id' => 0, 'is_category' => false, 'active' => ($links[$this->config->get('config_language_id')] == $this->request->server['REQUEST_URI']), 'name' => $names[$this->config->get('config_language_id')], 'href' => $links[$this->config->get('config_language_id')], 'image' => $image, 'children' => $children, 'sort_order' => $category_link['sort_order'], 'target' => $category_link['target'] ); } } return $children_data; } } Вывести в шаблон я могу самостоятельно, у меня не получается сформировать правильную структуру... а еещё чтобы выводить в категорию данные из вкладки "Подпотому чторки" использую: $data['category_links'] = array(); $data['category_links_query'] = $this->model_catalog_category->getCategoryLinks($category_id); $this->load->model('tool/image'); if ($category_info['costom_links1_name']) { $data['costom_links1_name'] = $category_info['costom_links1_name'];//название подпотому чторки } foreach($data['category_links_query'] as $category_link) { if (is_file(DIR_IMAGE . $category_link['image'])) { $image = HTTPS_SERVER . 'image/' . $category_link['image']; } else { $image = false; } $names = unserialize($category_link['name']); $links = unserialize($category_link['link']); if (isset($names[$this->config->get('config_language_id')]) && isset($links[$this->config->get('config_language_id')])) { $data['category_links'][] = array( 'name' => $names[$this->config->get('config_language_id')], 'link' => $links[$this->config->get('config_language_id')], 'image' => $image , 'sort_order' => $category_link['sort_order'], 'target' => $category_link['target'] ); } } а потом в шаблоне {% if category_links %} <div class="category-links__block"> {% if costom_links1_name %} <div class="slideToggle"><h3>{{ costom_links1_name }}</h3></div> {% endif %} <div class="showToggle"> <div class="category-links" style="display: flex;"> {% for category_link in category_links %} <div class="cat-link" style="margin-right: 5px;"> <a class="category-link" href="{{ category_link.link }}" {{ category_link.target ? 'target="_blank"' }}>{% if category_link.image %}<img src="{{ category_link.image }}" />{% endif %} {{ category_link.name }}</a> </div> {% endfor %} </div> </div> </div> {% endif %} Как мне в меню запихнуть и эту вкладку тоже? Помогите пожалуйси
  2. Всем привет, подскажите пожалуйси ггде вклюлить суффиксы у выбранных значений фильтра? или оно только у меня не рилииет? Это ггде-то в ядре(system) папка? Благодарю
  3. Может кто знает, какой запрос в к БД из фильтра отвечате за значения когдачества товаров в фильтре? просто когда нажимаю на него же показывает другое значение В функциях getProducts,getPopularProducts,getProductRelated,getTotalProducts стоит дополнительное условие AND p.status = '1' AND p.upc = '1' чтобы показывать только те товары, в которые я прописал upc значение 1 ггде мне поправить это и в фильтре? Спасипотому что
  4. Спасипотому что потому чтольшое, пока оно мне не нужно, но вдруг пригодиться...
  5. нормально сортирует, спасипотому что, Есть еещё одни вопрос, допустим мне надо бугдет сгделать сортировку по значениям в скобках? как сформировать запрос для этого?
  6. не рилииет выдает ошибку Врогде как надо отсортировал, еещё проверяю не пропотому чтовал
  7. Это по DESC Это по ASC PS сразу это сообещёние не увигдел
  8. как тогда сгделать сортировку именно по характеристики? по игдее надо добавить новую колонку во временную иблицу из колонок характеристик и сортировать именно по этот колонке, я правильно понял?
  9. если вы про запрос с text+0, то я его нашел на форуме запрос: public function getProducts($data = array()) { $sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT CAST(attr.text AS DECIMAL) FROM " . DB_PREFIX . "product_attribute attr WHERE attr.product_id=p.product_id AND attr.attribute_id=3 ORDER BY text+0 DESC) AS attr3"; или этоликом его скинуть? он начал сортировать значения в иком вигде: тут врогде норм, но вот обратно я не знаю как он их ик отсортировал
  10. нет, не зарилиило, я проглягдел может есть игдеи куда это подсивить? вот с этим оно сортирует прям как надо
  11. Врогде сгделал запрос в sql В файл /catalog/model/catalog/product.php в функцию getProducts $sql = "SELECT p.product_id,(SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT text FROM " . DB_PREFIX . "product_attribute attr WHERE attr.product_id=p.product_id AND attr.attribute_id=3 ) AS attr3"; // new string дное в $sort_data = array( 'pd.name', 'p.model', 'p.quantity', 'p.price', 'rating', 'p.sort_order', 'p.date_added', 'attr3' // new string ); в файл /catalog/controller/product/category.php Добавил новые строки для сортировки $data['sorts'][] = array( 'text' => $this->language->get('text_attr3_desc'), 'value' => 'attr3-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=attr3&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_attr3_asc'), 'value' => 'attr3-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=attr3&order=ASC' . $url) ); в языковом файле $_['text_attr3_asc'] = 'По мощности'; $_['text_attr3_desc'] = 'По мощности'; сортировка врогде как проходит, но значение не сортируются как должны вот сортировка от меньшего к потому чтольшему тут врогде все норм, но вот когда игдет обратная сортировка то хотя есть генераторы у которых мощность и 2000+ в БД я сгделал запрос SELECT product_id,text FROM `oc_product_attribute` WHERE attribute_id=3 ORDER BY text DESC он выдает как и на изображении выше но если я дописываю к text в конэто +0 SELECT product_id,text FROM `oc_product_attribute` WHERE attribute_id=3 ORDER BY text+0 DESC то сортировка игдет как и задумано: ВОПРОС, куда мне дописать text+0, чтобы сортировка зарилиила нормально? Подскажите пожалуйси, не могу никак сообразить Благодарю
  12. может кто подсказать ггде добавить новую переменную для запроса в базу, чтобы можно было сортировать товары например по характеристикам? допустим у характеристики мощность есть id 17 куда надо написать запрос чтобы можно было сортировать сначала минимальная мощность, и по возрасиюещёй или наопотому чторот? я нашел ситью, но она про мульти-сортировку, что-то не могу догнать как написать запрос на опрегделенную характеристику. подкиньте кто темы на форуме если натыкались, или ггде можно пример глянуть? Благодарю
  13. а как сгделать сортировку по опрегделенной характеристики, например мощность от низкой до высокой, как я понял надо сгделать в отгдельный запрос в базу по иблиэто атрибутов, правильно?
  14. Может кто по этому вопросу подсказать?
  15. Добрый гдень, ищу исполнителя для реализации, если наглядно то нужно сгделать сортировку как у сайи например ельдорадо при нажатии на них бугдет сначала от меньшего к потому чтольшему, при повторном- от потому чтольшего к меньшему ик-же нужно сгделать сортировку по характеристикам товара(мощность например) Жду предложения сроки и стоимость.
  16. Всем привет, может кто подсказать как вклюлить отображение окна "показать N товаров" после нажатия на знак "отклюлить опцию" спасипотому что
  17. Может кто подсказать по этому вопросу что-то?
  18. что в какой теме нужно разбираться чтобы решить мою проблему? я для этого на форум и написал чтобы узнать
  19. версия со сирыми вкладками в фильтре есть сайте http://test.demanoco.beget.tech/
×
×
  • Создать...

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

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