NeoSeo Team Опубликовано: 25 марта 2020 Опубликовано: 25 марта 2020 1 час назад, Sliapy сказал: Добрый день. Пытаюсь настроить cron, но при выполнении задания получаю root:/var/www/www-root/data/www/___/cron/# php /var/www/www-root/data/www/___/cron/neoseo_product_feed.php Site error: the ionCube PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking. Please visit get-loader.ioncube.com for install assistance. На сервере установлен PHP 5.6.40 и ionCube 10.3.2. Сам модуль в админ. панели работает и настраивается нормально. Добрый день, Нужно смотреть под той ли версией запускается кроновская задача. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NeoSeo Team Опубликовано: 25 марта 2020 Опубликовано: 25 марта 2020 3 часа назад, Rost сказал: Добрый день. Как прописать категории гугл для товаров? Они не совпадают с категориями на сайте Спасибо Добрый день, нужно использовать альтернативные категории. https://neoseo.com.ua/nastroyka-modulya-neoseo-vygruzka-na-prays-agregatory#7 — здесь указано как это сделать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sliapy Опубликовано: 25 марта 2020 Опубликовано: 25 марта 2020 1 минуту назад, NeoSeo Team сказал: Добрый день, Нужно смотреть под той ли версией запускается кроновская задача. Как я могу это сделать? Я пробовал запускать задание конкретно от той версии PHP, на которой работает сайт /opt/php56/bin/php /var/www/www-root/data/www/__/cron/neoseo_product_feed.php Но тогда получаю уже другую ошибку root# /opt/php56/bin/php /var/www/www-root/data/www/-/cron/neoseo_product_feed.php PHP Fatal error: The license file /var/www/www-root/data/www/-/neoseo_product_feed_license.txt for /var/www/www-root/data/www/-/catalog/model/feed/neoseo_product_feed.php is not valid for this server. in Unknown on line 0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NeoSeo Team Опубликовано: 25 марта 2020 Опубликовано: 25 марта 2020 3 часа назад, Sliapy сказал: Как я могу это сделать? Я пробовал запускать задание конкретно от той версии PHP, на которой работает сайт /opt/php56/bin/php /var/www/www-root/data/www/__/cron/neoseo_product_feed.php Но тогда получаю уже другую ошибку root# /opt/php56/bin/php /var/www/www-root/data/www/-/cron/neoseo_product_feed.php PHP Fatal error: The license file /var/www/www-root/data/www/-/neoseo_product_feed_license.txt for /var/www/www-root/data/www/-/catalog/model/feed/neoseo_product_feed.php is not valid for this server. in Unknown on line 0 С модулем идет файл system_test.php - пропишите так http://ВАШ ДОМЕН/system_test.php - здесь Вы можете проверить Вашу версию php. Но правильно это обратится к Вашему хостеру - они должны подсказать как правильно формировать ссылку для крон, помимо верного пути к php часто требуется ещё указать путь к файлу php.ini Вашего проекта Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mike555 Опубликовано: 26 марта 2020 Опубликовано: 26 марта 2020 23.03.2020 в 12:49, NeoSeo Team сказал: Попробуйте внутри так {% if attribute.name == "цвет" %} <g:color>{attribute.value}</g:color> {% endif %} и это не помогло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NeoSeo Team Опубликовано: 26 марта 2020 Опубликовано: 26 марта 2020 4 часа назад, mike555 сказал: и это не помогло. Обратитесь к нам на почту мы Вам можем помочь с настройкой на платной основе. Требуется провести тестирование в Вашем проекте доработки. Так же заметил ошибку <g:color>{attribute.value}</g:color> - попробуйте <g:color>{{ attribute.value }}</g:color> Как и писали выше - для редактирования Вам требуется иметь минимальные знания синтаксиса twig https://dev-gang.ru/doc/twig/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
newkids.com.ua Опубликовано: 27 марта 2020 Опубликовано: 27 марта 2020 25.02.2020 в 10:11, NeoSeo Team сказал: В таком случае Вам потребуется какое то сравнение\условие, то есть те товары что Вам нужно проставить скидку нужно отловить например по id товару, но это будет сильно громоздко, если Вам к примеру потребуется 100 товаров поставить скидку. Если у Вас последняя версия модуля, у Вас есть возможность в настройках экспорта указать наценку или скидку . По поводу разделение - на одни товары скидку на другие нет, возможно Вам стоит разделить на две отдельные выгрузки? Если Ваш сервис который забирает данные файлы такое позволяет Добрый день! у меня 4 товара. Какую формулу вставить для 4 товаров, чтобы участвовало в промо? Цена на товар В списке товаров, которые могут принимать участие в акциях, в столбце "Необходимая промо цена, грн." для каждого товара, которая может быть прописана в теге <price_promo>. Вы должны поставить цену равную или ниже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Bogdan Опубликовано: 28 марта 2020 Опубликовано: 28 марта 2020 Здравствуйте ! Проблема при выгрузке в Пром.юа А именно: "Модель товара" не выгружается с опенкарта, и не выгружаются с опенкарта "Поисковые запросы" что делать ? И можно ли настроить что бы пром юа графу "артикул" вписывал с значения в опенкарта "модель товара" ? (дело в том что в опенкарте "модель товара" у меня стоит складской номер ) ну а если нет то хоть как то сделать что бы пром юа отображал складской номер. И подскажите от куда пром берет "Поисковые запросы" ??? можно сделать что бы брал с поля "HTML-тег Title" или "Мета-тег Description:" в опенкарте ( а то приходится ключевые слова вписывать в опенкарте а потом тоже самое делать в проме.) Я расчитывал если я покупаю этот модуль все это должно работать сразу после установки и стандартной настройке и не тратить свое время на исправления в кодеровке.. За ранее спасибо за помощь ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NeoSeo Team Опубликовано: 30 марта 2020 Опубликовано: 30 марта 2020 27.03.2020 в 12:25, newkids.com.ua сказал: Добрый день! у меня 4 товара. Какую формулу вставить для 4 товаров, чтобы участвовало в промо? Цена на товар В списке товаров, которые могут принимать участие в акциях, в столбце "Необходимая промо цена, грн." для каждого товара, которая может быть прописана в теге <price_promo>. Вы должны поставить цену равную или ниже. Добавьте проверку по offer.id и укажите в условиях какие именно выводить. Для примера {% if offer.id == 15 or offer.id == 16%}<price_promo>Поле которое нужно вывести</price_promo>{% endif%} такого вида можно сделать 28.03.2020 в 16:19, Bogdan сказал: Здравствуйте ! Проблема при выгрузке в Пром.юа А именно: "Модель товара" не выгружается с опенкарта, и не выгружаются с опенкарта "Поисковые запросы" что делать ? И можно ли настроить что бы пром юа графу "артикул" вписывал с значения в опенкарта "модель товара" ? Можете использовать поле {{offer.model}} в нужном Вам месте. Отредактируйте формат и выведите вместо артикула данное поле 28.03.2020 в 16:19, Bogdan сказал: И подскажите от куда пром берет "Поисковые запросы" ??? можно сделать что бы брал с поля "HTML-тег Title" или "Мета-тег Description:" в опенкарте Из данной таблицы все поля не доступны. В модуле есть таб с доступными полями, а также возможность выводить все поля таблицы product в таком виде {{offer.mpn}} где вместо mpn можно брать любое поле из таблицы. 28.03.2020 в 16:19, Bogdan сказал: Я расчитывал если я покупаю этот модуль все это должно работать сразу после установки и стандартной настройке и не тратить свое время на исправления в кодеровке.. Модуль поставляется как есть, перед использованием вы можете взять тестовую лицензию и все проверить. В данном случае у Вас не отображаются доп.поля под требования площадок, которые настраиваются через редактирования формата. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Roumek Опубликовано: 30 марта 2020 Опубликовано: 30 марта 2020 Здравствуйте, не открывается страница "Связи мультиэкспорта" белый экран. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Bogdan Опубликовано: 31 марта 2020 Опубликовано: 31 марта 2020 19 часов назад, NeoSeo Team сказал: Добавьте проверку по offer.id и укажите в условиях какие именно выводить. Для примера {% if offer.id == 15 or offer.id == 16%}<price_promo>Поле которое нужно вывести</price_promo>{% endif%} такого вида можно сделать Можете использовать поле {{offer.model}} в нужном Вам месте. Отредактируйте формат и выведите вместо артикула данное поле Из данной таблицы все поля не доступны. В модуле есть таб с доступными полями, а также возможность выводить все поля таблицы product в таком виде {{offer.mpn}} где вместо mpn можно брать любое поле из таблицы. Модуль поставляется как есть, перед использованием вы можете взять тестовую лицензию и все проверить. В данном случае у Вас не отображаются доп.поля под требования площадок, которые настраиваются через редактирования формата. "Из данной таблицы все поля не доступны. В модуле есть таб с доступными полями, а также возможность выводить все поля таблицы product в таком виде {{offer.mpn}} где вместо mpn можно брать любое поле из таблицы." В проме при импорте есть настройки где указыватся галочкой что бы импортировать поисковые запросы description но после импорта он попадает в описание. как сделать чтобы дискрипшен на опенкарте попадал в поиковый запрос прома Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NeoSeo Team Опубликовано: 31 марта 2020 Опубликовано: 31 марта 2020 1 минуту назад, Bogdan сказал: "Из данной таблицы все поля не доступны. В модуле есть таб с доступными полями, а также возможность выводить все поля таблицы product в таком виде {{offer.mpn}} где вместо mpn можно брать любое поле из таблицы." В проме при импорте есть настройки где указыватся галочкой что бы импортировать поисковые запросы description но после импорта он попадает в описание. как сделать чтобы дискрипшен на опенкарте попадал в поиковый запрос прома Добрый день. Уточняете на проме в какой тег выводить данное поле и в формате указываете данный тег и выводите в него описание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NeoSeo Team Опубликовано: 31 марта 2020 Опубликовано: 31 марта 2020 13 часов назад, Roumek сказал: Здравствуйте, не открывается страница "Связи мультиэкспорта" белый экран. Добрый день. Смотрите лог ошибок сервера, скорее всего там какая-то ошибка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Roumek Опубликовано: 1 апреля 2020 Опубликовано: 1 апреля 2020 31.03.2020 в 09:44, NeoSeo Team сказал: Добрый день. Смотрите лог ошибок сервера, скорее всего там какая-то ошибка. Есть такая ошибка http://prntscr.com/rqnanq NOT FOUND! CODE: $data['product_categories'] = FILE: admin/controller/catalog/product.php MOD: NeoSeo Product Feed Файл admin/controller/catalog/product.php что и где нужно добавить? <?php class ControllerCatalogProduct extends Controller { private $error = array(); public function index() { $this->load->language('catalog/product'); $this->document->setTitle($this->language->get('heading_title')); $this->load->model('catalog/product'); $this->getList(); } public function add() { $this->load->language('catalog/product'); $this->document->setTitle($this->language->get('heading_title')); $this->load->model('catalog/product'); if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { $this->model_catalog_product->addProduct($this->request->post); $this->session->data['success'] = $this->language->get('text_success'); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_model'])) { $url .= '&filter_model=' . urlencode(html_entity_decode($this->request->get['filter_model'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_price'])) { $url .= '&filter_price=' . $this->request->get['filter_price']; } if (isset($this->request->get['filter_quantity'])) { $url .= '&filter_quantity=' . $this->request->get['filter_quantity']; } if (isset($this->request->get['filter_category'])) { $url .= '&filter_category=' . $this->request->get['filter_category']; } if (isset($this->request->get['filter_status'])) { $url .= '&filter_status=' . $this->request->get['filter_status']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } $this->response->redirect($this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, true)); } $this->getForm(); } public function edit() { $this->load->language('catalog/product'); $this->document->setTitle($this->language->get('heading_title')); $this->load->model('catalog/product'); if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { $this->model_catalog_product->editProduct($this->request->get['product_id'], $this->request->post); $this->session->data['success'] = $this->language->get('text_success'); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_model'])) { $url .= '&filter_model=' . urlencode(html_entity_decode($this->request->get['filter_model'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_price'])) { $url .= '&filter_price=' . $this->request->get['filter_price']; } if (isset($this->request->get['filter_quantity'])) { $url .= '&filter_quantity=' . $this->request->get['filter_quantity']; } if (isset($this->request->get['filter_category'])) { $url .= '&filter_category=' . $this->request->get['filter_category']; } if (isset($this->request->get['filter_status'])) { $url .= '&filter_status=' . $this->request->get['filter_status']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } $this->response->redirect($this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, true)); } $this->getForm(); } public function delete() { $this->load->language('catalog/product'); $this->document->setTitle($this->language->get('heading_title')); $this->load->model('catalog/product'); if (isset($this->request->post['selected']) && $this->validateDelete()) { foreach ($this->request->post['selected'] as $product_id) { $this->model_catalog_product->deleteProduct($product_id); } $this->session->data['success'] = $this->language->get('text_success'); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_model'])) { $url .= '&filter_model=' . urlencode(html_entity_decode($this->request->get['filter_model'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_price'])) { $url .= '&filter_price=' . $this->request->get['filter_price']; } if (isset($this->request->get['filter_quantity'])) { $url .= '&filter_quantity=' . $this->request->get['filter_quantity']; } if (isset($this->request->get['filter_category'])) { $url .= '&filter_category=' . $this->request->get['filter_category']; } if (isset($this->request->get['filter_status'])) { $url .= '&filter_status=' . $this->request->get['filter_status']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } $this->response->redirect($this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, true)); } $this->getList(); } public function copy() { $this->load->language('catalog/product'); $this->document->setTitle($this->language->get('heading_title')); $this->load->model('catalog/product'); if (isset($this->request->post['selected']) && $this->validateCopy()) { foreach ($this->request->post['selected'] as $product_id) { $this->model_catalog_product->copyProduct($product_id); } $this->session->data['success'] = $this->language->get('text_success'); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_model'])) { $url .= '&filter_model=' . urlencode(html_entity_decode($this->request->get['filter_model'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_price'])) { $url .= '&filter_price=' . $this->request->get['filter_price']; } if (isset($this->request->get['filter_quantity'])) { $url .= '&filter_quantity=' . $this->request->get['filter_quantity']; } if (isset($this->request->get['filter_category'])) { $url .= '&filter_category=' . $this->request->get['filter_category']; } if (isset($this->request->get['filter_status'])) { $url .= '&filter_status=' . $this->request->get['filter_status']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } $this->response->redirect($this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, true)); } $this->getList(); } protected function getList() { if (isset($this->request->get['filter_name'])) { $filter_name = $this->request->get['filter_name']; } else { $filter_name = null; } if (isset($this->request->get['filter_model'])) { $filter_model = $this->request->get['filter_model']; } else { $filter_model = null; } if (isset($this->request->get['filter_price'])) { $filter_price = $this->request->get['filter_price']; } else { $filter_price = null; } if (isset($this->request->get['filter_quantity'])) { $filter_quantity = $this->request->get['filter_quantity']; } else { $filter_quantity = null; } if (isset($this->request->get['filter_category'])) { $filter_category = $this->request->get['filter_category']; } else { $filter_category = NULL; } if (isset($this->request->get['filter_status'])) { $filter_status = $this->request->get['filter_status']; } else { $filter_status = null; } if (isset($this->request->get['filter_image'])) { $filter_image = $this->request->get['filter_image']; } else { $filter_image = null; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'pd.name'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_category'])) { $url .= '&filter_category=' . urlencode(html_entity_decode($this->request->get['filter_category'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_model'])) { $url .= '&filter_model=' . urlencode(html_entity_decode($this->request->get['filter_model'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_price'])) { $url .= '&filter_price=' . $this->request->get['filter_price']; } if (isset($this->request->get['filter_quantity'])) { $url .= '&filter_quantity=' . $this->request->get['filter_quantity']; } if (isset($this->request->get['filter_status'])) { $url .= '&filter_status=' . $this->request->get['filter_status']; } if (isset($this->request->get['filter_image'])) { $url .= '&filter_image=' . $this->request->get['filter_image']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true) ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, true) ); $data['add'] = $this->url->link('catalog/product/add', 'token=' . $this->session->data['token'] . $url, true); $data['copy'] = $this->url->link('catalog/product/copy', 'token=' . $this->session->data['token'] . $url, true); $data['delete'] = $this->url->link('catalog/product/delete', 'token=' . $this->session->data['token'] . $url, true); $data['products'] = array(); $filter_data = array( 'filter_name' => $filter_name, 'filter_model' => $filter_model, 'filter_price' => $filter_price, 'filter_quantity' => $filter_quantity, 'filter_category' => $filter_category, 'filter_status' => $filter_status, 'filter_image' => $filter_image, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $this->config->get('config_limit_admin'), 'limit' => $this->config->get('config_limit_admin') ); $this->load->model('tool/image'); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); $this->load->model('catalog/category'); $filter_data = array( 'sort' => 'name', 'order' => 'ASC' ); $data['categories'] = $this->model_catalog_category->getCategories($filter_data); foreach ($results as $result) { $category = $this->model_catalog_product->getProductCategories($result['product_id']); if (is_file(DIR_IMAGE . $result['image'])) { $image = $this->model_tool_image->resize($result['image'], 40, 40); } else { $image = $this->model_tool_image->resize('no_image.png', 40, 40); } $special = false; $product_specials = $this->model_catalog_product->getProductSpecials($result['product_id']); foreach ($product_specials as $product_special) { if (($product_special['date_start'] == '0000-00-00' || strtotime($product_special['date_start']) < time()) && ($product_special['date_end'] == '0000-00-00' || strtotime($product_special['date_end']) > time())) { $special = $product_special['price']; break; } } $data['products'][] = array( 'product_id' => $result['product_id'], 'image' => $image, 'name' => $result['name'], 'model' => $result['model'], 'price' => $result['price'], 'category' => $category, 'special' => $special, 'quantity' => $result['quantity'], 'status' => $result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled'), 'edit' => $this->url->link('catalog/product/edit', 'token=' . $this->session->data['token'] . '&product_id=' . $result['product_id'] . $url, true) ); } $data['heading_title'] = $this->language->get('heading_title'); $data['text_list'] = $this->language->get('text_list'); $data['text_enabled'] = $this->language->get('text_enabled'); $data['text_disabled'] = $this->language->get('text_disabled'); $data['text_no_results'] = $this->language->get('text_no_results'); $data['text_confirm'] = $this->language->get('text_confirm'); $data['column_image'] = $this->language->get('column_image'); $data['column_name'] = $this->language->get('column_name'); $data['column_category'] = $this->language->get('column_category'); $data['column_model'] = $this->language->get('column_model'); $data['column_price'] = $this->language->get('column_price'); $data['column_quantity'] = $this->language->get('column_quantity'); $data['column_status'] = $this->language->get('column_status'); $data['column_action'] = $this->language->get('column_action'); $data['entry_name'] = $this->language->get('entry_name'); $data['entry_model'] = $this->language->get('entry_model'); $data['entry_price'] = $this->language->get('entry_price'); $data['entry_quantity'] = $this->language->get('entry_quantity'); $data['entry_status'] = $this->language->get('entry_status'); $data['entry_image'] = $this->language->get('entry_image'); $data['button_copy'] = $this->language->get('button_copy'); $data['button_add'] = $this->language->get('button_add'); $data['button_edit'] = $this->language->get('button_edit'); $data['button_delete'] = $this->language->get('button_delete'); $data['button_filter'] = $this->language->get('button_filter'); $data['token'] = $this->session->data['token']; if (isset($this->error['warning'])) { $data['error_warning'] = $this->error['warning']; } else { $data['error_warning'] = ''; } if (isset($this->session->data['success'])) { $data['success'] = $this->session->data['success']; unset($this->session->data['success']); } else { $data['success'] = ''; } if (isset($this->request->post['selected'])) { $data['selected'] = (array)$this->request->post['selected']; } else { $data['selected'] = array(); } $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_model'])) { $url .= '&filter_model=' . urlencode(html_entity_decode($this->request->get['filter_model'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_price'])) { $url .= '&filter_price=' . $this->request->get['filter_price']; } if (isset($this->request->get['filter_quantity'])) { $url .= '&filter_quantity=' . $this->request->get['filter_quantity']; } if (isset($this->request->get['filter_category'])) { $url .= '&filter_category=' . $this->request->get['filter_category']; } if (isset($this->request->get['filter_status'])) { $url .= '&filter_status=' . $this->request->get['filter_status']; } if (isset($this->request->get['filter_image'])) { $url .= '&filter_image=' . $this->request->get['filter_image']; } if ($order == 'ASC') { $url .= '&order=DESC'; } else { $url .= '&order=ASC'; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } $data['sort_name'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=pd.name' . $url, true); $data['sort_model'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.model' . $url, true); $data['sort_price'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.price' . $url, true); $data['sort_quantity'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.quantity' . $url, true); $data['sort_status'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.status' . $url, true); $data['sort_order'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.sort_order' . $url, true); $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_model'])) { $url .= '&filter_model=' . urlencode(html_entity_decode($this->request->get['filter_model'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_price'])) { $url .= '&filter_price=' . $this->request->get['filter_price']; } if (isset($this->request->get['filter_quantity'])) { $url .= '&filter_quantity=' . $this->request->get['filter_quantity']; } if (isset($this->request->get['filter_category'])) { $url .= '&filter_category=' . $this->request->get['filter_category']; } if (isset($this->request->get['filter_status'])) { $url .= '&filter_status=' . $this->request->get['filter_status']; } if (isset($this->request->get['filter_image'])) { $url .= '&filter_image=' . $this->request->get['filter_image']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $this->config->get('config_limit_admin'); $pagination->url = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url . '&page={page}', true); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_limit_admin')) > ($product_total - $this->config->get('config_limit_admin'))) ? $product_total : ((($page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $product_total, ceil($product_total / $this->config->get('config_limit_admin'))); $data['filter_name'] = $filter_name; $data['filter_model'] = $filter_model; $data['filter_price'] = $filter_price; $data['filter_quantity'] = $filter_quantity; $data['filter_category'] = $filter_category; $data['filter_status'] = $filter_status; $data['filter_image'] = $filter_image; $data['sort'] = $sort; $data['order'] = $order; $data['header'] = $this->load->controller('common/header'); $data['column_left'] = $this->load->controller('common/column_left'); $data['footer'] = $this->load->controller('common/footer'); $this->response->setOutput($this->load->view('catalog/product_list', $data)); } protected function getForm() { //CKEditor if ($this->config->get('config_editor_default')) { $this->document->addScript('view/javascript/ckeditor/ckeditor.js'); $this->document->addScript('view/javascript/ckeditor/ckeditor_init.js'); } else { $this->document->addScript('view/javascript/summernote/summernote.js'); $this->document->addScript('view/javascript/summernote/lang/summernote-' . $this->language->get('lang') . '.js'); $this->document->addScript('view/javascript/summernote/opencart.js'); $this->document->addStyle('view/javascript/summernote/summernote.css'); } $data['heading_title'] = $this->language->get('heading_title'); $data['text_form'] = !isset($this->request->get['product_id']) ? $this->language->get('text_add') : $this->language->get('text_edit'); $data['text_enabled'] = $this->language->get('text_enabled'); $data['text_disabled'] = $this->language->get('text_disabled'); $data['text_none'] = $this->language->get('text_none'); $data['text_yes'] = $this->language->get('text_yes'); $data['text_no'] = $this->language->get('text_no'); $data['text_plus'] = $this->language->get('text_plus'); $data['text_minus'] = $this->language->get('text_minus'); $data['text_default'] = $this->language->get('text_default'); $data['text_option'] = $this->language->get('text_option'); $data['text_option_value'] = $this->language->get('text_option_value'); $data['text_select'] = $this->language->get('text_select'); $data['text_percent'] = $this->language->get('text_percent'); $data['text_amount'] = $this->language->get('text_amount'); $data['text_select_all'] = $this->language->get('text_select_all'); $data['text_unselect_all'] = $this->language->get('text_unselect_all'); $data['entry_name'] = $this->language->get('entry_name'); $data['entry_description'] = $this->language->get('entry_description'); $data['entry_meta_title'] = $this->language->get('entry_meta_title'); $data['entry_meta_h1'] = $this->language->get('entry_meta_h1'); $data['entry_meta_description'] = $this->language->get('entry_meta_description'); $data['entry_meta_keyword'] = $this->language->get('entry_meta_keyword'); $data['entry_keyword'] = $this->language->get('entry_keyword'); $data['entry_model'] = $this->language->get('entry_model'); $data['entry_sku'] = $this->language->get('entry_sku'); $data['entry_upc'] = $this->language->get('entry_upc'); $data['entry_ean'] = $this->language->get('entry_ean'); $data['entry_jan'] = $this->language->get('entry_jan'); $data['entry_isbn'] = $this->language->get('entry_isbn'); $data['entry_mpn'] = $this->language->get('entry_mpn'); $data['entry_location'] = $this->language->get('entry_location'); $data['entry_minimum'] = $this->language->get('entry_minimum'); $data['entry_shipping'] = $this->language->get('entry_shipping'); $data['entry_date_available'] = $this->language->get('entry_date_available'); $data['entry_quantity'] = $this->language->get('entry_quantity'); $data['entry_stock_status'] = $this->language->get('entry_stock_status'); $data['entry_price'] = $this->language->get('entry_price'); $data['entry_tax_class'] = $this->language->get('entry_tax_class'); $data['entry_points'] = $this->language->get('entry_points'); $data['entry_option_points'] = $this->language->get('entry_option_points'); $data['entry_subtract'] = $this->language->get('entry_subtract'); $data['entry_weight_class'] = $this->language->get('entry_weight_class'); $data['entry_weight'] = $this->language->get('entry_weight'); $data['entry_dimension'] = $this->language->get('entry_dimension'); $data['entry_length_class'] = $this->language->get('entry_length_class'); $data['entry_length'] = $this->language->get('entry_length'); $data['entry_width'] = $this->language->get('entry_width'); $data['entry_height'] = $this->language->get('entry_height'); $data['entry_image'] = $this->language->get('entry_image'); $data['entry_additional_image'] = $this->language->get('entry_additional_image'); $data['entry_store'] = $this->language->get('entry_store'); $data['entry_manufacturer'] = $this->language->get('entry_manufacturer'); $data['entry_download'] = $this->language->get('entry_download'); $data['entry_category'] = $this->language->get('entry_category'); $data['entry_filter'] = $this->language->get('entry_filter'); $data['entry_related'] = $this->language->get('entry_related'); $data['entry_attribute'] = $this->language->get('entry_attribute'); $data['entry_text'] = $this->language->get('entry_text'); $data['entry_option'] = $this->language->get('entry_option'); $data['entry_option_value'] = $this->language->get('entry_option_value'); $data['entry_required'] = $this->language->get('entry_required'); $data['entry_sort_order'] = $this->language->get('entry_sort_order'); $data['entry_status'] = $this->language->get('entry_status'); $data['entry_date_start'] = $this->language->get('entry_date_start'); $data['entry_date_end'] = $this->language->get('entry_date_end'); $data['entry_priority'] = $this->language->get('entry_priority'); $data['entry_tag'] = $this->language->get('entry_tag'); $data['entry_customer_group'] = $this->language->get('entry_customer_group'); $data['entry_reward'] = $this->language->get('entry_reward'); $data['entry_layout'] = $this->language->get('entry_layout'); $data['entry_recurring'] = $this->language->get('entry_recurring'); $data['entry_main_category'] = $this->language->get('entry_main_category'); $data['help_keyword'] = $this->language->get('help_keyword'); $data['help_sku'] = $this->language->get('help_sku'); $data['help_upc'] = $this->language->get('help_upc'); $data['help_ean'] = $this->language->get('help_ean'); $data['help_jan'] = $this->language->get('help_jan'); $data['help_isbn'] = $this->language->get('help_isbn'); $data['help_mpn'] = $this->language->get('help_mpn'); $data['help_minimum'] = $this->language->get('help_minimum'); $data['help_manufacturer'] = $this->language->get('help_manufacturer'); $data['help_stock_status'] = $this->language->get('help_stock_status'); $data['help_points'] = $this->language->get('help_points'); $data['help_category'] = $this->language->get('help_category'); $data['help_filter'] = $this->language->get('help_filter'); $data['help_download'] = $this->language->get('help_download'); $data['help_related'] = $this->language->get('help_related'); $data['help_tag'] = $this->language->get('help_tag'); $data['button_view'] = $this->language->get('button_view'); $data['button_save'] = $this->language->get('button_save'); $data['button_cancel'] = $this->language->get('button_cancel'); $data['button_attribute_add'] = $this->language->get('button_attribute_add'); $data['button_option_add'] = $this->language->get('button_option_add'); $data['button_option_value_add'] = $this->language->get('button_option_value_add'); $data['button_discount_add'] = $this->language->get('button_discount_add'); $data['button_special_add'] = $this->language->get('button_special_add'); $data['button_image_add'] = $this->language->get('button_image_add'); $data['button_remove'] = $this->language->get('button_remove'); $data['button_recurring_add'] = $this->language->get('button_recurring_add'); $data['tab_general'] = $this->language->get('tab_general'); $data['tab_data'] = $this->language->get('tab_data'); $data['tab_attribute'] = $this->language->get('tab_attribute'); $data['tab_option'] = $this->language->get('tab_option'); $data['tab_recurring'] = $this->language->get('tab_recurring'); $data['tab_discount'] = $this->language->get('tab_discount'); $data['tab_special'] = $this->language->get('tab_special'); $data['tab_image'] = $this->language->get('tab_image'); $data['tab_links'] = $this->language->get('tab_links'); $data['tab_reward'] = $this->language->get('tab_reward'); $data['tab_design'] = $this->language->get('tab_design'); $data['tab_openbay'] = $this->language->get('tab_openbay'); if (isset($this->error['warning'])) { $data['error_warning'] = $this->error['warning']; } else { $data['error_warning'] = ''; } if (isset($this->error['name'])) { $data['error_name'] = $this->error['name']; } else { $data['error_name'] = array(); } if (isset($this->error['model'])) { $data['error_model'] = $this->error['model']; } else { $data['error_model'] = ''; } if (isset($this->error['keyword'])) { $data['error_keyword'] = $this->error['keyword']; } else { $data['error_keyword'] = ''; } $url = ''; if (isset($this->request->get['filter_name'])) { $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_model'])) { $url .= '&filter_model=' . urlencode(html_entity_decode($this->request->get['filter_model'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['filter_price'])) { $url .= '&filter_price=' . $this->request->get['filter_price']; } if (isset($this->request->get['filter_quantity'])) { $url .= '&filter_quantity=' . $this->request->get['filter_quantity']; } if (isset($this->request->get['filter_category'])) { $url .= '&filter_category=' . $this->request->get['filter_category']; } if (isset($this->request->get['filter_status'])) { $url .= '&filter_status=' . $this->request->get['filter_status']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true) ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, true) ); if (!isset($this->request->get['product_id'])) { $data['action'] = $this->url->link('catalog/product/add', 'token=' . $this->session->data['token'] . $url, true); } else { $data['action'] = $this->url->link('catalog/product/edit', 'token=' . $this->session->data['token'] . '&product_id=' . $this->request->get['product_id'] . $url, true); $data['product_page'] = HTTP_CATALOG.'index.php?route=product/product&product_id='.$this->request->get['product_id']; } $data['cancel'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, true); if (isset($this->request->get['product_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) { $product_info = $this->model_catalog_product->getProduct($this->request->get['product_id']); } $data['token'] = $this->session->data['token']; $data['ckeditor'] = $this->config->get('config_editor_default'); $this->load->model('localisation/language'); $data['languages'] = $this->model_localisation_language->getLanguages(); $data['lang'] = $this->language->get('lang'); if (isset($this->request->post['product_description'])) { $data['product_description'] = $this->request->post['product_description']; } elseif (isset($this->request->get['product_id'])) { $data['product_description'] = $this->model_catalog_product->getProductDescriptions($this->request->get['product_id']); } else { $data['product_description'] = array(); } if (isset($this->request->post['model'])) { $data['model'] = $this->request->post['model']; } elseif (!empty($product_info)) { $data['model'] = $product_info['model']; } else { $data['model'] = ''; } if (isset($this->request->post['sku'])) { $data['sku'] = $this->request->post['sku']; } elseif (!empty($product_info)) { $data['sku'] = $product_info['sku']; } else { $data['sku'] = ''; } if (isset($this->request->post['upc'])) { $data['upc'] = $this->request->post['upc']; } elseif (!empty($product_info)) { $data['upc'] = $product_info['upc']; } else { $data['upc'] = ''; } if (isset($this->request->post['ean'])) { $data['ean'] = $this->request->post['ean']; } elseif (!empty($product_info)) { $data['ean'] = $product_info['ean']; } else { $data['ean'] = ''; } if (isset($this->request->post['jan'])) { $data['jan'] = $this->request->post['jan']; } elseif (!empty($product_info)) { $data['jan'] = $product_info['jan']; } else { $data['jan'] = ''; } if (isset($this->request->post['isbn'])) { $data['isbn'] = $this->request->post['isbn']; } elseif (!empty($product_info)) { $data['isbn'] = $product_info['isbn']; } else { $data['isbn'] = ''; } if (isset($this->request->post['mpn'])) { $data['mpn'] = $this->request->post['mpn']; } elseif (!empty($product_info)) { $data['mpn'] = $product_info['mpn']; } else { $data['mpn'] = ''; } if (isset($this->request->post['location'])) { $data['location'] = $this->request->post['location']; } elseif (!empty($product_info)) { $data['location'] = $product_info['location']; } else { $data['location'] = ''; } if ($this->config->get('config_product_upc_hide') != 0) { $data['hide_upc'] = true; } else { $data['hide_upc'] = false; } if ($this->config->get('config_product_ean_hide') != 0) { $data['hide_ean'] = true; } else { $data['hide_ean'] = false; } if ($this->config->get('config_product_jan_hide') != 0) { $data['hide_jan'] = true; } else { $data['hide_jan'] = false; } if ($this->config->get('config_product_isbn_hide') != 0) { $data['hide_isbn'] = true; } else { $data['hide_isbn'] = false; } if ($this->config->get('config_product_mpn_hide') != 0) { $data['hide_mpn'] = true; } else { $data['hide_mpn'] = false; } $this->load->model('setting/store'); $data['stores'] = $this->model_setting_store->getStores(); if (isset($this->request->post['product_store'])) { $data['product_store'] = $this->request->post['product_store']; } elseif (isset($this->request->get['product_id'])) { $data['product_store'] = $this->model_catalog_product->getProductStores($this->request->get['product_id']); } else { $data['product_store'] = array(0); } if (isset($this->request->post['keyword'])) { $data['keyword'] = $this->request->post['keyword']; } elseif (!empty($product_info)) { $data['keyword'] = $product_info['keyword']; } else { $data['keyword'] = ''; } if (isset($this->request->post['shipping'])) { $data['shipping'] = $this->request->post['shipping']; } elseif (!empty($product_info)) { $data['shipping'] = $product_info['shipping']; } else { $data['shipping'] = 1; } if (isset($this->request->post['price'])) { $data['price'] = $this->request->post['price']; } elseif (!empty($product_info)) { $data['price'] = $product_info['price']; } else { $data['price'] = ''; } $this->load->model('catalog/recurring'); $data['recurrings'] = $this->model_catalog_recurring->getRecurrings(); if (isset($this->request->post['product_recurrings'])) { $data['product_recurrings'] = $this->request->post['product_recurrings']; } elseif (!empty($product_info)) { $data['product_recurrings'] = $this->model_catalog_product->getRecurrings($product_info['product_id']); } else { $data['product_recurrings'] = array(); } $this->load->model('localisation/tax_class'); $data['tax_classes'] = $this->model_localisation_tax_class->getTaxClasses(); if (isset($this->request->post['tax_class_id'])) { $data['tax_class_id'] = $this->request->post['tax_class_id']; } elseif (!empty($product_info)) { $data['tax_class_id'] = $product_info['tax_class_id']; } else { $data['tax_class_id'] = 0; } if (isset($this->request->post['date_available'])) { $data['date_available'] = $this->request->post['date_available']; } elseif (!empty($product_info)) { $data['date_available'] = ($product_info['date_available'] != '0000-00-00') ? $product_info['date_available'] : ''; } else { $data['date_available'] = date('Y-m-d'); } if (isset($this->request->post['quantity'])) { $data['quantity'] = $this->request->post['quantity']; } elseif (!empty($product_info)) { $data['quantity'] = $product_info['quantity']; } else { $data['quantity'] = 1; } if (isset($this->request->post['minimum'])) { $data['minimum'] = $this->request->post['minimum']; } elseif (!empty($product_info)) { $data['minimum'] = $product_info['minimum']; } else { $data['minimum'] = 1; } if (isset($this->request->post['subtract'])) { $data['subtract'] = $this->request->post['subtract']; } elseif (!empty($product_info)) { $data['subtract'] = $product_info['subtract']; } else { $data['subtract'] = 1; } if (isset($this->request->post['sort_order'])) { $data['sort_order'] = $this->request->post['sort_order']; } elseif (!empty($product_info)) { $data['sort_order'] = $product_info['sort_order']; } else { $data['sort_order'] = 1; } $this->load->model('localisation/stock_status'); $data['stock_statuses'] = $this->model_localisation_stock_status->getStockStatuses(); if (isset($this->request->post['stock_status_id'])) { $data['stock_status_id'] = $this->request->post['stock_status_id']; } elseif (!empty($product_info)) { $data['stock_status_id'] = $product_info['stock_status_id']; } else { $data['stock_status_id'] = 5; } if (isset($this->request->post['status'])) { $data['status'] = $this->request->post['status']; } elseif (!empty($product_info)) { $data['status'] = $product_info['status']; } else { $data['status'] = true; } if (isset($this->request->post['weight'])) { $data['weight'] = $this->request->post['weight']; } elseif (!empty($product_info)) { $data['weight'] = $product_info['weight']; } else { $data['weight'] = ''; } $this->load->model('localisation/weight_class'); $data['weight_classes'] = $this->model_localisation_weight_class->getWeightClasses(); if (isset($this->request->post['weight_class_id'])) { $data['weight_class_id'] = $this->request->post['weight_class_id']; } elseif (!empty($product_info)) { $data['weight_class_id'] = $product_info['weight_class_id']; } else { $data['weight_class_id'] = $this->config->get('config_weight_class_id'); } if (isset($this->request->post['length'])) { $data['length'] = $this->request->post['length']; } elseif (!empty($product_info)) { $data['length'] = $product_info['length']; } else { $data['length'] = ''; } if (isset($this->request->post['width'])) { $data['width'] = $this->request->post['width']; } elseif (!empty($product_info)) { $data['width'] = $product_info['width']; } else { $data['width'] = ''; } if (isset($this->request->post['height'])) { $data['height'] = $this->request->post['height']; } elseif (!empty($product_info)) { $data['height'] = $product_info['height']; } else { $data['height'] = ''; } $this->load->model('localisation/length_class'); $data['length_classes'] = $this->model_localisation_length_class->getLengthClasses(); if (isset($this->request->post['length_class_id'])) { $data['length_class_id'] = $this->request->post['length_class_id']; } elseif (!empty($product_info)) { $data['length_class_id'] = $product_info['length_class_id']; } else { $data['length_class_id'] = $this->config->get('config_length_class_id'); } $this->load->model('catalog/manufacturer'); $data['manufacturers'] = $this->model_catalog_manufacturer->getManufacturers(); if (isset($this->request->post['manufacturer_id'])) { $data['manufacturer_id'] = $this->request->post['manufacturer_id']; } elseif (!empty($product_info)) { $data['manufacturer_id'] = $product_info['manufacturer_id']; } else { $data['manufacturer_id'] = 0; } if (isset($this->request->post['manufacturer'])) { $data['manufacturer'] = $this->request->post['manufacturer']; } elseif (!empty($product_info)) { $manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($product_info['manufacturer_id']); if ($manufacturer_info) { $data['manufacturer'] = $manufacturer_info['name']; } else { $data['manufacturer'] = ''; } } else { $data['manufacturer'] = ''; } // Categories $this->load->model('catalog/category'); $filter_data = array( 'sort' => 'name', 'order' => 'ASC' ); $data['categories'] = $this->model_catalog_category->getCategories($filter_data); // Filters if (isset($this->request->post['main_category_id'])) { $data['main_category_id'] = $this->request->post['main_category_id']; } elseif (isset($product_info)) { $data['main_category_id'] = $this->model_catalog_product->getProductMainCategoryId($this->request->get['product_id']); } else { $data['main_category_id'] = 0; } if (isset($this->request->post['product_category'])) { $data['product_category'] = $this->request->post['product_category']; } elseif (isset($this->request->get['product_id'])) { $data['product_category'] = $this->model_catalog_product->getProductCategories($this->request->get['product_id']); } else { $data['product_category'] = array(); } $this->load->model('catalog/filter'); if (isset($this->request->post['product_filter'])) { $filters = $this->request->post['product_filter']; } elseif (isset($this->request->get['product_id'])) { $filters = $this->model_catalog_product->getProductFilters($this->request->get['product_id']); } else { $filters = array(); } $data["all_filters"] = array(); $filter_groups_data = array(); $filter_groups = $this->model_catalog_filter->getFilterGroups($filter_groups_data); foreach($filter_groups as $g){ $filter_group_info = $this->model_catalog_filter->getFilterDescriptions($g["filter_group_id"]); $afilters = array(); foreach($filter_group_info as $f){ $afilters[] = array( "filter_id" => $f["filter_id"], "filter_name" => $f["filter_description"][1]["name"], ); } $data["all_filters"][] = array( "filter_group_id" => $g["filter_group_id"], "filter_group_name" => $g["name"], "filters" => $afilters ); } $data['product_filters'] = array(); foreach ($filters as $filter_id) { $filter_info = $this->model_catalog_filter->getFilter($filter_id); if ($filter_info) { $data['product_filters'][] = array( 'filter_id' => $filter_info['filter_id'], 'name' => $filter_info['group'] . ' > ' . $filter_info['name'] ); } } // Attributes $this->load->model('catalog/attribute'); if (isset($this->request->post['product_attribute'])) { $product_attributes = $this->request->post['product_attribute']; } elseif (isset($this->request->get['product_id'])) { $product_attributes = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']); } else { $product_attributes = array(); } $data['product_attributes'] = array(); foreach ($product_attributes as $product_attribute) { $attribute_info = $this->model_catalog_attribute->getAttribute($product_attribute['attribute_id']); if ($attribute_info) { $data['product_attributes'][] = array( 'attribute_id' => $product_attribute['attribute_id'], 'name' => $attribute_info['name'], 'product_attribute_description' => $product_attribute['product_attribute_description'] ); } } // Options $this->load->model('catalog/option'); if (isset($this->request->post['product_option'])) { $product_options = $this->request->post['product_option']; } elseif (isset($this->request->get['product_id'])) { $product_options = $this->model_catalog_product->getProductOptions($this->request->get['product_id']); } else { $product_options = array(); } $data['product_options'] = array(); foreach ($product_options as $product_option) { $product_option_value_data = array(); if (isset($product_option['product_option_value'])) { foreach ($product_option['product_option_value'] as $product_option_value) { $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'option_value_id' => $product_option_value['option_value_id'], 'quantity' => $product_option_value['quantity'], 'subtract' => $product_option_value['subtract'], 'price' => $product_option_value['price'], 'price_prefix' => $product_option_value['price_prefix'], 'points' => $product_option_value['points'], 'points_prefix' => $product_option_value['points_prefix'], 'weight' => $product_option_value['weight'], 'weight_prefix' => $product_option_value['weight_prefix'] ); } } $data['product_options'][] = array( 'product_option_id' => $product_option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $product_option['option_id'], 'name' => $product_option['name'], 'type' => $product_option['type'], 'value' => isset($product_option['value']) ? $product_option['value'] : '', 'required' => $product_option['required'] ); } $data['option_values'] = array(); foreach ($data['product_options'] as $product_option) { if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox' || $product_option['type'] == 'image') { if (!isset($data['option_values'][$product_option['option_id']])) { $data['option_values'][$product_option['option_id']] = $this->model_catalog_option->getOptionValues($product_option['option_id']); } } } $this->load->model('customer/customer_group'); $data['customer_groups'] = $this->model_customer_customer_group->getCustomerGroups(); if (isset($this->request->post['product_discount'])) { $product_discounts = $this->request->post['product_discount']; } elseif (isset($this->request->get['product_id'])) { $product_discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']); } else { $product_discounts = array(); } $data['product_discounts'] = array(); foreach ($product_discounts as $product_discount) { $data['product_discounts'][] = array( 'customer_group_id' => $product_discount['customer_group_id'], 'quantity' => $product_discount['quantity'], 'priority' => $product_discount['priority'], 'price' => $product_discount['price'], 'date_start' => ($product_discount['date_start'] != '0000-00-00') ? $product_discount['date_start'] : '', 'date_end' => ($product_discount['date_end'] != '0000-00-00') ? $product_discount['date_end'] : '' ); } if (isset($this->request->post['product_special'])) { $product_specials = $this->request->post['product_special']; } elseif (isset($this->request->get['product_id'])) { $product_specials = $this->model_catalog_product->getProductSpecials($this->request->get['product_id']); } else { $product_specials = array(); } $data['product_specials'] = array(); foreach ($product_specials as $product_special) { $data['product_specials'][] = array( 'customer_group_id' => $product_special['customer_group_id'], 'priority' => $product_special['priority'], 'price' => $product_special['price'], 'date_start' => ($product_special['date_start'] != '0000-00-00') ? $product_special['date_start'] : '', 'date_end' => ($product_special['date_end'] != '0000-00-00') ? $product_special['date_end'] : '' ); } // Image if (isset($this->request->post['image'])) { $data['image'] = $this->request->post['image']; } elseif (!empty($product_info)) { $data['image'] = $product_info['image']; } else { $data['image'] = ''; } $this->load->model('tool/image'); if (isset($this->request->post['image']) && is_file(DIR_IMAGE . $this->request->post['image'])) { $data['thumb'] = $this->model_tool_image->resize($this->request->post['image'], 100, 100); } elseif (!empty($product_info) && is_file(DIR_IMAGE . $product_info['image'])) { $data['thumb'] = $this->model_tool_image->resize($product_info['image'], 100, 100); } else { $data['thumb'] = $this->model_tool_image->resize('no_image.png', 100, 100); } $data['placeholder'] = $this->model_tool_image->resize('no_image.png', 100, 100); // Images if (isset($this->request->post['product_image'])) { $product_images = $this->request->post['product_image']; } elseif (isset($this->request->get['product_id'])) { $product_images = $this->model_catalog_product->getProductImages($this->request->get['product_id']); } else { $product_images = array(); } $data['product_images'] = array(); foreach ($product_images as $product_image) { if (is_file(DIR_IMAGE . $product_image['image'])) { $image = $product_image['image']; $thumb = $product_image['image']; } else { $image = ''; $thumb = 'no_image.png'; } $data['product_images'][] = array( 'image' => $image, 'thumb' => $this->model_tool_image->resize($thumb, 100, 100), 'sort_order' => $product_image['sort_order'] ); } // Downloads $this->load->model('catalog/download'); if (isset($this->request->post['product_download'])) { $product_downloads = $this->request->post['product_download']; } elseif (isset($this->request->get['product_id'])) { $product_downloads = $this->model_catalog_product->getProductDownloads($this->request->get['product_id']); } else { $product_downloads = array(); } $data['product_downloads'] = array(); foreach ($product_downloads as $download_id) { $download_info = $this->model_catalog_download->getDownload($download_id); if ($download_info) { $data['product_downloads'][] = array( 'download_id' => $download_info['download_id'], 'name' => $download_info['name'] ); } } if (isset($this->request->post['product_related'])) { $products = $this->request->post['product_related']; } elseif (isset($this->request->get['product_id'])) { $products = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); } else { $products = array(); } $data['product_relateds'] = array(); foreach ($products as $product_id) { $related_info = $this->model_catalog_product->getProduct($product_id); if ($related_info) { $data['product_relateds'][] = array( 'product_id' => $related_info['product_id'], 'name' => $related_info['name'] ); } } if (isset($this->request->post['points'])) { $data['points'] = $this->request->post['points']; } elseif (!empty($product_info)) { $data['points'] = $product_info['points']; } else { $data['points'] = ''; } if (isset($this->request->post['product_reward'])) { $data['product_reward'] = $this->request->post['product_reward']; } elseif (isset($this->request->get['product_id'])) { $data['product_reward'] = $this->model_catalog_product->getProductRewards($this->request->get['product_id']); } else { $data['product_reward'] = array(); } if (isset($this->request->post['product_layout'])) { $data['product_layout'] = $this->request->post['product_layout']; } elseif (isset($this->request->get['product_id'])) { $data['product_layout'] = $this->model_catalog_product->getProductLayouts($this->request->get['product_id']); } else { $data['product_layout'] = array(); } $this->load->model('design/layout'); $data['layouts'] = $this->model_design_layout->getLayouts(); $data['header'] = $this->load->controller('common/header'); $data['column_left'] = $this->load->controller('common/column_left'); $data['footer'] = $this->load->controller('common/footer'); $this->response->setOutput($this->load->view('catalog/product_form', $data)); } protected function validateForm() { if (!$this->user->hasPermission('modify', 'catalog/product')) { $this->error['warning'] = $this->language->get('error_permission'); } foreach ($this->request->post['product_description'] as $language_id => $value) { if ((utf8_strlen($value['name']) < 3) || (utf8_strlen($value['name']) > 255)) { $this->error['name'][$language_id] = $this->language->get('error_name'); } } if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) { $this->error['model'] = $this->language->get('error_model'); } if (utf8_strlen($this->request->post['keyword']) > 0) { $this->load->model('catalog/url_alias'); $url_alias_info = $this->model_catalog_url_alias->getUrlAlias($this->request->post['keyword']); if ($url_alias_info && isset($this->request->get['product_id']) && $url_alias_info['query'] != 'product_id=' . $this->request->get['product_id']) { $this->error['keyword'] = sprintf($this->language->get('error_keyword')); } if ($url_alias_info && !isset($this->request->get['product_id'])) { $this->error['keyword'] = sprintf($this->language->get('error_keyword')); } } if ($this->error && !isset($this->error['warning'])) { $this->error['warning'] = $this->language->get('error_warning'); } return !$this->error; } protected function validateDelete() { if (!$this->user->hasPermission('modify', 'catalog/product')) { $this->error['warning'] = $this->language->get('error_permission'); } return !$this->error; } protected function validateCopy() { if (!$this->user->hasPermission('modify', 'catalog/product')) { $this->error['warning'] = $this->language->get('error_permission'); } return !$this->error; } public function autocomplete() { $json = array(); if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_model'])) { $this->load->model('catalog/product'); $this->load->model('catalog/option'); if (isset($this->request->get['filter_name'])) { $filter_name = $this->request->get['filter_name']; } else { $filter_name = ''; } if (isset($this->request->get['filter_model'])) { $filter_model = $this->request->get['filter_model']; } else { $filter_model = ''; } if (isset($this->request->get['limit'])) { $limit = $this->request->get['limit']; } else { $limit = 5; } $filter_data = array( 'filter_name' => $filter_name, 'filter_model' => $filter_model, 'start' => 0, 'limit' => $limit ); $results = $this->model_catalog_product->getProducts($filter_data); foreach ($results as $result) { $option_data = array(); $product_options = $this->model_catalog_product->getProductOptions($result['product_id']); foreach ($product_options as $product_option) { $option_info = $this->model_catalog_option->getOption($product_option['option_id']); if ($option_info) { $product_option_value_data = array(); foreach ($product_option['product_option_value'] as $product_option_value) { $option_value_info = $this->model_catalog_option->getOptionValue($product_option_value['option_value_id']); if ($option_value_info) { $product_option_value_data[] = array( 'product_option_value_id' => $product_option_value['product_option_value_id'], 'option_value_id' => $product_option_value['option_value_id'], 'name' => $option_value_info['name'], 'price' => (float)$product_option_value['price'] ? $this->currency->format($product_option_value['price'], $this->config->get('config_currency')) : false, 'price_prefix' => $product_option_value['price_prefix'] ); } } $option_data[] = array( 'product_option_id' => $product_option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $product_option['option_id'], 'name' => $option_info['name'], 'type' => $option_info['type'], 'value' => $product_option['value'], 'required' => $product_option['required'] ); } } $json[] = array( 'product_id' => $result['product_id'], 'name' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')), 'model' => $result['model'], 'option' => $option_data, 'price' => $result['price'] ); } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NeoSeo Team Опубликовано: 1 апреля 2020 Опубликовано: 1 апреля 2020 7 часов назад, Roumek сказал: Есть такая ошибка http://prntscr.com/rqnanq NOT FOUND! CODE: $data['product_categories'] = FILE: admin/controller/catalog/product.php MOD: NeoSeo Product Feed Файл admin/controller/catalog/product.php что и где нужно добавить? Добрый день, проблема с файлом модификатора, он расположен в директории system, его требуется доработать под Ваш проект. Модуль гарантировано работает на чистом\стандартном опенкарте, у Вас внесены изменения в оригинальные файлы опенкарт, поэтому потребуется переработать файл модификатор под Ваши изменения Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dmitab Опубликовано: 2 апреля 2020 Опубликовано: 2 апреля 2020 Добрый день! Как в коде YML должны записываться дополнительные изображения? {% for image in offer.image %} <picture>{{image}}</picture> {% endfor %} в логе они есть 2020-04-02 13:58:00 - Основное изображение товара https://feniks-trade.ru/image/catalog/lotki/0/ge-catalog-chudej-ZHeloba.jpg 2020-04-02 13:58:00 - Получаем дополнительные изображения товара:2340 2020-04-02 13:58:00 - Количество изображений 3 2020-04-02 13:58:00 - Прекращаем обработку изображений товара:2340 а выгрузке их нет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Roumek Опубликовано: 2 апреля 2020 Опубликовано: 2 апреля 2020 20 часов назад, NeoSeo Team сказал: Добрый день, проблема с файлом модификатора, он расположен в директории system, его требуется доработать под Ваш проект. Модуль гарантировано работает на чистом\стандартном опенкарте, у Вас внесены изменения в оригинальные файлы опенкарт, поэтому потребуется переработать файл модификатор под Ваши изменения Сколько стоит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zakazaquau@gmail.com Опубликовано: 2 апреля 2020 Опубликовано: 2 апреля 2020 Добрый день. Возникла проблема с НДС. К примеру на сайте стоит товар который стоит 2150 руб (НДС 20%) . Ндс соответственно уже включен в стоимость товара. При выгрузке товаров через ваш модуль цена становится 2580 руб. Как это исправить??? Версия 81 модуля. Opencart 2.3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NeoSeo Team Опубликовано: 3 апреля 2020 Опубликовано: 3 апреля 2020 19 часов назад, Dmitab сказал: Добрый день! Как в коде YML должны записываться дополнительные изображения? {% for image in offer.image %} <picture>{{image}}</picture> {% endfor %} в логе они есть 2020-04-02 13:58:00 - Основное изображение товара https://feniks-trade.ru/image/catalog/lotki/0/ge-catalog-chudej-ZHeloba.jpg 2020-04-02 13:58:00 - Получаем дополнительные изображения товара:2340 2020-04-02 13:58:00 - Количество изображений 3 2020-04-02 13:58:00 - Прекращаем обработку изображений товара:2340 а выгрузке их нет Добрый день. Попробуйте скачать последнюю версию из кабинета. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NeoSeo Team Опубликовано: 3 апреля 2020 Опубликовано: 3 апреля 2020 17 часов назад, zakazaquau@gmail.com сказал: Добрый день. Возникла проблема с НДС. К примеру на сайте стоит товар который стоит 2150 руб (НДС 20%) . Ндс соответственно уже включен в стоимость товара. При выгрузке товаров через ваш модуль цена становится 2580 руб. Как это исправить??? Версия 81 модуля. Opencart 2.3 Скиньте скриншот как заполнены настройки НДС у товара и цена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NeoSeo Team Опубликовано: 3 апреля 2020 Опубликовано: 3 апреля 2020 18 часов назад, Roumek сказал: Сколько стоит? Для данной проблемы должно до 1 часа программиста занять, можете посмотреть стоимость часа у нас на сайте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Roumek Опубликовано: 3 апреля 2020 Опубликовано: 3 апреля 2020 39 минут назад, NeoSeo Team сказал: Для данной проблемы должно до 1 часа программиста занять, можете посмотреть стоимость часа у нас на сайте. У Вас на сайте почитал кучу текста и дошел до того что нужно написать на почту info@neoseo.com.ua в ответ пришло письмо что нужно писать на форуме https://prnt.sc/rs3obl Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zakazaquau@gmail.com Опубликовано: 3 апреля 2020 Опубликовано: 3 апреля 2020 52 минуты назад, NeoSeo Team сказал: Скиньте скриншот как заполнены настройки НДС у товара и цена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Юлия Опубликовано: 3 апреля 2020 Опубликовано: 3 апреля 2020 Добрый день! возникла проблема по работе модуля мульти експорт - YML+Цвет+Размер - в данной выгрузке не тянется в выгрузку наличие из тех товаров у которых прописан размер обуви <stock_quantity>{{offer.quantity}}</stock_quantity> Подскажите что именно нужно прописать чтоб в выгрузку у этих товаров попадало наличие Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dmitab Опубликовано: 3 апреля 2020 Опубликовано: 3 апреля 2020 1 час назад, NeoSeo Team сказал: Добрый день. Попробуйте скачать последнюю версию из кабинета. Да, вроде помогло, спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.