Search the Community
Showing results for tags 'php'.
-
Здравствуйте, в каталоге товаров здесь https://test.miturbo.ru/category/xiaomi-redmi-note-8 Нужно вывести код товара. Как мне это сделать? В БД есть таблица oc_product и в этой таблице есть значение model в этом значении есть код товара у каждого товара. Мне нужно вывести код товара этот. но просто вот так: <span>{{ model }}</span> не получается. А в product.twig <span>{{ model }}</span> вот так получается. За вывод этой страницы https://test.miturbo.ru/category/xiaomi-redmi-note-8 отвечает файл category_grid.twig . Если в этот файл добавить <span>{{ model }}</span> то нечего не получится, а если в product.twig то получится. {{ model }} означает код товара. Как мне сделать так чтобы в category_grid.twig тоже получалось к каждому товару выводить свой код товара. Это мне из БД как то вытаскивать или нет? Если уже выводить из БД то нужно сделать так чтобы к каждому товару свой код товара подходящий выводился, а не у всех товаров был одинаковый код товара. Буду очень благодарен.
-
Чето то стало таскливо и решил провести анализ версий php у пользователей OpenCart. И решил поделится этой заметкой. Возможно кому-то будет полезно, а может и просто будет инетересно как мне и эта заметка поможет кому-то скоротать чашечку чая. Можно сказать продолжение записки Предыдущая оценка версий php проводилась 9 ноября 2020 Посмотрим что изменилось за 2.5 года в данном вопросе. Для анализа я взял доменные имена указанные клиентами при заказе моих модулей. Информация о версии php была взята из заголовка X-Powered-By То еть из публичного источника. Данные за 09.11.2020 Для наглядности вначале выложу информацию с предыдущей статьи. Но поскольку в тот раз была выборка из 371 приведу информацию в процентном соотношении. Для быстрого и интуитивного сравнения. PHP/5.6 => 38.81% PHP/7.1 => 23.45% PHP/7.2 => 18.86% PHP/7.3 => 12.66% PHP/7.0 => 5.39% PHP/7.4 => 0.80% Данные за 02.05.2023 В этот раз в замере участвовали уже 746 сайтов. PHP/7.3 => 36.05% PHP/7.4 => 20.24% PHP/5.6 => 18.76% PHP/7.2 => 10.45% PHP/7.1 => 10.32% PHP/7.0 => 2.94% PHP/8.1 => 0.93% PHP/8.0 => 0.26% Что для меня было интересно. 1) Почти 22% сайтов до сих пор на версии PHP 5.6 Я сам сторонник теории "Работает не трогай" Но все же версия 5.6 была выпущена еше в 14.11.2013 то есть в этом году ей будет уже 10 лет. 2) Рост популярности версии php 7.1 и новее составил всего 21.29% как по мне маловато учитывая какой прирост скорости php 7 дает. Было 55.77% Стало 77.06% Вроде прирост скорости хороший, и если хочится повысить немного производительность, то переход на новую версию php стоит рассматривать. Это мое субьективное мнение. Ну и на последок оставлю всю выборку, в сыром виде с минорными версиям php
-
Доброго дня. Є такий код (в для певних варіантів доставки він або віднімає вартість доствки з тотал, або додає): В першому випадку все завжди працює ідеально, а для weight.weight_6 та weight.weight_5 інколи (не завжди) двічі додає вартість доставки. Як тут: Можливо, я десь помилився і цього не бачу? Буду вдячний за підказку.
-
Все привет , столкнулся с проблемой , на главной страници кнопка каталог работает( при переходи в подкатегории или на товар кнопка перестает работать ) множесто ошибок в консоле не могу понять где исправить данные ошибки так как они введут на кэш , я его очишал но не чего не поменялось ( папка min) вот >сайт< буду благодарен за подсказки или помощь!
-
Добрый вечер, уважаемые специалисты! Столкнулся с такой проблемой. Если в поиск ввести более 2 слов на русском языке (кириллице) и нажать на кнопку поиска, то на странице поиска в url и в поле поиска, русские слова заменяются на непонятные символы. Если вводить в поиск слова на английском языке, всё работает. И если вводить только одно слово на русском языке, тоже работает. Если я правильно понимаю эта ошибка связана с кодировкой. Просто дело в том, что у меня есть два сайта, которые идентичны (отличаются лишь дизайном и некоторыми мелочами). На сайте https://divek.com.ua/ поиск работает без ошибок, а вот на втором https://bagcity.com.ua/ с ошибками. Уже столько разных статей перечитал по решению подобной проблемы, но так и не получилось решить эту задачу. Понимаю, что подобные темы уже обсуждались и возможно Вы посоветуете получше поискать ответы в интернете. Но если Вас это не затруднит, то подскажите, пожалуйста, как решить эту проблему. Общая информация: Версия OpenCart: 3.0.3.2 Хостинг: https://www.ukraine.com.ua/ Версия PHP: 7.3 Ссылка на сайт: https://bagcity.com.ua Скриншот результата поиска ( https://bagcity.com.ua/search/?search=ÑÑмка ÑеÑÐ½Ð°Ñ ) :
- 24 replies
-
- поиск
- поиск search
- (and 17 more)
-
Как можно вывести все подкатегории на странице категории и подкатегории например, есть главная категория "Desktops", а подкатегории https://demo.opencart.com/index.php?route=product/category&path=20 - PC - Mac если переходит на страницу категории "MAC", то там НЕ показывают другие подкатегории нужно чтоб, когда чел на странице категории "MAC", то показал и другие подкатегории "PC" пример https://esh-derevenskoe.ru/moloko-yayca-i-molochnaya-produkciya если переходит на подкатегории, то другие подкатегории тоже будет доступным
-
Добрый день. Есть магазин на ocStore Version 1.5.4.1. На сервере стоит версия PHP 5.3.3, хостинг reg.ru. Нужно установить модуль для работы с атрибутами, которому нужна версия PHP 5.4 и выше. Прочесала весь форум, судя по всему это единственный модуль, к-ый подходит под версию 1.5.4.1 и он нам очень нужен (для быстрого исправления ошибок в значениях атрибутов, к-ых довольно много). Вопрос, какова вероятность, что сайт перестанет работать, если на сервере обновить версию PHP (до 5.4 или 5.6)? Понимаю, что гарантий никто никогда не дает, но это действующий сайт интернет-магазина, если что-то пойдет не так, то будет потрачено некоторое время на откат на старую версию PHP 5.3 и потеряны заказы и клиенты. Или может это не так страшно, но перед обновлением стоит проверить все модули на совместимость с новой версией PHP? Нужно принять правильное решение, может кто-то уже сталкивался с подобным - буду благодарна за совет!
- 11 replies
-
- php
- обновление
-
(and 1 more)
Tagged with:
-
ocStore v2.3.0.2.4 Товарищи, приветствую! Пишу модуль в админке, имею контроллер, который загружает основной шаблон. Этот шаблон использую JQ и AJAX обращается к серверу, ожидая, что тот выполнит метод, описанный в контроллере. Этот метод, в свою очередь, выполняет некоторые манипуляции с данными, потом передаёт их второму шаблону (tpl) и тот уже должен выводиться: public function method() { if ($this->request->server['REQUEST_METHOD'] == 'POST') { //code... $this->response->addHeader('Content-Type: html'); $this->response->setOutput($this->load->view('controller/template', $data)); } } AJAX запрос отправляется, и возвращается ответ с кодом 200, в виде html "Страница не найдена". В итоге AJAX стучится в .../admin/index.php?route=controller/file/method&token=... но когда я перехожу по этому адресу, так же вижу сообщение "Страница не найдена". Запрос такой: function getPerms(url) { $.ajax({ url: url, method: 'POST', dataType: 'html', brforeSend: function(){ $('.panel-title>i').replaceWith('<i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i>'); }, complete: function(){ $('.panel-title>i').replaceWith('<i class="fa fa-table" aria-hidden="true"></i>'); console.log('complete'); console.log(url); }, success: function(data){ $('#upp-table').html(data); console.log(data); }, error: function(){ console.log('error'); } }); } Как правильно обратиться к методу, что бы получить его ответ (готовый шаблон)?
-
Всем добрый день, помогите пожалуйста решить проблему ! При попытке поставить модули для устранения ссылок типа index.php?route=common/home страницы с таким дублем становятся " Страница недоступна Сайт выполнил переадресацию слишком много раз. Удалите файлы cookie.. ERR_TOO_MANY_REDIRECTS " исполузется SSL сертификат и редирект на https ВОПРОС ! Как сделать чпу ссылки что б ошибка при установке модуля не выплывала , подскажите пожалуйста !
-
Добрый вечер! Уже неделю не могу решить вопрос с сортировкой товаров. Нужно чтобы при любой стандартной сортировке, товары со статусом "нет в наличии" были в самом конце. Нашел много статей на эту тему, но для 2 версии OpenCart. Для 3-й же версии нашел всего лишь парочку статей. Но все эти решения не дали результат. Думаю для знающих и разбирающихся в php и MySql это довольно легкая задача. Буду благодарен если поможете в этом вопросе.
- 14 replies
-
Есть модуль с отзывами. Пытаюсь в админке вывести уведомление о новом отзыве admin/controller/catalog/p_review.php: $p_review_total = $this->model_catalog_p_review->getTotalReviews(); $data['p_reviewtotal'] = $p_review_total; $results = $this->model_catalog_p_review->getReviews($filter_data); header.php // Reviews $this->load->model('catalog/p_review'); $p_reviewtotal = $this->model_catalog_p_review->getTotalReviews(array('status' => 0)); $data['p_reviewtotal'] = $p_reviewtotal; $data['p_review'] = $this->url->link('catalog/p_review', 'user_token=' . $this->session->data['user_token'] . '&status=0', true); header.twig {% if p_review_total >= 1 %} <li class="dropdown"><a href="{{ p_review }}"> <i class="fa fa fa-comments-o fa-lg blinking" style="color:green"></i> <span style="font-size: 10px">{{ text_review }}</span> <sub>{{ text_new_review }}: ({{ review_total }})</sub></a></li> {% endif %} Получаю ошибку Fatal error: Uncaught Error: Call to a member function getTotalReviews() on null Как правильно вывести количество?
-
Приветствую Есть скрипт синхронизации цен и остатков с маркетплейсом по API на CMS Prestashop. Надо его перенести на Ocstore2.3. Документация по API есть. Выглядит скрипт так: скрипт запускался по крону, а также был встроен вызов при изменении цены/количества в админке и после оформления заказа. Кому интересно, пишите в личку цену, сроки.
-
Здравствуйте, Ранее мне сделали обертку для ocfilter Версии 4.7ххх , чтобы его можно было выводить в любое место(главная, статьи, блог... не важно) все работало вполне адекватно, но появиласть необходимость сделать тоже-самое но на новую версию фильтра... фильтр я поставил, вывел обертку на главную, и сразу вылетела 500 ошибка. сделал логирование ошибок [07-Nov-2021 13:18:05 UTC] PHP Fatal error: Uncaught Error: Class 'OCFilter' not found in /home/p/pikenebl/***/public_html/catalog/controller/extension/module/lazyfilter.php:54 Stack trace: #0 [internal function]: ControllerExtensionModuleLazyFilter->index(Array) #1 /home/p/pikenebl/***/storage/modification/system/engine/action.php(79): call_user_func_array(Array, Array) #2 /home/p/pikenebl/***/storage/modification/system/engine/loader.php(48): Action->execute(Object(Registry), Array) #3 /home/p/pikenebl/***/storage/modification/catalog/controller/common/content_top.php(70): Loader->controller('extension/modul...') #4 [internal function]: ControllerCommonContentTop->index(Array) #5 /home/p/pikenebl/***/storage/modification/system/engine/action.php(79): call_user_func_array(Array, Array) #6 /home/p/pikenebl/***/storage/modification/system/engine/loader.php(48): Action->execute(Object(Registry), Array) #7 /home/p/pikenebl/***/public_html/catalog/controller/common/h in /home/p/pikenebl/***/public_html/catalog/controller/extension/module/lazyfilter.php on line 54 в файле по на этой строке находиться $this->registry->set('ocfilter', new OCFilter($this->registry)); что является частью цикла if (!$cached || (empty($data['lazyfilter_data']))) { $ocf_settings = $this->getSetting('module_ocfilter'); $ocf_settings['mode'] = 'vertical'; $this->load->model('catalog/category'); $categories = []; if (isset($this->request->get['path']) && $data['sub_show']) { $path = explode('_', $this->request->get['path']); $category_id = end($path); $categories = $this->model_catalog_category->getCategories($category_id); } else { $results = $this->config->get('module_lazyfilter_categories'); foreach ($results as $value) { $category_id = (int) $value; $categories[$category_id] = $this->model_catalog_category->getCategory($category_id); } } if (empty($categories)) { return; } foreach ($categories as $category_data) { $category_id = (int) $category_data['category_id']; $this->request->get['path'] = $category_id; $this->registry->set('ocfilter', new OCFilter($this->registry)); $ocfilter_data = $this->load->controller('extension/module/ocfilter', $ocf_settings); unset($this->request->get['path']); $ocfilter_data = str_replace('#ocfilter', '#ocfilter-' . $category_id, $ocfilter_data); $ocfilter_data = str_replace('id="ocfilter', 'id="ocfilter-' . $category_id, $ocfilter_data); $data['lazyfilter_data'][$category_id] = [ 'category_data' => $category_data, 'filter_data' => $ocfilter_data, ]; } if ($cached) { $this->cache->set('module.lazyfilter', $data['lazyfilter_data']); } } $this->load->language('extension/module/lazyfilter'); return $this->load->view('extension/module/lazyfilter', $data); когда я комментирую строку $this->registry->set('ocfilter', new OCFilter($this->registry)); и путь на главной указан "чистый"(просто доменное имя), то во вкладках фильтр показывается, но только 1 категория на всех вкладках сначала я грешил на то, что нет нужных данных в массиве ($this->registry), но после более внимательного просмотра логов ошибок, я понял что проблема в отсутствии класса OCFilter может кто подкинуть идей в какой стороне надо смотреть? PS разработчик надстройки, молчит как партизан на допросе Спасибо
-
Приветствую Не силен в php, делаю методом проб и ошибок получение инфо о товаре по api, прошу помощи есть запрос $this->db->query("SELECT product_id FROM `" . DB_PREFIX . "product` WHERE `model` LIKE $model"); получаю {"num_rows":1,"row":{"product_id":"317"},"rows":[{"product_id":"317"}]} из этого нужно взять только 317 чтобы получился рабочий код: $model = $this->request->get['model']; $product_id = [----] $this->db->query("SELECT product_id FROM `" . DB_PREFIX . "product` WHERE `model` LIKE $model"); $product_info = $this->model_catalog_product->getProduct($product_id);
-
Как вывести подкатегории 3го уровня в osstore 2.3? На сайте установлен модуль для вывода категорий "Категории_KSL". Помогите, пожалуйста, его переписать, чтобы можно было выводить категории 3го уровня.
-
Добрый день, нужен бесстрашный специалист для доработки и исправления ошибок в ocStore 2.3.0.2.3 В карте сайта для контента на русском языке исправить вывод ссылки (добавить ru/ после домена) В модуле генератора фидов для контента на русском языке исправить вывод ссылки (добавить ru/ после домена) Убрать вывод дублей постов с категорией в карте сайта блога, продублировать ссылки с ru/ Исправить чпу для пагинации, тегов и сортировки Настроить корректную передачу целей/событий в расширенную эл.коммерцию гугл аналитикс Подробнное ТЗ тут https://docs.google.com/document/d/13SdbXH3r7weAnsWb4Jq-CzXjcCE_hzhnAeZzcSSZX6k/edit?usp=sharing Важно! При работе не в коем случае не переключать движок чпу с СЕО ПРО на стандартный. Задачи не сложные, думаю за день можно справится не напрягаясь для опытного разработчика. Ставить модули не предлагать. По окончанию работы предоставить список затронутых файлов. Жду ваши предложения.
- 1 reply
-
- javascript
- php
- (and 4 more)
-
Приветствую форумчане. Такая проблема, пытаюсь выполнить ajax запрос, суть которого отправить некоторые данные с домена: a.com на b.com и соответственно получить ответ от b.com с целью дальнейшей его обработки в скрипте на a.com Оба домена находятся на OpenServer на локальной машине, то есть у меня есть контроль над http://b.com/ и я могу прописать в php файле необходимые настройки. Однако при попытке выполнить ajax запрос получаю ошибку: jquery-3.6.0.min.js:2 Cross-Origin Read Blocking (CORB) blocked cross-origin response http://b.com/?callback=jQuery360001053556176974424_1630579545897&_=1630579545898 with MIME type application/json. See https://www.chromestatus.com/feature/5629709824032768 for more details. Аналогичную ситуацию имею на хостинге уже на реальных доменах. При этом данные c a.com на b.com в php скрипт все же попадают, однако, мне не удается добиться чтения ответа на домене a.com. Что характерно в сети есть по меньшей мере один домен с которого таки удается получить данные таким способом. Если вместо b.com подставить страницу: https://jsonplaceholder.typicode.com/todos/1 то в этом случае получаю ответ: {userId: 1, id: 1, title: "delectus aut autem", completed: false} Однако же добиться аналогичного эффекта на домене под собственным контролем я не могу. Пробовал в js указывать crossDomain: true, на стороне php пробовал указывать различные заголовки по типу: header('content-type: application/json'); и тому подобное... пробовал даже скопировать из браузера заголовки которые отдает сайт https://jsonplaceholder.typicode.com/todos/1 и подставить их в php файл через тот же header() однако ничего не выходит. Подскажите куда копать? Вопрос вроде плевый, но сколько не пытаюсь ничего не получается. Ниже код js: <script> //Первый вариант на jQuery: $(document).ready(function(){ $.ajax({ url: "http://b.com", crossDomain: true, dataType: "jsonp", success: function( response ) { console.log(response); } }); }); </script> <script> //Второй вариант на чистом js: function receiver(data){ console.log(data); } </script> <script src="http://b.com/?callback=receiver"></script> код php: <?php header('content-type: application/json'); header('Access-Control-Allow-Origin: http://a.com'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); echo '{"foo":"bar"}'; ?>
- 3 replies
-
- php
- openserver
-
(and 3 more)
Tagged with:
-
Подскажите лучший способ как c помощью php спарсить кусок кода, отвечающий за вывод блока товара, из файла шаблона product/category.twig По идее, нужно спарсить все что находится внутри цикла {% for product in products %} и записать этот код в отдельный файл, чтобы потом подключать его через include в других шаблонах. Изначально получаю код файла и записыю в переменную: $content = file_get_contents(DIR_CATALOG . 'view/theme/'.$this->config->get('config_theme').'/template/product/category.twig'); А дальше регулярку писать или есть другие варианты? Если регулярка, то помогите составить выражение. Спасибо всем, кто отзовется!
-
Подскажите пожалуйста как в opencart 3 в стандартном (базовом) модуле featured вывести опции товаров В файл: modification\catalog\controller\extension\module\featured.php добавил код: $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { if($option['required']){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] >= 0)) { $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'quantity' => $option_value['quantity'], 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } } Также в $data['products'][] = array( добавил: 'options' => $options, Для вывода в файле: template\extension\module\featured.twig в карточку товара добавил код: {% if product.options %} {% for option in product.options %} {% if option.type == 'radio' %} <div class="groupOptionWrap {% if option.required %} required {% endif %}"> <div id="input-option{{ option.product_option_id }}" class='groupOptionElements'> {% for option_value in option.product_option_value %} {% if option_value.quantity == "0" %} <div class="groupOption groupOptionDisable"> {{ option_value.name }} </div> {% else %} <div class="groupOption"> {{ option_value.name }} </div> {% endif %} {% endfor %} </div> </div> {% endif %} {% endfor %} {% endif %} Но это не сработало, просьба подсказать, если кто знает рабочий вариант Весь код данного модуля: <?php class ControllerExtensionModuleFeatured extends Controller { public function index($setting) { $this->load->language('extension/module/notify_when_available'); $data['text_out_of_stock'] = $this->language->get('text_out_of_stock'); $data['out_of_stock_show'] = $this->config->get('module_notify_when_available_stock'); $data['out_of_stock_notify'] = $this->config->get('module_notify_when_available_notify'); $this->load->language('extension/module/featured'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['products'] = array(); if (!$setting['limit']) { $setting['limit'] = 4; } if (!empty($setting['product'])) { $lang = $this->config->get('config_language_id'); $title = isset($setting['titles']['title'.$lang]) && $setting['titles']['title'.$lang] ? $setting['titles']['title'.$lang] : ''; if (isset($title) && $title) { $data['heading_title'] = $title; } if (isset($setting['shuffle']) && $setting['shuffle']) { shuffle($setting['product']); } $products = array_slice($setting['product'], 0, (int)$setting['limit']); foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if ($product_info['image']) { $image = $this->model_tool_image->resize($product_info['image'], $setting['width'], $setting['height']); } else { $image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); $data['priceInt'] = $this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')); } else { $price = false; } $specialSavings =0; if ((float)$product_info['special']) { $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); $data['specialInt'] = $this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')); $data['specialSavings'] = round((($data['priceInt']-$data['specialInt'])/$data['priceInt'])*100, 2); $specialSavings = $data['specialSavings']; } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } $options = array(); foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { if($option['required']){ $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] >= 0)) { $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'quantity' => $option_value['quantity'], 'price_prefix' => $option_value['price_prefix'] ); } } $options[] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } } $data['products'][] = array( 'product_id' => $product_info['product_id'], 'quantity' => $result['quantity'], 'quantity' => $product_info['quantity'], 'quantity' => isset($result['quantity']) ? $result['quantity'] : (isset($product_info['quantity']) ? $product_info['quantity'] : 1), 'attribute_groups' => $this->model_catalog_product->getProductAttributes($product_info['product_id']), 'thumb' => $image, 'name' => $product_info['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'specialSavings' => $specialSavings, 'tax' => $tax, 'rating' => $rating, 'options' => $options, 'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']) );
- 12 replies
-
- php
- opencart 3x
-
(and 2 more)
Tagged with:
-
В контроллере я добавила функцию и попыталась html с данными из view сделать pdf, но ничего не выходит. Подскажите что я делаю не так? public function pdf_invoice($html){ $dompdf = new Dompdf(); $dompdf->loadHtml($html, 'UTF-8'); $dompdf->setPaper('A4', 'portrait'); $dompdf->render(); // Вывод файла в браузер: $dompdf->stream('my.pdf',array('Attachment'=>0)); } public function index() { ... $this->pdf_invoice($this->load->view('extension/payment/invoice', $data)); }
-
Добрый день! установил модуль с многоуровневыми категориями, поэтому модуль, который скрывает пустые категории не действует на этот модуль. Но то что не скрываются пустые категории это ещё ладно. Просто при переходе на пустую категорию выдаёт ошибку (Фото 1) и ссылается на этот код (Фото 2) Подскажите пожалуйста, что в этом коде не так? И буду благодарен если подскажите как скрыть пустые категории в этом модуле. Модуль с многоуровневыми категориями, скачивал вот здесь:
-
Есть размерная сетка на opencart 2.3, ее нужно повторить но уже на opencart 3: на двойке она сделана на чистом php в tpl файле (product.tpl), но opencart 3 поддерживает только twig формат, поэтому скопировать просто php код на тройку не получится (product.twig) Вот код на opencart 2.3: <table> <?php $s1 = array(); $s2 = array(); $arr = array(); foreach ($option['product_option_value'] as $option_value) { list($a, $b) = explode("x", $option_value['name']); $s1[] = intval($a); $s2[] = intval($b); $arr[intval($a)][] = array(intval($b), $option_value['product_option_value_id']); } $id = $option['product_option_id']; $s1 = array_unique($s1); rsort($s1); $s2 = array_unique($s2); sort($s2); foreach ($s1 as &$value) { echo "<tr>"; echo "<td>".$value."</td>"; foreach ($s2 as &$value2) { echo "<td>"; $p = false; foreach ($arr[$value] as &$value3) { if($value3[0] == $value2){ $p = true; $val = $value3[1]; } } if ($p) { echo "<label><input type='radio' name='option[".$id."][]' value='".$val."' required /><span class='stock' val='".$val."' name ='".$value."x".$value2."' vid='".$id."'></span></label>"; } else{ echo "<span class='out-stock'></span>"; } echo "</td>"; } echo "</tr>"; } echo "<tr><td></td>"; foreach ($s2 as &$value) { echo "<td>".$value."</td>"; } echo "</tr>"; ?> </table> В админке опции прописаны вот так: 170x52, 170x54, 170x60, 176x52, 176x54, 176x60, 182x52, 182x54, 182x60 (пример) Пытался воспользоваться онлайн сервисом http://phptotwig.com/ , но выдает ошибку на строке с explode Пытался адаптировать сам этот код под твиг, но опыта в этом мало, вот что получилось: <table> <tbody> {% for option_value in option.product_option_value %} <tr> <td>{{ option_value.name | split('x', 2)[0] }}</td> <td><label><input type="radio" name="option[{{ option.product_option_id }}][]" value="{{ option_value.product_option_value_id }}" required=""><span class="stock" val="{{ option_value.product_option_value_id }}" name="{{ option_value.name }}" vid="402"></span></label></td> </tr> {% endfor %} <tr> <td></td> {% for option_value in option.product_option_value %} <td>{{ option_value.name | split('x', 2)[1] }}</td> {% endfor %} </tr> </tbody> </table> Может есть модуль для такой сетки? Или лучше уже допилить код? Подскажите, пожалуйста, в какую сторону нужно копать.
- 1 reply
-
- twig
- opencart 3
-
(and 3 more)
Tagged with:
-
Нужно настроить синхронизировать 1С с сайтом на OcStore 2.3 двусторонней связью. Заказы с сайта должны выгружаться в 1С и реализовываться продукция. Наличие с 1С должно подтягиваться на сайт. 1С заполнено номенклатурой частично, то есть, нужно догрузить недостающую номенклатуру с сайта в 1с по такой же структуре. Версия 1С: https://prnt.sc/12l2sc4
- 1 reply
-
- 1с предприятие
- 1с 8.x
-
(and 3 more)
Tagged with: