-
Публікації
31 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем arshanskiyav
-
-
Не самый лучший вариант решения, но все же.
При добавлении продукта (функция AddProduct,product.php,model,admin) добавляем лидирующие (ведущие) нули:
$pattern1="|([0-9][\d]*)|is"; $new_name=preg_replace_callback($pattern1,function($m) {return str_pad($m[0],5,"0", STR_PAD_LEFT);}, $value['name']); $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($new_name) . "',...
При выводе соответственно убираем (getProduct,product.php,model,catalog)
$pattern = "|\b[0]+([1-9][\d]*)|is"; $new_name=preg_replace($pattern,"\\1", $query->row['name']); return array( 'product_id' => $query->row['product_id'], 'name' => $new_name, ...
-
*.docx,*.xlsx - не загружаются.
*.doc,*.xls - грузятся
OC 2.0.1.1
UP
Добавил MIME types в Настройки,Магазин,Сервер:
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet application/vnd.openxmlformats-officedocument.wordprocessingml.document
типы брал с sitepoint.com
- 1
-
если поле текстовое, а не числовое - так и будет, все верно
чтобы 20 оказалось больше 4 - нужно преобразовать в число, например через int()
это конечно при условии, что у вас в поле только цифры
Можно было бы и через:
ORDER BY (m_value+0)
Если бы число было в конце, или:
SELECT SUBSTRING_INDEX(a_title, ' ', -1) AS at FROM wp_5_posts ORDER BY at
Если бы число было одно, или во всех случаях известное/определенное количество раз. Но увы.
-
А под ОС 2.0.1.1 есть подобное?
-
интересное кино..
а не подскажете - как именно вышли на "сайт разработчика" ?
Подозреваю, что через opencart.com.
Вообще, в связи с закрытием приема заявок для seller account, стало только хуже. Вместо благодарностей за модуль одни упреки слышу :)
Да, через сайт opencart.com
А почему просто не взять кусок кода от движка 1.5 и внедрить его в 2.0 ? Как раз там именно список. Вот и сделайте не "по образу", а прям "копипастой" + напильник.
А я и не знал что в предыдущей версии или ocStore так сделано, но в любом случае там реализация идет через:
<select> <option> </option> </select>
Большой напильник нужен X-D
admin\view\template\catalog\product_form.tpl
попробуйте кеш почистить + кеш модификаторов на всякий
Вы были правы, пока модификатор Acute был включен, изменений я не видел, после внесения изменений включил его обратно, и мое "чудо" осталось на месте
В итоге решил сделать так:
product_form.tpl
<div class="col-sm-10"> <div style="width:auto;overflow-y:auto;height:200px;position:relative;margin-bottom:10px;"> <input type="text" name="category" value="" placeholder="<?php echo $entry_category; ?>" id="input-category" class="form-control" /> </div>
Блюр отключил, меня устраивает ))))
Всем спасибо.
-
Сделал как на картинке
Изменив limit, увы "0" поставить нельзя, так как это означает по-умолчанию, т.е. 30
admin/catalog/category.php
$filter_data = array( 'filter_name' => $this->request->get['filter_name'], 'sort' => 'name', 'order' => 'ASC', 'start' => 0, 'limit' => 100 );
Только одна проблема, если нажать на полосу прокрутки, список исчезает.
За это отвечает:
$(this).on('blur', function() { setTimeout(function(object) { object.hide(); }, 200, this); });
В файле admin/view/javascript/common.js
Решил завернуть весь блок в div с ограниченной высотой и скроллом.
Какой файл отвечает за вывод формы?
Пробовал редактировать product_form.tpl, но изменений ни в коде ни в виде.
-
Сделал дамп, скинул в базу Денвер (MySql 5.5.25), в ней сортировка была "правильной". Удалил базу у хостера, восстановил ее из дампа, и оно вроде как заработало.
Правда 4 по-прежнему больше 20 (такова логика MySQL).
Плюс выяснил, что у хостера криво работает ORDER BY LCASE(), пришлось использовать ORDER BY BINARY()
Я хочу прогнать pd.name через регулярное выражение, подставляющее лидирующие нули всем числам, в зависимости от длины этого числа (итоговая длина числа, допустим, 6 символов).
Кто-нибудь может подсказать, как правильно описать регулярное выражение, и возможно ли это?
-
-
Вопрос, я не силен в mysql, но можно ли сортировать таблицу по полю, которое не выбирается?
print_r($query); stdClass Object ( [num_rows] => 15 [row] => Array ( [product_id] => 2439 [rating] => [discount] => [special] => ) [rows] => Array ( [0] => Array ( [product_id] => 2439 [rating] => [discount] => [special] => ) [1] => Array ( [product_id] => 2440 [rating] => [discount] => [special] => ) [2] => Array ( [product_id] => 2441 [rating] => [discount] => [special] => ) [3] => Array ( [product_id] => 1431 [rating] => [discount] => [special] => ) [4] => Array ( [product_id] => 1464 [rating] => [discount] => [special] => ) [5] => Array ( [product_id] => 1445 [rating] => [discount] => [special] => ) [6] => Array ( [product_id] => 1458 [rating] => [discount] => [special] => ) [7] => Array ( [product_id] => 1439 [rating] => [discount] => [special] => ) [8] => Array ( [product_id] => 1452 [rating] => [discount] => [special] => ) [9] => Array ( [product_id] => 1433 [rating] => [discount] => [special] => ) [10] => Array ( [product_id] => 1465 [rating] => [discount] => [special] => ) [11] => Array ( [product_id] => 1446 [rating] => [discount] => [special] => ) [12] => Array ( [product_id] => 1459 [rating] => [discount] => [special] => ) [13] => Array ( [product_id] => 1440 [rating] => [discount] => [special] => ) [14] => Array ( [product_id] => 1453 [rating] => [discount] => [special] => ) ) )
-
Эм, ошибочка вышла, он сортировал правильно, только потому, что порядок добавления совпал с наименованием.
-
Ну на сайт разработчика не сильно смахивает, но вариант Free у меня уже давно стоит, а полный (ссылка на демо, там есть ссылка Purchase)
-
У Вас цена ниже чем на официальном сайте разработчика...
Но меня все таки интересует то, что описано в первом сообщении.
-
Доброго дня!
Подскажите, есть ли готовый модуль для отображения списка категорий на вкладке "связи" на странице "добавление товара"?
Стандартная фича не очень удобная, нужно знать название категории.
Спасибо.
-
Кажется нашел:
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { //$sql .= " ORDER BY LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY " . $data['sort']; } } else { $sql .= " ORDER BY p.sort_order"; } if (isset($data['order']) && ($data['order'] == 'DESC')) { $sql .= " DESC, LCASE(pd.name) DESC"; } else { $sql .= " ASC, LCASE(pd.name) ASC"; }
Строка номер 160, после комментирования все как-будто нормализовалось.
Соответственно сортировки по модели больше нет.
-
pd.name из таблицы oc_product, почему тогда выборка идет из другой таблицы и по другому полю?
$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON ..."
-
Это поле name из таблицы oc_product_description
Может я чего не догоняю.
В запросе написано поле pd.name из таблицы oc_product, почему тогда выборка идет из другой таблицы и по другому полю?
Я заметил много полей с различными префиксами, которых нет в таблицах.
-
А что означает pd.name?
Точнее откуда он берется в функции getProducts?
В getProduct написано:
$query = $this->db->query("SELECT DISTINCT *, pd.name AS name ........ 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') . "'");
Выбрать pd.name как name из oc_product p(?), но я не вижу в таблице oc_product такого столбца, там даже нет столбца name.
-
я предположил, потому что в админке нет lcase
кроме того там еще интересная фишка
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY " . $data['sort']; } } else { $sql .= " ORDER BY p.sort_order"; } if (isset($data['order']) && ($data['order'] == 'DESC')) { $sql .= " DESC, LCASE(pd.name) DESC"; } else { $sql .= " ASC, LCASE(pd.name) ASC";
Т.е. получается что
ORDER BY LCASE (pd.name) DESC, LCASE (pd.name) DESC
или
ORDER BY LCASE (pd.name) ASC, LCASE (pd.name) ASC
поэтому нужно отсечь
if ($data['sort'] == 'pd.name' ) { if (isset($data['order']) && ($data['order'] == 'DESC') { $sql .= " DESC"; } else { $sql .= " ASC"; } } else { if (isset($data['order']) && ($data['order'] == 'DESC')) { $sql .= " DESC, LCASE(pd.name) DESC"; } else { $sql .= " ASC, LCASE(pd.name) ASC"; } }
И все таки проблема не в LCASE (на всякий случай заменил весь блок), проблема, как мне кажется, кроется в конечном sql запросе:
/catalog/model/catalog/product.php:
$sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special";
и /admin/model/catalog/product.php:
$sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
В админке нет выбора по категориям, поэтому запрос намного короче.
Я даже проверил количество символов в названии (увеличивал на один символ), до 16 символов (цифры без пробелов) он правильно сортирует. Но я не вижу в запросе функций substr или подобных.
-
Попробуйте убрать LCASE
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
Я так полагаю, речь идет о функции getProducts в файле /catalog/model/catalog/product.php?
Если мне не изменяет память LCASE возвращает строку в нижнем регистре.
-
Сортировка идет по порядку
Я правильно Вас понял, чтобы у меня сортировалось по Алфавиту, я должен вручную пронумеровать по этому полю?
Тогда логичный вопрос, зачем тогда в принципе возможность сортировки и почему в админ.панели все работает правильно?
-
Доброго времени суток!
Заметил неприятную особенность (OC 2.0.1.1):
1. На сайте (список товаров в категории) неправильно работает сортировка, такое ощущение что сортировка идет по первым N символам (см.картинку).
2. При обновлении страницы (установлена сортировка по алфавиту ASC) порядок элементов меняется :shock:
Сначала я подумал что это связано с кириллицей и латиницей в названии/модели, поэтому, как видно на рисунке, добавил товары с чисто цифровым названием/моделью/мета-тегом.
Результат тот же, а в админке сортировка работает правильно.
Подскажите где внести правки?
Спасибо.
-
Ответ здесь не помог, да и не мог.
У этого варианта есть минус, на телефоне мелковато.
-
Сейчас в модуле указал размеры 1200*200, вроде норм, но как-то это не правильно (((
-
300px, пробовал от 100 до 400.
Буквально вчера все было нормально.
[Підтримка] Безналичный платеж. Счет на оплату. Отложенная оплата
в Оплата
Опубліковано:
Ashap
А на ОС 2.х (2.0.1.1) работает???