ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 1 минуту назад, Prooksius сказал: да ладно, сколько там позиций в корзине-то.. А вот обращение к бд гораздо затратнее 1. Вы вероятно не работали с проектами где по 50-70 позиций в корзине бывает. А поверьте это создаст проблемы. 2. Обращение к БД в методе getProducts в корзине. Кол-во запросов в нем больше 10 как минимум и еще циклы для обработки. Мой же метод простой и быстрый. Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 5 минут назад, Prooksius сказал: А вот обращение к бд гораздо затратнее А т.е при $this->cart->getProducts(); Там нет обращений к бд совсем? Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 (змінено) 43 минуты назад, ocdev_pro сказал: Там нет обращений к бд совсем? одно, а у вас если в цикле - то будет много, особенно когда 50-70 позиций в корзине. Да еще и при 10 одновременных покупателях - весело будет. серверу Ну а если с опциями - тут конечно в любом случае куча запросов, как ни крути. Змінено 5 лютого 2021 користувачем Prooksius Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 3 часа назад, Prooksius сказал: одно, а у вас если в цикле - то будет много, особенно когда 50-70 позиций в корзине. Да еще и при 10 одновременных покупателях - весело будет. серверу Ну а если с опциями - тут конечно в любом случае куча запросов, как ни крути. Одно? Ну ясно))) Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 26 минут назад, ocdev_pro сказал: Одно? Ну ясно))) да, прошу прощения, залез в код, обновил в памяти, все верно, там тоже проходится по всем товарам корзины. Ну тогда да, ваш метод лучше Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 21 минуту назад, Prooksius сказал: да, прошу прощения, залез в код, обновил в памяти, все верно, там тоже проходится по всем товарам корзины. Ну тогда да, ваш метод лучше Минимум 8 запросов, и если найдены опции, запросит еще опции.. и в итоге при каждом обращении в корзину за методом getProducts выходит N товаров * 8 запросов Если на странице 30 товаров, получаем 240 запросов только от 1 юзера. И только на корзину. А еще есть получение самих товаров, где LEFT JOIN product_description итд делаются в 1 запросе.. Огромном и тяжелом.. + модули итд. для БД много но мелких запросов обработать гораздо проще. На магазине в 100 товаров оно может и не заметно согласен, но если взять магаз от 20000 да еще и с трафиком, то никаких ресурсов не хватит и будут тормоза Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 (змінено) 6 часов назад, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Всех благодарю за внимание и ответы. Если честно не получилось реализовать ни первый ни второй вариант. Опишу свои шаги: 1. В system/library/cart/cart.php добавил в самом конце Ваш метод. public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } 2. В catalog/controller/product/product/php перед $data['products'][] = array( 'product_id' => $result['product_id'], Добавил $this->cart->hasAdded($product_id); 3. Что делать дальше не могу понять, я в php полный 0 - разобраться нет возможности, так как пишу сайт по вечерам (ночам) после работы, хочется уже добить этот момент и на хостинг. Буду благодарен, если опишите подробнее, готов дать больше информации по коду, только скажите, что Вам потребуется. Змінено 5 лютого 2021 користувачем Bdn Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 Если говорить о первом варианте @Prooksius, то я видел похожее решение, но, повторюсь не сработало, в шаблоне постоянно выдаёт false. Пробовал также такой способ: Вроде бы ничего сложного, но видимо чего-то я не догоняю Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 43 минуты назад, Bdn сказал: Вам в метод $this->cart->hasAdded(// сюда передаем id товара который проверяем); если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> P.S Вам надо не пытаться понять Opencart, а учить просто язык программирования PHP, Вы по матчасти просто не знаете ничего 1 Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 В 05.02.2021 в 12:41, ocdev_pro сказал: Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); Спойлер 22 часа назад, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> В категориях работает. А как в карточке товара завести? Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 1 минуту назад, Romti сказал: В категориях работает. А как в карточке товара завести? А вьі тему попробуйте с начала прочесть Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 9 часов назад, Dimasscus сказал: А вьі тему попробуйте с начала прочесть А вы? @Bdn Задал вопрос Спойлер В 05.02.2021 в 03:49, Bdn сказал: Подскажите кто-нибудь (немного не по теме, но всё же), нужно чтобы при нажатии на кнопку купить на странице товара - появлялась кнопка "В КОРЗИНЕ" с ссылкой на корзину (написать на js проблем не составило, но при обновлении страницы, естественно - опять кнопка "купить", тут нужен php, в котором совсем не шарю). Вопрос, может кто-то сказать, как реализовать данную функцию, либо подскажите подходящий модуль, спасибо. ocsotre 3.0.2.0 Затем @Prooksius и вы ответили... Спойлер В 05.02.2021 в 08:19, Prooksius сказал: Я вот так иногда делаю: https://accent.md/ посмотрите, как добавляется в корзину. Сделать можно примерно так В контроллере: $cart_products = $this->cart->getProducts(); $product_id = <текущий ID товара> $cart_added = false; foreach ($cart_products as $cart_product) { if ($product_id == $cart_product['product_id']) { $cart_added = true; break; } } а во view - примерно как вы написали. Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. А @ocdev_pro предложил своё. Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Спойлер Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Спойлер В 05.02.2021 в 20:04, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> Работает в категориях. Как завести его в карточке товара? Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 9 часов назад, Romti сказал: В категориях работает. А как в карточке товара завести? В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд 27 минут назад, Romti сказал: Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. 1 Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 44 минуты назад, Romti сказал: А вы? @Bdn Задал вопрос Показать контент Затем @Prooksius и вы ответили... Показать контент Показать контент А @ocdev_pro предложил своё. Показать контент И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Показать контент Показать контент Показать контент Работает в категориях. Как завести его в карточке товара? Вьі походу с чтением не в ладах? Где именно @ocdev_pro сказал что МОИ решения не очень хорошие, если я в ответе привел предложенное им решение? Вьі под чем то? Если вьі не понимаете разницьі между категорией и продуктом опенкарт- валите все на меня:)) Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 11 минут назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 21 минуту назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Спасибо. Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 25 минут назад, Dimasscus сказал: Вьі походу с чтением не в ладах? Вьі под чем то? Ок, любите "это". Спойлер Да, как тут у вас "под таблетками", а сами не забыли? 23 минуты назад, Dimasscus сказал: Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. Где там решение @ocdev_pro ?? тыкните плиз Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 14 минут назад, Romti сказал: Ок, любите "это". Показать контент Да, как у вас тут "под таблетками", а сами не забыли? Показать контент Где там решение @ocdev_pro ?? тыкните плиз Я все еще жду от вас тьіканья в МОИ неправильньіе решения:)) ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Второму товарищу я предложил использовать решение из єтого модуля Которьій тоже не мое решение :)) кстати оно рабочее, если что. И не "плохое" судя по количеству скачанньіх копий. так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 22 минуты назад, Dimasscus сказал: ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Так причем тут неформал?=) Если я задал вопрос по другому вопросу... 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Я специально в кавычки занес=( 1 час назад, Romti сказал: И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) Цитируйте сообщение плиз. 22 минуты назад, Dimasscus сказал: так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Согласен, не прав. Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 6 часов назад, Romti сказал: вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) а почитать тему, вера не позволяет? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 1 час назад, fanatic сказал: а почитать тему, вера не позволяет? Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 48 минут назад, ocdev_pro сказал: Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Сорян. Вспьілил:)) Бьіл не сдержан. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Схожі публікації Модуль Subscribe_pro - улучшенная подписка на новости [Поддержка] Автор: Sunser, 22 квітня 2020 подписка подписка на новости (і ще %d) Теги: подписка подписка на новости подписка на акции подписка на новости и акции подписка на рассылку опенкарт рассылка уведомления почта слежение email email информер email рассылка email уведомления форма opencart модуль расширение opencart2 opencart3 opencart2x opencart 3x ocstore ocstore2 1 відповідь 1 833 перегляди AlexMax13 19 листопада 2020 [Поддержка] Модуль "Super Custom Html Fields" 1 2 3 Автор: whiteblue, 3 листопада 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 63 відповіді 9 444 перегляди whiteblue 14 березня 2023 Модуль "Super Custom Html Fields" Автор: whiteblue, 28 жовтня 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 0 коментарів 17 187 переглядів whiteblue 28 жовтня 2019 [Поддержка] Кнопка редактирования заказа при просмотре [vQmod] Автор: noakky, 22 жовтня 2013 админка админ-панель (і ще %d) Теги: админка админ-панель кнопка vqmod редактирование заказа 12 відповідей 3 226 переглядів fjeka 28 березня 2014 [Поддержка] Кнопка "Применить" в админке Автор: seregin, 22 вересня 2016 применить button (і ще %d) Теги: применить button кнопка 12 відповідей 3 229 переглядів sspiceman 12 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Как убрать кнопку купить если кол-во = 0 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 5 минут назад, Prooksius сказал: А вот обращение к бд гораздо затратнее А т.е при $this->cart->getProducts(); Там нет обращений к бд совсем? Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 (змінено) 43 минуты назад, ocdev_pro сказал: Там нет обращений к бд совсем? одно, а у вас если в цикле - то будет много, особенно когда 50-70 позиций в корзине. Да еще и при 10 одновременных покупателях - весело будет. серверу Ну а если с опциями - тут конечно в любом случае куча запросов, как ни крути. Змінено 5 лютого 2021 користувачем Prooksius Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 3 часа назад, Prooksius сказал: одно, а у вас если в цикле - то будет много, особенно когда 50-70 позиций в корзине. Да еще и при 10 одновременных покупателях - весело будет. серверу Ну а если с опциями - тут конечно в любом случае куча запросов, как ни крути. Одно? Ну ясно))) Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 26 минут назад, ocdev_pro сказал: Одно? Ну ясно))) да, прошу прощения, залез в код, обновил в памяти, все верно, там тоже проходится по всем товарам корзины. Ну тогда да, ваш метод лучше Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 21 минуту назад, Prooksius сказал: да, прошу прощения, залез в код, обновил в памяти, все верно, там тоже проходится по всем товарам корзины. Ну тогда да, ваш метод лучше Минимум 8 запросов, и если найдены опции, запросит еще опции.. и в итоге при каждом обращении в корзину за методом getProducts выходит N товаров * 8 запросов Если на странице 30 товаров, получаем 240 запросов только от 1 юзера. И только на корзину. А еще есть получение самих товаров, где LEFT JOIN product_description итд делаются в 1 запросе.. Огромном и тяжелом.. + модули итд. для БД много но мелких запросов обработать гораздо проще. На магазине в 100 товаров оно может и не заметно согласен, но если взять магаз от 20000 да еще и с трафиком, то никаких ресурсов не хватит и будут тормоза Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 (змінено) 6 часов назад, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Всех благодарю за внимание и ответы. Если честно не получилось реализовать ни первый ни второй вариант. Опишу свои шаги: 1. В system/library/cart/cart.php добавил в самом конце Ваш метод. public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } 2. В catalog/controller/product/product/php перед $data['products'][] = array( 'product_id' => $result['product_id'], Добавил $this->cart->hasAdded($product_id); 3. Что делать дальше не могу понять, я в php полный 0 - разобраться нет возможности, так как пишу сайт по вечерам (ночам) после работы, хочется уже добить этот момент и на хостинг. Буду благодарен, если опишите подробнее, готов дать больше информации по коду, только скажите, что Вам потребуется. Змінено 5 лютого 2021 користувачем Bdn Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 Если говорить о первом варианте @Prooksius, то я видел похожее решение, но, повторюсь не сработало, в шаблоне постоянно выдаёт false. Пробовал также такой способ: Вроде бы ничего сложного, но видимо чего-то я не догоняю Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 43 минуты назад, Bdn сказал: Вам в метод $this->cart->hasAdded(// сюда передаем id товара который проверяем); если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> P.S Вам надо не пытаться понять Opencart, а учить просто язык программирования PHP, Вы по матчасти просто не знаете ничего 1 Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 В 05.02.2021 в 12:41, ocdev_pro сказал: Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); Спойлер 22 часа назад, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> В категориях работает. А как в карточке товара завести? Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 1 минуту назад, Romti сказал: В категориях работает. А как в карточке товара завести? А вьі тему попробуйте с начала прочесть Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 9 часов назад, Dimasscus сказал: А вьі тему попробуйте с начала прочесть А вы? @Bdn Задал вопрос Спойлер В 05.02.2021 в 03:49, Bdn сказал: Подскажите кто-нибудь (немного не по теме, но всё же), нужно чтобы при нажатии на кнопку купить на странице товара - появлялась кнопка "В КОРЗИНЕ" с ссылкой на корзину (написать на js проблем не составило, но при обновлении страницы, естественно - опять кнопка "купить", тут нужен php, в котором совсем не шарю). Вопрос, может кто-то сказать, как реализовать данную функцию, либо подскажите подходящий модуль, спасибо. ocsotre 3.0.2.0 Затем @Prooksius и вы ответили... Спойлер В 05.02.2021 в 08:19, Prooksius сказал: Я вот так иногда делаю: https://accent.md/ посмотрите, как добавляется в корзину. Сделать можно примерно так В контроллере: $cart_products = $this->cart->getProducts(); $product_id = <текущий ID товара> $cart_added = false; foreach ($cart_products as $cart_product) { if ($product_id == $cart_product['product_id']) { $cart_added = true; break; } } а во view - примерно как вы написали. Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. А @ocdev_pro предложил своё. Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Спойлер Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Спойлер В 05.02.2021 в 20:04, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> Работает в категориях. Как завести его в карточке товара? Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 9 часов назад, Romti сказал: В категориях работает. А как в карточке товара завести? В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд 27 минут назад, Romti сказал: Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. 1 Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 44 минуты назад, Romti сказал: А вы? @Bdn Задал вопрос Показать контент Затем @Prooksius и вы ответили... Показать контент Показать контент А @ocdev_pro предложил своё. Показать контент И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Показать контент Показать контент Показать контент Работает в категориях. Как завести его в карточке товара? Вьі походу с чтением не в ладах? Где именно @ocdev_pro сказал что МОИ решения не очень хорошие, если я в ответе привел предложенное им решение? Вьі под чем то? Если вьі не понимаете разницьі между категорией и продуктом опенкарт- валите все на меня:)) Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 11 минут назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 21 минуту назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Спасибо. Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 25 минут назад, Dimasscus сказал: Вьі походу с чтением не в ладах? Вьі под чем то? Ок, любите "это". Спойлер Да, как тут у вас "под таблетками", а сами не забыли? 23 минуты назад, Dimasscus сказал: Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. Где там решение @ocdev_pro ?? тыкните плиз Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 14 минут назад, Romti сказал: Ок, любите "это". Показать контент Да, как у вас тут "под таблетками", а сами не забыли? Показать контент Где там решение @ocdev_pro ?? тыкните плиз Я все еще жду от вас тьіканья в МОИ неправильньіе решения:)) ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Второму товарищу я предложил использовать решение из єтого модуля Которьій тоже не мое решение :)) кстати оно рабочее, если что. И не "плохое" судя по количеству скачанньіх копий. так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 22 минуты назад, Dimasscus сказал: ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Так причем тут неформал?=) Если я задал вопрос по другому вопросу... 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Я специально в кавычки занес=( 1 час назад, Romti сказал: И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) Цитируйте сообщение плиз. 22 минуты назад, Dimasscus сказал: так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Согласен, не прав. Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 6 часов назад, Romti сказал: вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) а почитать тему, вера не позволяет? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 1 час назад, fanatic сказал: а почитать тему, вера не позволяет? Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 48 минут назад, ocdev_pro сказал: Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Сорян. Вспьілил:)) Бьіл не сдержан. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Схожі публікації Модуль Subscribe_pro - улучшенная подписка на новости [Поддержка] Автор: Sunser, 22 квітня 2020 подписка подписка на новости (і ще %d) Теги: подписка подписка на новости подписка на акции подписка на новости и акции подписка на рассылку опенкарт рассылка уведомления почта слежение email email информер email рассылка email уведомления форма opencart модуль расширение opencart2 opencart3 opencart2x opencart 3x ocstore ocstore2 1 відповідь 1 833 перегляди AlexMax13 19 листопада 2020 [Поддержка] Модуль "Super Custom Html Fields" 1 2 3 Автор: whiteblue, 3 листопада 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 63 відповіді 9 444 перегляди whiteblue 14 березня 2023 Модуль "Super Custom Html Fields" Автор: whiteblue, 28 жовтня 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 0 коментарів 17 187 переглядів whiteblue 28 жовтня 2019 [Поддержка] Кнопка редактирования заказа при просмотре [vQmod] Автор: noakky, 22 жовтня 2013 админка админ-панель (і ще %d) Теги: админка админ-панель кнопка vqmod редактирование заказа 12 відповідей 3 226 переглядів fjeka 28 березня 2014 [Поддержка] Кнопка "Применить" в админке Автор: seregin, 22 вересня 2016 применить button (і ще %d) Теги: применить button кнопка 12 відповідей 3 229 переглядів sspiceman 12 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Как убрать кнопку купить если кол-во = 0 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Prooksius Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 (змінено) 43 минуты назад, ocdev_pro сказал: Там нет обращений к бд совсем? одно, а у вас если в цикле - то будет много, особенно когда 50-70 позиций в корзине. Да еще и при 10 одновременных покупателях - весело будет. серверу Ну а если с опциями - тут конечно в любом случае куча запросов, как ни крути. Змінено 5 лютого 2021 користувачем Prooksius Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 3 часа назад, Prooksius сказал: одно, а у вас если в цикле - то будет много, особенно когда 50-70 позиций в корзине. Да еще и при 10 одновременных покупателях - весело будет. серверу Ну а если с опциями - тут конечно в любом случае куча запросов, как ни крути. Одно? Ну ясно))) Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 26 минут назад, ocdev_pro сказал: Одно? Ну ясно))) да, прошу прощения, залез в код, обновил в памяти, все верно, там тоже проходится по всем товарам корзины. Ну тогда да, ваш метод лучше Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 21 минуту назад, Prooksius сказал: да, прошу прощения, залез в код, обновил в памяти, все верно, там тоже проходится по всем товарам корзины. Ну тогда да, ваш метод лучше Минимум 8 запросов, и если найдены опции, запросит еще опции.. и в итоге при каждом обращении в корзину за методом getProducts выходит N товаров * 8 запросов Если на странице 30 товаров, получаем 240 запросов только от 1 юзера. И только на корзину. А еще есть получение самих товаров, где LEFT JOIN product_description итд делаются в 1 запросе.. Огромном и тяжелом.. + модули итд. для БД много но мелких запросов обработать гораздо проще. На магазине в 100 товаров оно может и не заметно согласен, но если взять магаз от 20000 да еще и с трафиком, то никаких ресурсов не хватит и будут тормоза Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 (змінено) 6 часов назад, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Всех благодарю за внимание и ответы. Если честно не получилось реализовать ни первый ни второй вариант. Опишу свои шаги: 1. В system/library/cart/cart.php добавил в самом конце Ваш метод. public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } 2. В catalog/controller/product/product/php перед $data['products'][] = array( 'product_id' => $result['product_id'], Добавил $this->cart->hasAdded($product_id); 3. Что делать дальше не могу понять, я в php полный 0 - разобраться нет возможности, так как пишу сайт по вечерам (ночам) после работы, хочется уже добить этот момент и на хостинг. Буду благодарен, если опишите подробнее, готов дать больше информации по коду, только скажите, что Вам потребуется. Змінено 5 лютого 2021 користувачем Bdn Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 Если говорить о первом варианте @Prooksius, то я видел похожее решение, но, повторюсь не сработало, в шаблоне постоянно выдаёт false. Пробовал также такой способ: Вроде бы ничего сложного, но видимо чего-то я не догоняю Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 43 минуты назад, Bdn сказал: Вам в метод $this->cart->hasAdded(// сюда передаем id товара который проверяем); если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> P.S Вам надо не пытаться понять Opencart, а учить просто язык программирования PHP, Вы по матчасти просто не знаете ничего 1 Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 В 05.02.2021 в 12:41, ocdev_pro сказал: Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); Спойлер 22 часа назад, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> В категориях работает. А как в карточке товара завести? Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 1 минуту назад, Romti сказал: В категориях работает. А как в карточке товара завести? А вьі тему попробуйте с начала прочесть Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 9 часов назад, Dimasscus сказал: А вьі тему попробуйте с начала прочесть А вы? @Bdn Задал вопрос Спойлер В 05.02.2021 в 03:49, Bdn сказал: Подскажите кто-нибудь (немного не по теме, но всё же), нужно чтобы при нажатии на кнопку купить на странице товара - появлялась кнопка "В КОРЗИНЕ" с ссылкой на корзину (написать на js проблем не составило, но при обновлении страницы, естественно - опять кнопка "купить", тут нужен php, в котором совсем не шарю). Вопрос, может кто-то сказать, как реализовать данную функцию, либо подскажите подходящий модуль, спасибо. ocsotre 3.0.2.0 Затем @Prooksius и вы ответили... Спойлер В 05.02.2021 в 08:19, Prooksius сказал: Я вот так иногда делаю: https://accent.md/ посмотрите, как добавляется в корзину. Сделать можно примерно так В контроллере: $cart_products = $this->cart->getProducts(); $product_id = <текущий ID товара> $cart_added = false; foreach ($cart_products as $cart_product) { if ($product_id == $cart_product['product_id']) { $cart_added = true; break; } } а во view - примерно как вы написали. Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. А @ocdev_pro предложил своё. Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Спойлер Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Спойлер В 05.02.2021 в 20:04, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> Работает в категориях. Как завести его в карточке товара? Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 9 часов назад, Romti сказал: В категориях работает. А как в карточке товара завести? В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд 27 минут назад, Romti сказал: Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. 1 Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 44 минуты назад, Romti сказал: А вы? @Bdn Задал вопрос Показать контент Затем @Prooksius и вы ответили... Показать контент Показать контент А @ocdev_pro предложил своё. Показать контент И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Показать контент Показать контент Показать контент Работает в категориях. Как завести его в карточке товара? Вьі походу с чтением не в ладах? Где именно @ocdev_pro сказал что МОИ решения не очень хорошие, если я в ответе привел предложенное им решение? Вьі под чем то? Если вьі не понимаете разницьі между категорией и продуктом опенкарт- валите все на меня:)) Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 11 минут назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 21 минуту назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Спасибо. Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 25 минут назад, Dimasscus сказал: Вьі походу с чтением не в ладах? Вьі под чем то? Ок, любите "это". Спойлер Да, как тут у вас "под таблетками", а сами не забыли? 23 минуты назад, Dimasscus сказал: Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. Где там решение @ocdev_pro ?? тыкните плиз Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 14 минут назад, Romti сказал: Ок, любите "это". Показать контент Да, как у вас тут "под таблетками", а сами не забыли? Показать контент Где там решение @ocdev_pro ?? тыкните плиз Я все еще жду от вас тьіканья в МОИ неправильньіе решения:)) ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Второму товарищу я предложил использовать решение из єтого модуля Которьій тоже не мое решение :)) кстати оно рабочее, если что. И не "плохое" судя по количеству скачанньіх копий. так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 22 минуты назад, Dimasscus сказал: ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Так причем тут неформал?=) Если я задал вопрос по другому вопросу... 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Я специально в кавычки занес=( 1 час назад, Romti сказал: И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) Цитируйте сообщение плиз. 22 минуты назад, Dimasscus сказал: так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Согласен, не прав. Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 6 часов назад, Romti сказал: вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) а почитать тему, вера не позволяет? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 1 час назад, fanatic сказал: а почитать тему, вера не позволяет? Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 48 минут назад, ocdev_pro сказал: Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Сорян. Вспьілил:)) Бьіл не сдержан. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Схожі публікації Модуль Subscribe_pro - улучшенная подписка на новости [Поддержка] Автор: Sunser, 22 квітня 2020 подписка подписка на новости (і ще %d) Теги: подписка подписка на новости подписка на акции подписка на новости и акции подписка на рассылку опенкарт рассылка уведомления почта слежение email email информер email рассылка email уведомления форма opencart модуль расширение opencart2 opencart3 opencart2x opencart 3x ocstore ocstore2 1 відповідь 1 833 перегляди AlexMax13 19 листопада 2020 [Поддержка] Модуль "Super Custom Html Fields" 1 2 3 Автор: whiteblue, 3 листопада 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 63 відповіді 9 444 перегляди whiteblue 14 березня 2023 Модуль "Super Custom Html Fields" Автор: whiteblue, 28 жовтня 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 0 коментарів 17 187 переглядів whiteblue 28 жовтня 2019 [Поддержка] Кнопка редактирования заказа при просмотре [vQmod] Автор: noakky, 22 жовтня 2013 админка админ-панель (і ще %d) Теги: админка админ-панель кнопка vqmod редактирование заказа 12 відповідей 3 226 переглядів fjeka 28 березня 2014 [Поддержка] Кнопка "Применить" в админке Автор: seregin, 22 вересня 2016 применить button (і ще %d) Теги: применить button кнопка 12 відповідей 3 229 переглядів sspiceman 12 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Как убрать кнопку купить если кол-во = 0 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 3 часа назад, Prooksius сказал: одно, а у вас если в цикле - то будет много, особенно когда 50-70 позиций в корзине. Да еще и при 10 одновременных покупателях - весело будет. серверу Ну а если с опциями - тут конечно в любом случае куча запросов, как ни крути. Одно? Ну ясно))) Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 26 минут назад, ocdev_pro сказал: Одно? Ну ясно))) да, прошу прощения, залез в код, обновил в памяти, все верно, там тоже проходится по всем товарам корзины. Ну тогда да, ваш метод лучше Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 21 минуту назад, Prooksius сказал: да, прошу прощения, залез в код, обновил в памяти, все верно, там тоже проходится по всем товарам корзины. Ну тогда да, ваш метод лучше Минимум 8 запросов, и если найдены опции, запросит еще опции.. и в итоге при каждом обращении в корзину за методом getProducts выходит N товаров * 8 запросов Если на странице 30 товаров, получаем 240 запросов только от 1 юзера. И только на корзину. А еще есть получение самих товаров, где LEFT JOIN product_description итд делаются в 1 запросе.. Огромном и тяжелом.. + модули итд. для БД много но мелких запросов обработать гораздо проще. На магазине в 100 товаров оно может и не заметно согласен, но если взять магаз от 20000 да еще и с трафиком, то никаких ресурсов не хватит и будут тормоза Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 (змінено) 6 часов назад, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Всех благодарю за внимание и ответы. Если честно не получилось реализовать ни первый ни второй вариант. Опишу свои шаги: 1. В system/library/cart/cart.php добавил в самом конце Ваш метод. public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } 2. В catalog/controller/product/product/php перед $data['products'][] = array( 'product_id' => $result['product_id'], Добавил $this->cart->hasAdded($product_id); 3. Что делать дальше не могу понять, я в php полный 0 - разобраться нет возможности, так как пишу сайт по вечерам (ночам) после работы, хочется уже добить этот момент и на хостинг. Буду благодарен, если опишите подробнее, готов дать больше информации по коду, только скажите, что Вам потребуется. Змінено 5 лютого 2021 користувачем Bdn Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 Если говорить о первом варианте @Prooksius, то я видел похожее решение, но, повторюсь не сработало, в шаблоне постоянно выдаёт false. Пробовал также такой способ: Вроде бы ничего сложного, но видимо чего-то я не догоняю Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 43 минуты назад, Bdn сказал: Вам в метод $this->cart->hasAdded(// сюда передаем id товара который проверяем); если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> P.S Вам надо не пытаться понять Opencart, а учить просто язык программирования PHP, Вы по матчасти просто не знаете ничего 1 Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 В 05.02.2021 в 12:41, ocdev_pro сказал: Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); Спойлер 22 часа назад, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> В категориях работает. А как в карточке товара завести? Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 1 минуту назад, Romti сказал: В категориях работает. А как в карточке товара завести? А вьі тему попробуйте с начала прочесть Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 9 часов назад, Dimasscus сказал: А вьі тему попробуйте с начала прочесть А вы? @Bdn Задал вопрос Спойлер В 05.02.2021 в 03:49, Bdn сказал: Подскажите кто-нибудь (немного не по теме, но всё же), нужно чтобы при нажатии на кнопку купить на странице товара - появлялась кнопка "В КОРЗИНЕ" с ссылкой на корзину (написать на js проблем не составило, но при обновлении страницы, естественно - опять кнопка "купить", тут нужен php, в котором совсем не шарю). Вопрос, может кто-то сказать, как реализовать данную функцию, либо подскажите подходящий модуль, спасибо. ocsotre 3.0.2.0 Затем @Prooksius и вы ответили... Спойлер В 05.02.2021 в 08:19, Prooksius сказал: Я вот так иногда делаю: https://accent.md/ посмотрите, как добавляется в корзину. Сделать можно примерно так В контроллере: $cart_products = $this->cart->getProducts(); $product_id = <текущий ID товара> $cart_added = false; foreach ($cart_products as $cart_product) { if ($product_id == $cart_product['product_id']) { $cart_added = true; break; } } а во view - примерно как вы написали. Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. А @ocdev_pro предложил своё. Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Спойлер Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Спойлер В 05.02.2021 в 20:04, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> Работает в категориях. Как завести его в карточке товара? Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 9 часов назад, Romti сказал: В категориях работает. А как в карточке товара завести? В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд 27 минут назад, Romti сказал: Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. 1 Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 44 минуты назад, Romti сказал: А вы? @Bdn Задал вопрос Показать контент Затем @Prooksius и вы ответили... Показать контент Показать контент А @ocdev_pro предложил своё. Показать контент И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Показать контент Показать контент Показать контент Работает в категориях. Как завести его в карточке товара? Вьі походу с чтением не в ладах? Где именно @ocdev_pro сказал что МОИ решения не очень хорошие, если я в ответе привел предложенное им решение? Вьі под чем то? Если вьі не понимаете разницьі между категорией и продуктом опенкарт- валите все на меня:)) Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 11 минут назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 21 минуту назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Спасибо. Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 25 минут назад, Dimasscus сказал: Вьі походу с чтением не в ладах? Вьі под чем то? Ок, любите "это". Спойлер Да, как тут у вас "под таблетками", а сами не забыли? 23 минуты назад, Dimasscus сказал: Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. Где там решение @ocdev_pro ?? тыкните плиз Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 14 минут назад, Romti сказал: Ок, любите "это". Показать контент Да, как у вас тут "под таблетками", а сами не забыли? Показать контент Где там решение @ocdev_pro ?? тыкните плиз Я все еще жду от вас тьіканья в МОИ неправильньіе решения:)) ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Второму товарищу я предложил использовать решение из єтого модуля Которьій тоже не мое решение :)) кстати оно рабочее, если что. И не "плохое" судя по количеству скачанньіх копий. так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 22 минуты назад, Dimasscus сказал: ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Так причем тут неформал?=) Если я задал вопрос по другому вопросу... 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Я специально в кавычки занес=( 1 час назад, Romti сказал: И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) Цитируйте сообщение плиз. 22 минуты назад, Dimasscus сказал: так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Согласен, не прав. Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 6 часов назад, Romti сказал: вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) а почитать тему, вера не позволяет? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 1 час назад, fanatic сказал: а почитать тему, вера не позволяет? Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 48 минут назад, ocdev_pro сказал: Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Сорян. Вспьілил:)) Бьіл не сдержан. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Схожі публікації Модуль Subscribe_pro - улучшенная подписка на новости [Поддержка] Автор: Sunser, 22 квітня 2020 подписка подписка на новости (і ще %d) Теги: подписка подписка на новости подписка на акции подписка на новости и акции подписка на рассылку опенкарт рассылка уведомления почта слежение email email информер email рассылка email уведомления форма opencart модуль расширение opencart2 opencart3 opencart2x opencart 3x ocstore ocstore2 1 відповідь 1 833 перегляди AlexMax13 19 листопада 2020 [Поддержка] Модуль "Super Custom Html Fields" 1 2 3 Автор: whiteblue, 3 листопада 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 63 відповіді 9 444 перегляди whiteblue 14 березня 2023 Модуль "Super Custom Html Fields" Автор: whiteblue, 28 жовтня 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 0 коментарів 17 187 переглядів whiteblue 28 жовтня 2019 [Поддержка] Кнопка редактирования заказа при просмотре [vQmod] Автор: noakky, 22 жовтня 2013 админка админ-панель (і ще %d) Теги: админка админ-панель кнопка vqmod редактирование заказа 12 відповідей 3 226 переглядів fjeka 28 березня 2014 [Поддержка] Кнопка "Применить" в админке Автор: seregin, 22 вересня 2016 применить button (і ще %d) Теги: применить button кнопка 12 відповідей 3 229 переглядів sspiceman 12 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Как убрать кнопку купить если кол-во = 0 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Prooksius Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 26 минут назад, ocdev_pro сказал: Одно? Ну ясно))) да, прошу прощения, залез в код, обновил в памяти, все верно, там тоже проходится по всем товарам корзины. Ну тогда да, ваш метод лучше Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 21 минуту назад, Prooksius сказал: да, прошу прощения, залез в код, обновил в памяти, все верно, там тоже проходится по всем товарам корзины. Ну тогда да, ваш метод лучше Минимум 8 запросов, и если найдены опции, запросит еще опции.. и в итоге при каждом обращении в корзину за методом getProducts выходит N товаров * 8 запросов Если на странице 30 товаров, получаем 240 запросов только от 1 юзера. И только на корзину. А еще есть получение самих товаров, где LEFT JOIN product_description итд делаются в 1 запросе.. Огромном и тяжелом.. + модули итд. для БД много но мелких запросов обработать гораздо проще. На магазине в 100 товаров оно может и не заметно согласен, но если взять магаз от 20000 да еще и с трафиком, то никаких ресурсов не хватит и будут тормоза Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 (змінено) 6 часов назад, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Всех благодарю за внимание и ответы. Если честно не получилось реализовать ни первый ни второй вариант. Опишу свои шаги: 1. В system/library/cart/cart.php добавил в самом конце Ваш метод. public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } 2. В catalog/controller/product/product/php перед $data['products'][] = array( 'product_id' => $result['product_id'], Добавил $this->cart->hasAdded($product_id); 3. Что делать дальше не могу понять, я в php полный 0 - разобраться нет возможности, так как пишу сайт по вечерам (ночам) после работы, хочется уже добить этот момент и на хостинг. Буду благодарен, если опишите подробнее, готов дать больше информации по коду, только скажите, что Вам потребуется. Змінено 5 лютого 2021 користувачем Bdn Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 Если говорить о первом варианте @Prooksius, то я видел похожее решение, но, повторюсь не сработало, в шаблоне постоянно выдаёт false. Пробовал также такой способ: Вроде бы ничего сложного, но видимо чего-то я не догоняю Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 43 минуты назад, Bdn сказал: Вам в метод $this->cart->hasAdded(// сюда передаем id товара который проверяем); если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> P.S Вам надо не пытаться понять Opencart, а учить просто язык программирования PHP, Вы по матчасти просто не знаете ничего 1 Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 В 05.02.2021 в 12:41, ocdev_pro сказал: Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); Спойлер 22 часа назад, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> В категориях работает. А как в карточке товара завести? Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 1 минуту назад, Romti сказал: В категориях работает. А как в карточке товара завести? А вьі тему попробуйте с начала прочесть Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 9 часов назад, Dimasscus сказал: А вьі тему попробуйте с начала прочесть А вы? @Bdn Задал вопрос Спойлер В 05.02.2021 в 03:49, Bdn сказал: Подскажите кто-нибудь (немного не по теме, но всё же), нужно чтобы при нажатии на кнопку купить на странице товара - появлялась кнопка "В КОРЗИНЕ" с ссылкой на корзину (написать на js проблем не составило, но при обновлении страницы, естественно - опять кнопка "купить", тут нужен php, в котором совсем не шарю). Вопрос, может кто-то сказать, как реализовать данную функцию, либо подскажите подходящий модуль, спасибо. ocsotre 3.0.2.0 Затем @Prooksius и вы ответили... Спойлер В 05.02.2021 в 08:19, Prooksius сказал: Я вот так иногда делаю: https://accent.md/ посмотрите, как добавляется в корзину. Сделать можно примерно так В контроллере: $cart_products = $this->cart->getProducts(); $product_id = <текущий ID товара> $cart_added = false; foreach ($cart_products as $cart_product) { if ($product_id == $cart_product['product_id']) { $cart_added = true; break; } } а во view - примерно как вы написали. Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. А @ocdev_pro предложил своё. Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Спойлер Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Спойлер В 05.02.2021 в 20:04, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> Работает в категориях. Как завести его в карточке товара? Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 9 часов назад, Romti сказал: В категориях работает. А как в карточке товара завести? В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд 27 минут назад, Romti сказал: Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. 1 Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 44 минуты назад, Romti сказал: А вы? @Bdn Задал вопрос Показать контент Затем @Prooksius и вы ответили... Показать контент Показать контент А @ocdev_pro предложил своё. Показать контент И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Показать контент Показать контент Показать контент Работает в категориях. Как завести его в карточке товара? Вьі походу с чтением не в ладах? Где именно @ocdev_pro сказал что МОИ решения не очень хорошие, если я в ответе привел предложенное им решение? Вьі под чем то? Если вьі не понимаете разницьі между категорией и продуктом опенкарт- валите все на меня:)) Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 11 минут назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 21 минуту назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Спасибо. Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 25 минут назад, Dimasscus сказал: Вьі походу с чтением не в ладах? Вьі под чем то? Ок, любите "это". Спойлер Да, как тут у вас "под таблетками", а сами не забыли? 23 минуты назад, Dimasscus сказал: Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. Где там решение @ocdev_pro ?? тыкните плиз Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 14 минут назад, Romti сказал: Ок, любите "это". Показать контент Да, как у вас тут "под таблетками", а сами не забыли? Показать контент Где там решение @ocdev_pro ?? тыкните плиз Я все еще жду от вас тьіканья в МОИ неправильньіе решения:)) ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Второму товарищу я предложил использовать решение из єтого модуля Которьій тоже не мое решение :)) кстати оно рабочее, если что. И не "плохое" судя по количеству скачанньіх копий. так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 22 минуты назад, Dimasscus сказал: ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Так причем тут неформал?=) Если я задал вопрос по другому вопросу... 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Я специально в кавычки занес=( 1 час назад, Romti сказал: И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) Цитируйте сообщение плиз. 22 минуты назад, Dimasscus сказал: так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Согласен, не прав. Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 6 часов назад, Romti сказал: вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) а почитать тему, вера не позволяет? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 1 час назад, fanatic сказал: а почитать тему, вера не позволяет? Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 48 минут назад, ocdev_pro сказал: Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Сорян. Вспьілил:)) Бьіл не сдержан. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Схожі публікації Модуль Subscribe_pro - улучшенная подписка на новости [Поддержка] Автор: Sunser, 22 квітня 2020 подписка подписка на новости (і ще %d) Теги: подписка подписка на новости подписка на акции подписка на новости и акции подписка на рассылку опенкарт рассылка уведомления почта слежение email email информер email рассылка email уведомления форма opencart модуль расширение opencart2 opencart3 opencart2x opencart 3x ocstore ocstore2 1 відповідь 1 833 перегляди AlexMax13 19 листопада 2020 [Поддержка] Модуль "Super Custom Html Fields" 1 2 3 Автор: whiteblue, 3 листопада 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 63 відповіді 9 444 перегляди whiteblue 14 березня 2023 Модуль "Super Custom Html Fields" Автор: whiteblue, 28 жовтня 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 0 коментарів 17 187 переглядів whiteblue 28 жовтня 2019 [Поддержка] Кнопка редактирования заказа при просмотре [vQmod] Автор: noakky, 22 жовтня 2013 админка админ-панель (і ще %d) Теги: админка админ-панель кнопка vqmod редактирование заказа 12 відповідей 3 226 переглядів fjeka 28 березня 2014 [Поддержка] Кнопка "Применить" в админке Автор: seregin, 22 вересня 2016 применить button (і ще %d) Теги: применить button кнопка 12 відповідей 3 229 переглядів sspiceman 12 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Как убрать кнопку купить если кол-во = 0 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 21 минуту назад, Prooksius сказал: да, прошу прощения, залез в код, обновил в памяти, все верно, там тоже проходится по всем товарам корзины. Ну тогда да, ваш метод лучше Минимум 8 запросов, и если найдены опции, запросит еще опции.. и в итоге при каждом обращении в корзину за методом getProducts выходит N товаров * 8 запросов Если на странице 30 товаров, получаем 240 запросов только от 1 юзера. И только на корзину. А еще есть получение самих товаров, где LEFT JOIN product_description итд делаются в 1 запросе.. Огромном и тяжелом.. + модули итд. для БД много но мелких запросов обработать гораздо проще. На магазине в 100 товаров оно может и не заметно согласен, но если взять магаз от 20000 да еще и с трафиком, то никаких ресурсов не хватит и будут тормоза Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 (змінено) 6 часов назад, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Всех благодарю за внимание и ответы. Если честно не получилось реализовать ни первый ни второй вариант. Опишу свои шаги: 1. В system/library/cart/cart.php добавил в самом конце Ваш метод. public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } 2. В catalog/controller/product/product/php перед $data['products'][] = array( 'product_id' => $result['product_id'], Добавил $this->cart->hasAdded($product_id); 3. Что делать дальше не могу понять, я в php полный 0 - разобраться нет возможности, так как пишу сайт по вечерам (ночам) после работы, хочется уже добить этот момент и на хостинг. Буду благодарен, если опишите подробнее, готов дать больше информации по коду, только скажите, что Вам потребуется. Змінено 5 лютого 2021 користувачем Bdn Надіслати Поділитися на інших сайтах More sharing options... Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 Если говорить о первом варианте @Prooksius, то я видел похожее решение, но, повторюсь не сработало, в шаблоне постоянно выдаёт false. Пробовал также такой способ: Вроде бы ничего сложного, но видимо чего-то я не догоняю Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 43 минуты назад, Bdn сказал: Вам в метод $this->cart->hasAdded(// сюда передаем id товара который проверяем); если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> P.S Вам надо не пытаться понять Opencart, а учить просто язык программирования PHP, Вы по матчасти просто не знаете ничего 1 Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 В 05.02.2021 в 12:41, ocdev_pro сказал: Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); Спойлер 22 часа назад, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> В категориях работает. А как в карточке товара завести? Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 1 минуту назад, Romti сказал: В категориях работает. А как в карточке товара завести? А вьі тему попробуйте с начала прочесть Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 9 часов назад, Dimasscus сказал: А вьі тему попробуйте с начала прочесть А вы? @Bdn Задал вопрос Спойлер В 05.02.2021 в 03:49, Bdn сказал: Подскажите кто-нибудь (немного не по теме, но всё же), нужно чтобы при нажатии на кнопку купить на странице товара - появлялась кнопка "В КОРЗИНЕ" с ссылкой на корзину (написать на js проблем не составило, но при обновлении страницы, естественно - опять кнопка "купить", тут нужен php, в котором совсем не шарю). Вопрос, может кто-то сказать, как реализовать данную функцию, либо подскажите подходящий модуль, спасибо. ocsotre 3.0.2.0 Затем @Prooksius и вы ответили... Спойлер В 05.02.2021 в 08:19, Prooksius сказал: Я вот так иногда делаю: https://accent.md/ посмотрите, как добавляется в корзину. Сделать можно примерно так В контроллере: $cart_products = $this->cart->getProducts(); $product_id = <текущий ID товара> $cart_added = false; foreach ($cart_products as $cart_product) { if ($product_id == $cart_product['product_id']) { $cart_added = true; break; } } а во view - примерно как вы написали. Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. А @ocdev_pro предложил своё. Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Спойлер Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Спойлер В 05.02.2021 в 20:04, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> Работает в категориях. Как завести его в карточке товара? Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 9 часов назад, Romti сказал: В категориях работает. А как в карточке товара завести? В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд 27 минут назад, Romti сказал: Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. 1 Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 44 минуты назад, Romti сказал: А вы? @Bdn Задал вопрос Показать контент Затем @Prooksius и вы ответили... Показать контент Показать контент А @ocdev_pro предложил своё. Показать контент И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Показать контент Показать контент Показать контент Работает в категориях. Как завести его в карточке товара? Вьі походу с чтением не в ладах? Где именно @ocdev_pro сказал что МОИ решения не очень хорошие, если я в ответе привел предложенное им решение? Вьі под чем то? Если вьі не понимаете разницьі между категорией и продуктом опенкарт- валите все на меня:)) Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 11 минут назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 21 минуту назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Спасибо. Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 25 минут назад, Dimasscus сказал: Вьі походу с чтением не в ладах? Вьі под чем то? Ок, любите "это". Спойлер Да, как тут у вас "под таблетками", а сами не забыли? 23 минуты назад, Dimasscus сказал: Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. Где там решение @ocdev_pro ?? тыкните плиз Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 14 минут назад, Romti сказал: Ок, любите "это". Показать контент Да, как у вас тут "под таблетками", а сами не забыли? Показать контент Где там решение @ocdev_pro ?? тыкните плиз Я все еще жду от вас тьіканья в МОИ неправильньіе решения:)) ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Второму товарищу я предложил использовать решение из єтого модуля Которьій тоже не мое решение :)) кстати оно рабочее, если что. И не "плохое" судя по количеству скачанньіх копий. так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 22 минуты назад, Dimasscus сказал: ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Так причем тут неформал?=) Если я задал вопрос по другому вопросу... 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Я специально в кавычки занес=( 1 час назад, Romti сказал: И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) Цитируйте сообщение плиз. 22 минуты назад, Dimasscus сказал: так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Согласен, не прав. Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 6 часов назад, Romti сказал: вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) а почитать тему, вера не позволяет? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 1 час назад, fanatic сказал: а почитать тему, вера не позволяет? Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 48 минут назад, ocdev_pro сказал: Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Сорян. Вспьілил:)) Бьіл не сдержан. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Схожі публікації Модуль Subscribe_pro - улучшенная подписка на новости [Поддержка] Автор: Sunser, 22 квітня 2020 подписка подписка на новости (і ще %d) Теги: подписка подписка на новости подписка на акции подписка на новости и акции подписка на рассылку опенкарт рассылка уведомления почта слежение email email информер email рассылка email уведомления форма opencart модуль расширение opencart2 opencart3 opencart2x opencart 3x ocstore ocstore2 1 відповідь 1 833 перегляди AlexMax13 19 листопада 2020 [Поддержка] Модуль "Super Custom Html Fields" 1 2 3 Автор: whiteblue, 3 листопада 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 63 відповіді 9 444 перегляди whiteblue 14 березня 2023 Модуль "Super Custom Html Fields" Автор: whiteblue, 28 жовтня 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 0 коментарів 17 187 переглядів whiteblue 28 жовтня 2019 [Поддержка] Кнопка редактирования заказа при просмотре [vQmod] Автор: noakky, 22 жовтня 2013 админка админ-панель (і ще %d) Теги: админка админ-панель кнопка vqmod редактирование заказа 12 відповідей 3 226 переглядів fjeka 28 березня 2014 [Поддержка] Кнопка "Применить" в админке Автор: seregin, 22 вересня 2016 применить button (і ще %d) Теги: применить button кнопка 12 відповідей 3 229 переглядів sspiceman 12 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Как убрать кнопку купить если кол-во = 0 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 (змінено) 6 часов назад, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Всех благодарю за внимание и ответы. Если честно не получилось реализовать ни первый ни второй вариант. Опишу свои шаги: 1. В system/library/cart/cart.php добавил в самом конце Ваш метод. public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } 2. В catalog/controller/product/product/php перед $data['products'][] = array( 'product_id' => $result['product_id'], Добавил $this->cart->hasAdded($product_id); 3. Что делать дальше не могу понять, я в php полный 0 - разобраться нет возможности, так как пишу сайт по вечерам (ночам) после работы, хочется уже добить этот момент и на хостинг. Буду благодарен, если опишите подробнее, готов дать больше информации по коду, только скажите, что Вам потребуется. Змінено 5 лютого 2021 користувачем Bdn Надіслати Поділитися на інших сайтах More sharing options...
Bdn Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 Если говорить о первом варианте @Prooksius, то я видел похожее решение, но, повторюсь не сработало, в шаблоне постоянно выдаёт false. Пробовал также такой способ: Вроде бы ничего сложного, но видимо чего-то я не догоняю Надіслати Поділитися на інших сайтах More sharing options...
ocdev_pro Опубліковано: 5 лютого 2021 Share Опубліковано: 5 лютого 2021 43 минуты назад, Bdn сказал: Вам в метод $this->cart->hasAdded(// сюда передаем id товара который проверяем); если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> P.S Вам надо не пытаться понять Opencart, а учить просто язык программирования PHP, Вы по матчасти просто не знаете ничего 1 Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 В 05.02.2021 в 12:41, ocdev_pro сказал: Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); Спойлер 22 часа назад, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> В категориях работает. А как в карточке товара завести? Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 1 минуту назад, Romti сказал: В категориях работает. А как в карточке товара завести? А вьі тему попробуйте с начала прочесть Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 9 часов назад, Dimasscus сказал: А вьі тему попробуйте с начала прочесть А вы? @Bdn Задал вопрос Спойлер В 05.02.2021 в 03:49, Bdn сказал: Подскажите кто-нибудь (немного не по теме, но всё же), нужно чтобы при нажатии на кнопку купить на странице товара - появлялась кнопка "В КОРЗИНЕ" с ссылкой на корзину (написать на js проблем не составило, но при обновлении страницы, естественно - опять кнопка "купить", тут нужен php, в котором совсем не шарю). Вопрос, может кто-то сказать, как реализовать данную функцию, либо подскажите подходящий модуль, спасибо. ocsotre 3.0.2.0 Затем @Prooksius и вы ответили... Спойлер В 05.02.2021 в 08:19, Prooksius сказал: Я вот так иногда делаю: https://accent.md/ посмотрите, как добавляется в корзину. Сделать можно примерно так В контроллере: $cart_products = $this->cart->getProducts(); $product_id = <текущий ID товара> $cart_added = false; foreach ($cart_products as $cart_product) { if ($product_id == $cart_product['product_id']) { $cart_added = true; break; } } а во view - примерно как вы написали. Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. А @ocdev_pro предложил своё. Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Спойлер Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Спойлер В 05.02.2021 в 20:04, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> Работает в категориях. Как завести его в карточке товара? Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 9 часов назад, Romti сказал: В категориях работает. А как в карточке товара завести? В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд 27 минут назад, Romti сказал: Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. 1 Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 44 минуты назад, Romti сказал: А вы? @Bdn Задал вопрос Показать контент Затем @Prooksius и вы ответили... Показать контент Показать контент А @ocdev_pro предложил своё. Показать контент И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Показать контент Показать контент Показать контент Работает в категориях. Как завести его в карточке товара? Вьі походу с чтением не в ладах? Где именно @ocdev_pro сказал что МОИ решения не очень хорошие, если я в ответе привел предложенное им решение? Вьі под чем то? Если вьі не понимаете разницьі между категорией и продуктом опенкарт- валите все на меня:)) Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 11 минут назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 21 минуту назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Спасибо. Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 25 минут назад, Dimasscus сказал: Вьі походу с чтением не в ладах? Вьі под чем то? Ок, любите "это". Спойлер Да, как тут у вас "под таблетками", а сами не забыли? 23 минуты назад, Dimasscus сказал: Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. Где там решение @ocdev_pro ?? тыкните плиз Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 14 минут назад, Romti сказал: Ок, любите "это". Показать контент Да, как у вас тут "под таблетками", а сами не забыли? Показать контент Где там решение @ocdev_pro ?? тыкните плиз Я все еще жду от вас тьіканья в МОИ неправильньіе решения:)) ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Второму товарищу я предложил использовать решение из єтого модуля Которьій тоже не мое решение :)) кстати оно рабочее, если что. И не "плохое" судя по количеству скачанньіх копий. так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 22 минуты назад, Dimasscus сказал: ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Так причем тут неформал?=) Если я задал вопрос по другому вопросу... 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Я специально в кавычки занес=( 1 час назад, Romti сказал: И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) Цитируйте сообщение плиз. 22 минуты назад, Dimasscus сказал: так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Согласен, не прав. Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 6 часов назад, Romti сказал: вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) а почитать тему, вера не позволяет? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 1 час назад, fanatic сказал: а почитать тему, вера не позволяет? Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 48 минут назад, ocdev_pro сказал: Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Сорян. Вспьілил:)) Бьіл не сдержан. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Схожі публікації Модуль Subscribe_pro - улучшенная подписка на новости [Поддержка] Автор: Sunser, 22 квітня 2020 подписка подписка на новости (і ще %d) Теги: подписка подписка на новости подписка на акции подписка на новости и акции подписка на рассылку опенкарт рассылка уведомления почта слежение email email информер email рассылка email уведомления форма opencart модуль расширение opencart2 opencart3 opencart2x opencart 3x ocstore ocstore2 1 відповідь 1 833 перегляди AlexMax13 19 листопада 2020 [Поддержка] Модуль "Super Custom Html Fields" 1 2 3 Автор: whiteblue, 3 листопада 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 63 відповіді 9 444 перегляди whiteblue 14 березня 2023 Модуль "Super Custom Html Fields" Автор: whiteblue, 28 жовтня 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 0 коментарів 17 187 переглядів whiteblue 28 жовтня 2019 [Поддержка] Кнопка редактирования заказа при просмотре [vQmod] Автор: noakky, 22 жовтня 2013 админка админ-панель (і ще %d) Теги: админка админ-панель кнопка vqmod редактирование заказа 12 відповідей 3 226 переглядів fjeka 28 березня 2014 [Поддержка] Кнопка "Применить" в админке Автор: seregin, 22 вересня 2016 применить button (і ще %d) Теги: применить button кнопка 12 відповідей 3 229 переглядів sspiceman 12 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Как убрать кнопку купить если кол-во = 0 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
Romti Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 В 05.02.2021 в 12:41, ocdev_pro сказал: Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); Спойлер 22 часа назад, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> В категориях работает. А как в карточке товара завести? Надіслати Поділитися на інших сайтах More sharing options...
Dimasscus Опубліковано: 6 лютого 2021 Share Опубліковано: 6 лютого 2021 1 минуту назад, Romti сказал: В категориях работает. А как в карточке товара завести? А вьі тему попробуйте с начала прочесть Надіслати Поділитися на інших сайтах More sharing options...
Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 9 часов назад, Dimasscus сказал: А вьі тему попробуйте с начала прочесть А вы? @Bdn Задал вопрос Спойлер В 05.02.2021 в 03:49, Bdn сказал: Подскажите кто-нибудь (немного не по теме, но всё же), нужно чтобы при нажатии на кнопку купить на странице товара - появлялась кнопка "В КОРЗИНЕ" с ссылкой на корзину (написать на js проблем не составило, но при обновлении страницы, естественно - опять кнопка "купить", тут нужен php, в котором совсем не шарю). Вопрос, может кто-то сказать, как реализовать данную функцию, либо подскажите подходящий модуль, спасибо. ocsotre 3.0.2.0 Затем @Prooksius и вы ответили... Спойлер В 05.02.2021 в 08:19, Prooksius сказал: Я вот так иногда делаю: https://accent.md/ посмотрите, как добавляется в корзину. Сделать можно примерно так В контроллере: $cart_products = $this->cart->getProducts(); $product_id = <текущий ID товара> $cart_added = false; foreach ($cart_products as $cart_product) { if ($product_id == $cart_product['product_id']) { $cart_added = true; break; } } а во view - примерно как вы написали. Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. А @ocdev_pro предложил своё. Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Спойлер Спойлер В 05.02.2021 в 12:41, ocdev_pro сказал: Ну если по нормальному, то в system/library/cart/cart.php Добавляем метод public function hasAdded($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product_id . "'"); if($query->num_rows){ return true; }else{ return false; } } Затем из нужного места обращаемся к нему $this->cart->hasAdded($product_id); вернет bool значение И не нужно обходить циклом всю корзину для подобной реализации. Потом страдают и говорят у меня корзина тупит Спойлер В 05.02.2021 в 20:04, ocdev_pro сказал: если добавляете перед массивом $data['products'].. то определяем переменную $has_added = $this->cart->hasAdded($result['product_id']); которая из запроса получить значение TRUE или FALSE а в массив $data['products'] = array( 'added_to_cart' => $has_added, потом в шаблоне где идет цикл<?php foreach ($products as $product) { ?> можно вызвать это значение и запустить в условие<?php if($product['added_to_cart']) { ?> ТОВАР в КОРЗИНЕ <?php }else{ ?> ТОВАР НЕ В КОРЗИНЕ <?php } ?> ....<?php } ?> Работает в категориях. Как завести его в карточке товара? Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options...
ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 9 часов назад, Romti сказал: В категориях работает. А как в карточке товара завести? В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд 27 минут назад, Romti сказал: Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. 1 Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 44 минуты назад, Romti сказал: А вы? @Bdn Задал вопрос Показать контент Затем @Prooksius и вы ответили... Показать контент Показать контент А @ocdev_pro предложил своё. Показать контент И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Показать контент Показать контент Показать контент Работает в категориях. Как завести его в карточке товара? Вьі походу с чтением не в ладах? Где именно @ocdev_pro сказал что МОИ решения не очень хорошие, если я в ответе привел предложенное им решение? Вьі под чем то? Если вьі не понимаете разницьі между категорией и продуктом опенкарт- валите все на меня:)) Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 11 минут назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 21 минуту назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Спасибо. Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 25 минут назад, Dimasscus сказал: Вьі походу с чтением не в ладах? Вьі под чем то? Ок, любите "это". Спойлер Да, как тут у вас "под таблетками", а сами не забыли? 23 минуты назад, Dimasscus сказал: Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. Где там решение @ocdev_pro ?? тыкните плиз Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 14 минут назад, Romti сказал: Ок, любите "это". Показать контент Да, как у вас тут "под таблетками", а сами не забыли? Показать контент Где там решение @ocdev_pro ?? тыкните плиз Я все еще жду от вас тьіканья в МОИ неправильньіе решения:)) ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Второму товарищу я предложил использовать решение из єтого модуля Которьій тоже не мое решение :)) кстати оно рабочее, если что. И не "плохое" судя по количеству скачанньіх копий. так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Надіслати Поділитися на інших сайтах More sharing options... Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 22 минуты назад, Dimasscus сказал: ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Так причем тут неформал?=) Если я задал вопрос по другому вопросу... 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Я специально в кавычки занес=( 1 час назад, Romti сказал: И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) Цитируйте сообщение плиз. 22 минуты назад, Dimasscus сказал: так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Согласен, не прав. Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 6 часов назад, Romti сказал: вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) а почитать тему, вера не позволяет? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 1 час назад, fanatic сказал: а почитать тему, вера не позволяет? Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 48 минут назад, ocdev_pro сказал: Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Сорян. Вспьілил:)) Бьіл не сдержан. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Схожі публікації Модуль Subscribe_pro - улучшенная подписка на новости [Поддержка] Автор: Sunser, 22 квітня 2020 подписка подписка на новости (і ще %d) Теги: подписка подписка на новости подписка на акции подписка на новости и акции подписка на рассылку опенкарт рассылка уведомления почта слежение email email информер email рассылка email уведомления форма opencart модуль расширение opencart2 opencart3 opencart2x opencart 3x ocstore ocstore2 1 відповідь 1 833 перегляди AlexMax13 19 листопада 2020 [Поддержка] Модуль "Super Custom Html Fields" 1 2 3 Автор: whiteblue, 3 листопада 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 63 відповіді 9 444 перегляди whiteblue 14 березня 2023 Модуль "Super Custom Html Fields" Автор: whiteblue, 28 жовтня 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 0 коментарів 17 187 переглядів whiteblue 28 жовтня 2019 [Поддержка] Кнопка редактирования заказа при просмотре [vQmod] Автор: noakky, 22 жовтня 2013 админка админ-панель (і ще %d) Теги: админка админ-панель кнопка vqmod редактирование заказа 12 відповідей 3 226 переглядів fjeka 28 березня 2014 [Поддержка] Кнопка "Применить" в админке Автор: seregin, 22 вересня 2016 применить button (і ще %d) Теги: применить button кнопка 12 відповідей 3 229 переглядів sspiceman 12 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Как убрать кнопку купить если кол-во = 0
Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 44 минуты назад, Romti сказал: А вы? @Bdn Задал вопрос Показать контент Затем @Prooksius и вы ответили... Показать контент Показать контент А @ocdev_pro предложил своё. Показать контент И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. Вопрос вам @Dimasscus , вы предлагаете использовать "не очень хорошие" решения? Решение @ocdev_pro Показать контент Показать контент Показать контент Работает в категориях. Как завести его в карточке товара? Вьі походу с чтением не в ладах? Где именно @ocdev_pro сказал что МОИ решения не очень хорошие, если я в ответе привел предложенное им решение? Вьі под чем то? Если вьі не понимаете разницьі между категорией и продуктом опенкарт- валите все на меня:)) Надіслати Поділитися на інших сайтах More sharing options...
Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 11 минут назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Нет смысла спрашивать, здесь вопрос в элементарном понимании работы всей этой кухни. Такие решения четко потом показывают клиенту, почему професиионалы работают дороже. Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Надіслати Поділитися на інших сайтах More sharing options...
Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 21 минуту назад, ocdev_pro сказал: В product.php объявить переменную $data['has_added'] = $this->cart->hasAdded($product_info['product_id']); А в шаблоне уже ее вызывать по примеру ранее <?php if($has_added) { ?> .. итд Спасибо. Надіслати Поділитися на інших сайтах More sharing options...
Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 25 минут назад, Dimasscus сказал: Вьі походу с чтением не в ладах? Вьі под чем то? Ок, любите "это". Спойлер Да, как тут у вас "под таблетками", а сами не забыли? 23 минуты назад, Dimasscus сказал: Єтому неформалу я указал на предложенньій вами вариант для карточки товара. Но он почему то решил что вариант МОЙ, да еще и неправильньій с ваших слов:)) Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. Где там решение @ocdev_pro ?? тыкните плиз Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options...
Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 14 минут назад, Romti сказал: Ок, любите "это". Показать контент Да, как у вас тут "под таблетками", а сами не забыли? Показать контент Где там решение @ocdev_pro ?? тыкните плиз Я все еще жду от вас тьіканья в МОИ неправильньіе решения:)) ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Второму товарищу я предложил использовать решение из єтого модуля Которьій тоже не мое решение :)) кстати оно рабочее, если что. И не "плохое" судя по количеству скачанньіх копий. так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Надіслати Поділитися на інших сайтах More sharing options...
Romti Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 (змінено) 22 минуты назад, Dimasscus сказал: ТС - у я указал на вариант сокрьітия кнопки купить в товаре. Предложенньій oc_dev. Если вьі посмотрите внимательно, то возможно увидите. Так причем тут неформал?=) Если я задал вопрос по другому вопросу... 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Я специально в кавычки занес=( 1 час назад, Romti сказал: И сказал, что 'ваши' решения "не очень хорошие" и @Prooksius согласился. 22 минуты назад, Dimasscus сказал: Второму товарищу я предложил использовать решение из єтого модуля Спойлер В 05.02.2021 в 09:09, Dimasscus сказал: Пример для 2.х Думаю под 3.х адаптируете без проблем. вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) Цитируйте сообщение плиз. 22 минуты назад, Dimasscus сказал: так где же все таки МОЕ неправильное решение, которое я ВАМ предложил? Согласен, не прав. Змінено 7 лютого 2021 користувачем Romti Надіслати Поділитися на інших сайтах More sharing options...
fanatic Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 6 часов назад, Romti сказал: вы цитировали целую тему.. и какое вы решение имели, я хз... (не проще модуль указать?) а почитать тему, вера не позволяет? Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 1 час назад, fanatic сказал: а почитать тему, вера не позволяет? Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 48 минут назад, ocdev_pro сказал: Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Сорян. Вспьілил:)) Бьіл не сдержан. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Схожі публікації Модуль Subscribe_pro - улучшенная подписка на новости [Поддержка] Автор: Sunser, 22 квітня 2020 подписка подписка на новости (і ще %d) Теги: подписка подписка на новости подписка на акции подписка на новости и акции подписка на рассылку опенкарт рассылка уведомления почта слежение email email информер email рассылка email уведомления форма opencart модуль расширение opencart2 opencart3 opencart2x opencart 3x ocstore ocstore2 1 відповідь 1 833 перегляди AlexMax13 19 листопада 2020 [Поддержка] Модуль "Super Custom Html Fields" 1 2 3 Автор: whiteblue, 3 листопада 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 63 відповіді 9 444 перегляди whiteblue 14 березня 2023 Модуль "Super Custom Html Fields" Автор: whiteblue, 28 жовтня 2019 кнопка html (і ще %d) Теги: кнопка html цена пользовательская корзина быстрый заказ 0 коментарів 17 187 переглядів whiteblue 28 жовтня 2019 [Поддержка] Кнопка редактирования заказа при просмотре [vQmod] Автор: noakky, 22 жовтня 2013 админка админ-панель (і ще %d) Теги: админка админ-панель кнопка vqmod редактирование заказа 12 відповідей 3 226 переглядів fjeka 28 березня 2014 [Поддержка] Кнопка "Применить" в админке Автор: seregin, 22 вересня 2016 применить button (і ще %d) Теги: применить button кнопка 12 відповідей 3 229 переглядів sspiceman 12 квітня 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
ocdev_pro Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 1 час назад, fanatic сказал: а почитать тему, вера не позволяет? Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Надіслати Поділитися на інших сайтах More sharing options... Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 48 минут назад, ocdev_pro сказал: Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Сорян. Вспьілил:)) Бьіл не сдержан. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2
Dimasscus Опубліковано: 7 лютого 2021 Share Опубліковано: 7 лютого 2021 48 минут назад, ocdev_pro сказал: Вы чё все такие злые, Токсики? Один не понял, другой завелся.. нет другого места погавкаться? Прекратите. Сорян. Вспьілил:)) Бьіл не сдержан. Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts