-
Публікації
66 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Усі публікації користувача VladSiy
-
0. ...? 1. catalog/controller/mail/register.php - здесь я получаю регистрационные данные пользователя. 2. из первого пункта данные передаются в catalog/view/theme/default/template/mail/register.twig. Здесь мне все поняно. Вопрос заключается в другом. Представьте, что есть "нулевой" пункт, как из пункта 0 данные попадают в пункт 1? что_то_должно_передать_три_аргумента_в->index($route, $args, $output);
-
Забыл уточнить, что это OpenCart 3. Наверное вы не поняли мой вопрос, а может быть я не понял ваш ответ Я не могу понять, откуда передаются данные в catalog/controller/mail/register.php public function index(&$route, &$args, &$output) {... эта функция принимает 3 аргумента, вот где она их берет? Я хочу найти этот файл, который передает в эту функцию данные и расширить $args, что бы отправить их письмом зарегистрированному пользователю. Если вы правильно все поняли и ответили выше, то объясните, пожалуйста подробнее, потому что я не понял
-
Когда я регистрируюсь мне на почту приходит письмо-уведомление с благодарностью. Отправляется оно отсюда .../catalog/controller/mail/register.php В этом файле есть функция: public function index(&$route, &$args, &$output) { Подскажите, пожалуйста, откуда идет обращение к этой функции? Я не могу никак проследить... Мне нужно в $args передать дополнительные данные. Спасибо заранее.
-
Помогите, пожалуйста, выполнить вот такой запрос: OC3x SELECT product_id FROM . DB_PREFIX . mytable WHERE price > 0 Этот запрос мне нужно добавить в getProductSpecials по пути /model/catalog/product.php. Я подумал про 2 варианта: 1. Расширить существующий sql запрос, он был в одну строку, я попытался его разделить, чтобы было понятнее, но не смог решить свою задачу. И добавлял после product_special строчку . DB_PREFIX . "mytable mt LEFT JOIN " $sql = "SELECT DISTINCT ps.product_id, ( SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW()) ) GROUP BY ps.product_id"; 2. Сделать свой запрос ниже: $sql .= "SELECT product_id FROM ". DB_PREFIX . "mytable WHERE price > 0"; Естественно, в обоих случаях ошибки. Мне уже не первый раз приходится прибегать к запросу с LEFT JOIN, читал разные статьи, но, не разобрался. Кажется, в Open Cart чересчур сложный запрос. Хотелось бы понять, как оно работает, может быть кто-то сможет доступно объяснить?
-
Всему виной моя не внимательность. Может кто-то наступит на такие же грабли, вот решение моей проблемы. Я неправильно упаковал архив. Мой архив выглядел так: test.ocmod.zip -test.ocmod --upload --install.xml перепаковал так: test.ocmod.zip -upload -install.xml И еще удалил пробелы в поиске в xml и все заработало: <search><![CDATA[{{ language }}]]></search>
-
1. Если я правильно понял ваше предложение проверить распаковывается ли архив, то да, распаковывается. Проверил с помощью ZipArchive::extractTo. 2. В User Groups у меня вообще нет чекбокса с modification/upload.
-
Вот это сработало, спасибо. Теперь бы разобраться, как файлы загрузить через установщик.
-
Перефразируйте, пожалуйста, я не понял, что нужно проверить и где
-
ocmod.log 2020-03-24 14:05:40 - MOD: Modification Default FILE: system/engine/action.php REGEX: ~(require|include)(_once)?\(([^)]+)~ LINE: 69 FILE: system/engine/loader.php REGEX: ~(require|include)(_once)?\(([^)]+)~ LINE: 77 LINE: 151 LINE: 168 FILE: system/library/config.php REGEX: ~(require|include)(_once)?\(([^)]+)~ LINE: 59 FILE: system/library/language.php REGEX: ~(require|include)(_once)?\(([^)]+)~ LINE: 67 LINE: 73 FILE: system/library/template/template.php REGEX: ~(require|include)(_once)?\(([^)]+)~ LINE: 18 FILE: system/library/template/twig.php CODE: $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); LINE: 19 ----------------------------------------------------------------
-
Столкнулся с проблемой, не могу разобраться, что я делаю не так. OpenCart 3.0.3.2. Я немного расширил функционал магазина. Всю работу я сделал в оригинальных файлах и все работает, как я и хотел. Захотелось познакомиться с ocmod и я подумал всю работу сделать с помощью модификатора. На данный момент я оставил все работающие файлы на своих местах и убрал только 1 файл по пути admin/controller/extension/module/test.php. Если вернуть его на место, то в Extensions->modules появится название моего, так сказать, модуля. Что я сделал: Создал zip архив test.ocmod В архиве находятся файл install.xml и папка upload. В папке upload/admin/controller/extension/module/ есть файл test.php тот, который я убрал. Для теста я хочу его вернуть на свое место с помощью "Installer". В файле install.xml вот что: <?xml version="1.0" encoding="UTF-8"?> <modification> <name>Test</name> <code>test</code> <version>1.0</version> <link>test.test</link> <author>Test</author> <file path="catalog/view/theme/default/template/common/header.twig"> <operation> <search><![CDATA[ {{ language }} ]]></search> <add position="after"><![CDATA[ {{ test }} ]]></add> </operation> </file> </modification> Установка проходит отлично. в Install History появляется запись. В модификаторе и в Developer Settings обновляю все, что есть. И вот сама проблема: В Modification List - ничего нет. В Extensions->modules - ничего нет. По пути system/storage/modification кроме системных папок и файла index.html - тоже ничего нет. Я подумал, что это связано с тем, что я не перенес папку storage за пределы каталога сайта. Только что вынес эту папку, загрузил архив снова, но кроме системных папок и файлов ничего в папке modification нет. Уже не знаю, что пробовать. Читал, что бывает проблема с неправильно настроенным FTP, на 2-ке видел эту вкладку, а на 3-ке не вижу. Подскажите, пожалуйста, что я делаю не правильно, или в чем может быть проблема?
-
Нужна помощь, не могу разобраться в sql запросе. в /catalog/model/catalog/product.php есть функция: public function getProduct($product_id) { $query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special,(SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND pr.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"); if ($query->num_rows) { return array( 'product_id' => $query->row['product_id'], 'name' => $query->row['name'], 'description' => $query->row['description'], 'meta_title' => $query->row['meta_title'], 'meta_description' => $query->row['meta_description'], 'meta_keyword' => $query->row['meta_keyword'], 'tag' => $query->row['tag'], 'model' => $query->row['model'], 'sku' => $query->row['sku'], 'upc' => $query->row['upc'], 'ean' => $query->row['ean'], 'jan' => $query->row['jan'], 'isbn' => $query->row['isbn'], 'mpn' => $query->row['mpn'], 'location' => $query->row['location'], 'quantity' => $query->row['quantity'], 'stock_status' => $query->row['stock_status'], 'image' => $query->row['image'], 'manufacturer_id' => $query->row['manufacturer_id'], 'manufacturer' => $query->row['manufacturer'], 'price' => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']), 'special' => $query->row['special'], 'reward' => $query->row['reward'], 'points' => $query->row['points'], 'tax_class_id' => $query->row['tax_class_id'], 'date_available' => $query->row['date_available'], 'weight' => $query->row['weight'], 'weight_class_id' => $query->row['weight_class_id'], 'length' => $query->row['length'], 'width' => $query->row['width'], 'height' => $query->row['height'], 'length_class_id' => $query->row['length_class_id'], 'subtract' => $query->row['subtract'], 'rating' => round($query->row['rating']), 'reviews' => $query->row['reviews'] ? $query->row['reviews'] : 0, 'minimum' => $query->row['minimum'], 'sort_order' => $query->row['sort_order'], 'status' => $query->row['status'], 'date_added' => $query->row['date_added'], 'date_modified' => $query->row['date_modified'], 'viewed' => $query->row['viewed'] ); } else { return false; } } В ней есть sql запрос, в котором я не могу разобраться. На примере акционного товара, подскажите, пожалуйста, как изменить этот запрос так, чтобы он вывел не 1 цену, как сейчас, а все цены, которые установлены во вкладке Акция, например 5 записей. В итоге хотел бы по определенному условию показывать нужную мне цену. Изменение/удаление LIMIT приводит к ошибке.
-
Спасибо за советы. Решил свою проблемой так: Создал почтовый ящик на хостинге [email protected] и настроил отправку почты в админке CMS через SMTP, используя в качестве сервера почты сервер моего хостинга hosting_name.ru, порт 25, логин и пароль от почты [email protected] с хостинга.
-
Здравствуйте. OpenCart 2.3.0.2.3 Не так давно возникла проблема, с доставкой писем на ukr.net, вообще не доходят. Временно решили эту проблему так: 1. создал почту на хостинге [email protected], 2. в админке магазина, в поле Email установил почту [email protected], 3. на хостинге с [email protected] перенаправлял на [email protected]. Может быть недельку поработало и ситуация повторилась, перестали приходить письма. Потом решили эту проблему добавлением ТХТ-запись с SPF. Снова хватило на пару недель. Вчера перестало работать. Скорее всего проблема в том, что ukr.net проверяет отправителя и он не соответствует домену сайта. В файлах сайта, уже не помню точный путь, где именно я это делал, в строке отправителя я прописывал: $mail->setSender('[email protected]'); кажется я заменял везде, где встречается эта строка, Но в почтовике я вижу: Отправитель: user@hosting_name.ru Письма приходят от системного адреса. Подскажите, пожалуйста, где и каким образом я могу изменить имя отправителя, чтобы письмо отправлялось не с системного адреса, а с моего домена, на котором расположен магазин. Возможно, причина и не в этом, может быть кто-то уже сталкивался с такой проблемой, поделитесь ее решением. PS На Gmail письма приходят без проблем, не теряются. Но штат не хочет менять рабочую почту. Убедить не могу.
-
Не могу решить одну задачу. OpenCart 2.3.0.2.3 Занимаюсь сайтом сети кафетериев. Торговые точки есть в определенных городах, городов около 10-ка и постоянно добавляются новые. Соответственно сайт привязан к географии. Все было хорошо, пока цены и акции применялись ко всем городам. Но теперь есть задача показывать акционный товар только в 3-ке городов. Я пытался это реализовать с помощью SxGeo. В принципе он работает, но не так точно, как мне нужно. Т.е. 2 города, для которых мне нужно показать акцию - Фастов и Обухов, SxGeo определяет их, как "Киев". Нашел в интернете список блоков ip адресов для этих городов, и по условию менял статус акционного товара на отключенный, а для тех, кто не подходит под условие - активировал. Когда проверял на своем IP адресе - все работало, попросил проверить жителей нужных городов - не работает. В общем этот способ мне не подошел. Решил попробовать другой способ, добавить в админку новое поле с дополнительной ценой, и выставлять цену для акционного города, и потом уже дальше в шаблоне решать, показывать товар или нет. Все, что я мог бы сделать - это статично добавить поля, а они могут меняться очень быстро для разных городов. Оставил я эту затею. В итоге решил спросить вас, может быть подскажите, какой-то способ, который даст мне возможность определить точный город и как-то в админке оформить товар для определенных городов. Может быть есть какой-то недорогой модуль, или приспособить какую-то из существующих в коробке возможностей? Поделитесь, пожалуйста, идеями. Спасибо.
-
Здравствуйте, нужна помощь. Коротко говоря, мне нужно подредактировать форму так, чтобы в зависимости от выбранного города доставки (выпадающий список), в следующем списке выпадали адреса торговых точек относящихся к выбранному городу и выбор добавился в письмо, такого типа: самовывоз из магазина по адресу ... здесь то, что выберет клиент. Я думаю это сделать таким образом: в админке можно добавить "местоположение". Сюда добавил несколько городов с адресами ТТ. На странице оформления заказа вывел этот список адресов. С помощью JS и Jquery привязался к выпадающему списку городов/регионов. По событию "onchange" получаю выбранный город, Ajax-м отправляю этот город в созданный контроллер. Теперь мне надо сделать выборку адресов в модели location в функции getLocation, только дописать туда условие, чтобы выводить только те, которые соответствуют имени города. У меня все это получается сделать, только, если в модели вручную пропишу имя города, или, если отправленный ajax-ом город добавлю в сессию. У меня есть вопросы, прошу подскажите, пожалуйста, желательно с наглядными примерами: 1. Могу ли я сделать все это немного проще? Возможно я уж слишком намудрил 2. Как можно передать данные с именем города из контроллера в модель localisation/location без сессии? 3. Как обновить блок без перезагрузки страницы, чтобы там отобразился результат выборки, если без сессии нельзя? Если, не возможно помочь теоретически, но, желательно подробнее, то я со временем распишу проблему более подробно и приведу куски кода. Спасибо.
-
Кажется получилось сделать мультимагазин с помощью алиасов, пока только на локалке. На данный момент, кажется все устраивает, но что-то, возможно, просто не учел. Немного страшно переделывать работающие магазины Допустим, я решился, мне придется удалить сайты и бд с поддоменов. Не уничтожу ли я таким образом сайты, в отношении видимости для поисковиков? Еще мне нужно перевести все магазины на https, это делается, как для обычного сайта?
-
Я читал, что для каждого поддомена необходимо устанавливать CMS и указывать одну БД. В таком случае, в принципе, не вижу смысла делать мультимагазин, по сути я сейчас имею тоже самое, только не могу перейти на сайт из админке. Как сделать один набор фалов?
-
Спасибо, буду эксперементировать. Подозреваю, что админка будет единая для всех магазинов и менеджеров?
-
Здравствуйте. Когда-то давно я сделал один интернет-магазин, который был привязан к определенному городу. Со временем потребовалось сделать магазин для еще одного города, и я сделал клон сайта на поддомене. Сейчас мне нужно сделать уже 13-й клон интернет-магазина, и у меня возник вопрос, есть ли более правильное решение? Почему я делал поддомены: - магазины привязаны к конкретному городу, - разные адреса, контактные данные, - в каждом городе свои менеджеры, заказы должны идти на почту выбранного города. Почему меня смущает такой подход: - во всех городах/магазинах одинаковые товары, цены и т.д. (слишком много копий изображений товаров, не рационально используется место на хостинге), - не удобно вносить правки в файлы, товары и т.д. - дорого в плане покупки платных модулей. Я знаю, что есть мультимагазин на OpenCart, но на сколько помню, он использует одну БД для всех магазинов. Если так, я же не смогу иметь разные Email адреса для заказов в разных городах? Возможно дальше будут снова появляться новые города, и будет становиться все труднее и труднее в обслуживании. Поделитесь, пожалуйста, опытом или советом, как можно было бы поступить в моем случае?
-
А есть у кого-нибудь страны и зоны на украинском языке? Или же, может кто-то знает, как из exel сделать импорт в таблицу mysql?
-
Всем спасибо. Буду разбираться.
-
А не подскажите, как сделать отображение хотя бы на англ.? Где вообще хранится список стран?
-
У меня на сайте 3 языка: рус, англ, укр. Есть ли какой-нибудь модуль, который при оформлении заказа может отображать название стран и городов в зависимости от выбранного языка на сайте? Если модуля нет, то как проще всего сделать перевод? Подскажите, пожалуйста. Боюсь представить, насколько нудная работа предстоит.
-
Здравствуйте. Мог бы кто-нибудь мне помочь написать правильный запрос для выбора нужных товаров? Введение: - В магазине есть артикулы товара, я использую поле "model" - Есть артикул замены, использую поле "sku" Артикул замены - это артикул аналогичного товара. (поля заполняются вручную в админке) Пример: Товар №1 Артикул - xxxxxx Артикул замены - yyyyyy Товар №2 Артикул - yyyyyy Артикул замены - xxxxxx Артикулов замены на одном товаре может быть до 3-х штук. Что я сделал: в контроллере продукта ... $this->data['productsArtZam'] = array(); $results = $this->model_catalog_product->getProductArtZam($this->request->get['product_id'],$this->data['sku'], $this->data['model']); foreach ($results as $result) { $skus = explode(',', $result['model']); foreach ($skus as $sku) { $this->data['productsArtZam'][] = array( 'sku' => trim($sku), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } } В модели продукта ... public function getProductArtZam($product_id, $sku, $model) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE (sku LIKE '%" . $model . "%' AND quantity > 0 AND status = '1' ) LIMIT 1,6 "); } в tpl продукта вывожу артикул тех продуктов, которые соответствуют запросу. У меня это работает так: я заполняю поле артикул(model) и, через запятую, Артикул замены (sku). Разбиваю строку на массив, сравниваю и вывожу. Чтобы эти арт. зам. выводились нужно в обоих товарах их прописать Кажется, что все у меня получается, я получаю нужные товары, до 3-х шт. с активными, правильными ссылками. НО из-за LIKE %...% у меня все не получается. Есть два разных товара с разными артикулами: артикул ART-38 и ART-3. Артикул замены применяется и к ART-38 и ART-3, а должен только к первому. Вместо LIKE делаю "=" все работает, как надо, но не выводится больше 1-го артикула замены, т.е. если в ... Товар №2 Артикул - yyyyyy Артикул замены - xxxxxx, zzzzzz ... то запрос, как бы не устраивает. Могли бы помочь решить эту проблемку? :)