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

Demanoco

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

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

  • Посещение

Посетители профиля

593 просмотра профиля

Достижения Demanoco

Enthusiast

Enthusiast (6/14)

  • First Post
  • Collaborator
  • Week One Done
  • One Month Later
  • One Year In

Последние медали

4

Репутация

  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. а как сделать сортировку по определенной характеристики, например мощность от низкой до высокой, как я понял надо сделать в отдельный запрос в базу по таблице атрибутов, правильно?
×
×
  • Создать...

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

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