HotLine и другие модули выгрузки XML

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #1 korshunov » 26.02.2020, 06:49

В версии 3.5.0 появился новый модуль выгрузки OkayCMS/HotLine.

По своему строению очень близок к модулям OkayCMS/YandexXML, OkayCMS/YandexXMLVendorModel, OkayCMS/Rozetka.
Выглядит все это, по-моему, весьма некрасиво по причине почти полного дублирования кода, в основном заменой в названиях переменных вхождений 'yandex' на 'hotLine'. Видимо, надо бы более тонко создавать подобный функционал одним модулем с настройками, и уж во всяком случае без такого ужасного дублирования.

Конечно, некоторые отличия есть, но они лишь вызывают дополнительные вопросы. Например, в модуле HotLine есть настройка Не выгружать товары с ценой 0, а в модуле Rozetka такого нет. Почему так хитро? Похоже, что это типовой недостаток того самого дублирования кода...

Опять таки хорошо бы было иметь документацию к этим модулям с упором на отличия между ними. Как по мне, они минимальны...

И очень неприятный общий недостаток модулей выгрузки - способ задания выборочной выгрузки для большого количества товаров - это просто издевательство над админом. Или эгоизм разработчика, которому так, как сейчас, легче.
Только для одной выгрузки yandex.xml в админке в списке товаров можно быстро отмечать товары для выгрузки. А для прочих такого счастья почему-то нет.

Еще один момент. Каждая отдельная выгрузка формируют данные в одинаковом стиле по всем товарам. А реально многим было бы удобно формировать для каждого отдельного товара свой тип - упрощенный или расширенный. Яндекс не зря такое позволяет. Думаю, разработчикам стоит подумать над такой возможностью...

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #2 OkayCMS » 26.02.2020, 08:01

Создавать один модуль для всего как раз таки и не нужно, так как у клиентов наоборот другие запросы. Они хотят выгружать одни товары в хотлайн, другие в Яндекс, а третьи на Розетку.

По документации к модулям - не совсем понял даже, что именно вы хотите там увидеть?

Упрощенный или расширенный тип нужен только для Яндекса, остальным сервисам выгрузка нужна в одном формате.

По остальным замечаниям - учтем.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #3 korshunov » 26.02.2020, 09:18

OkayCMS писал(а):Создавать один модуль для всего как раз таки и не нужно, так как у клиентов наоборот другие запросы. Они хотят выгружать одни товары в хотлайн, другие в Яндекс, а третьи на Розетку.

У клиентов вряд ли будут запросы на то, сколько модулей. Если один модуль им будет выгружать и в Hotline, и в Rozetka, они возражать не будут. Речь именно о специалистах, которые сейчас нерациональным образом дублируют большие количества кода...

OkayCMS писал(а):По документации к модулям - не совсем понял даже, что именно вы хотите там увидеть?

Ранее сказано:

korshunov писал(а):В версии 3.5.0 появился новый модуль выгрузки OkayCMS/HotLine.
документацию ... с упором на отличия между ними.

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #4 OkayCMS » 26.02.2020, 10:20

korshunov писал(а):
OkayCMS писал(а):Создавать один модуль для всего как раз таки и не нужно, так как у клиентов наоборот другие запросы. Они хотят выгружать одни товары в хотлайн, другие в Яндекс, а третьи на Розетку.

У клиентов вряд ли будут запросы на то, сколько модулей. Если один модуль им будет выгружать и в Hotline, и в Rozetka, они возражать не будут. Речь именно о специалистах, которые сейчас нерациональным образом дублируют большие количества кода...

OkayCMS писал(а):По документации к модулям - не совсем понял даже, что именно вы хотите там увидеть?

Ранее сказано:

korshunov писал(а):В версии 3.5.0 появился новый модуль выгрузки OkayCMS/HotLine.
документацию ... с упором на отличия между ними.


так в том-то и дело, что клиентам нужно выгружать разные товары в разные выгрузки которые создаются про разным форматам. Можно создавать одни мегамодуль, но зачем?


По документации - вы повторили свои слова, а не обьяснили что хотите. Какую документацию вы хотите? Модуль Хотлайн создан для того чтобы выгружать товары в том формате, в котором требует хотлайн, а модуль Розетка в том формате в котором требует розетка и в этом между ними разница?

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #5 korshunov » 26.02.2020, 13:05

OkayCMS писал(а):Модуль Хотлайн создан для того чтобы выгружать товары в том формате, в котором требует хотлайн, а модуль Розетка в том формате в котором требует розетка и в этом между ними разница?

Ожидалось от Вас минимальное описание того, как работает модуль Хотлайн.
В частности, вместо малозначащих слов "в том формате, в котором требует хотлайн" ожидалось более серьезное "в том формате, в котором требует хотлайн, описание формата по ссылке такой-то".

Вот сейчас смотрю на демосайте выгрузку https://demookay.com/hotline.xml , там в файле можно видеть
<categories>
<category id="1">Мебель для дома</category>
<category id="32" parentId="1">Cтолы и стулья</category>
<category id="2" parentId="32">Кресло мешок</category>

А это не соответствует требованиям к тегу category, которые можно видеть на странице https://hotline.ua/about/pricelists_specs/#tr1

dmriabkov M
dmriabkov M
Репутация: 0
Сообщения: 10
Зарегистрирован: 25.02.2020
С нами: 4 года 1 месяц
Сайт

Сообщение #6 dmriabkov » 26.02.2020, 22:04

Для магазина одежды выгрузка hotline не совсем подходит.
<param name="Размер" необходимо брать из варианта товара.

И также указывать по какой таблице размер:
<param name="Размер" unit="UA">50</param>

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #7 korshunov » 29.03.2020, 08:50

Провожу некоторые эксперименты по реальных объемам требуемой пямяти, которые требуются модулю:

227 товаров, описание 10000 байт, memory peak usage: 20 599 720
227 товаров, описание 20000 байт, memory peak usage: 26 186 664
227 товаров, описание 30000 байт, memory peak usage: 34 513 832
227 товаров, описание 40000 байт, memory peak usage: 40 092 584
227 товаров, описание 50000 байт, memory peak usage: 48 460 200
227 товаров, описание 60000 байт, memory peak usage: 54 039 464
227 товаров, описание 70000 байт, memory peak usage: 61 526 952

Вторая серия:
0 товаров, описание 10000 байт, memory peak usage: 10 566 152
1 товар, описание 10000 байт, memory peak usage: 10 566 088
227 товаров, описание 10000 байт, memory peak usage: 20 599 720
300 товаров, описание 10000 байт, memory peak usage: 23 846 936
325 товаров, описание 10000 байт, memory peak usage: 24 940 112
350 товаров, описание 10000 байт, memory peak usage: 26 037 320
375 товаров, описание 10000 байт, memory peak usage: 27 150 912
400 товаров, описание 10000 байт, memory peak usage: 28 252 248

Выходит примерно 40К памяти на каждый товар.
Если в выгрузке 10000 товаров, то надо 400M памяти - уже тяжко будет хостингу такое тянуть, если вообще потянет.
А если по полной программе (в требованиях Hotlint разрешается до 150 тыс товаров на один файл), то памяти надо уже 6G - это уж ни в какие ворота....

Для сравнения выгрузка yandex.php в Simpla в перечисленных аналогичных случях требует memory peak usage в пределах 2M...

Вышеприведенные цифры относятся к случаю, если в настройках модуля задать краткое описание.
Если же в настройках задать полное описание, то цифры существенно выше.

По ходу обнаружилась еще такая ошибочка - если в настройках задать краткое описание, то запрос к базе все равно вытягивает бесполезные большие объемы полного описания...

Насколько я понимаю, подобные нерациональности относятся и к прочих аналогичным выгрузкам.

Интересно, работает ли это реально у кого-то при большом числе товаров?

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #8 OkayCMS » 30.03.2020, 04:09

korshunov писал(а):Провожу некоторые эксперименты по реальных объемам требуемой пямяти, которые требуются модулю:

227 товаров, описание 10000 байт, memory peak usage: 20 599 720
227 товаров, описание 20000 байт, memory peak usage: 26 186 664
227 товаров, описание 30000 байт, memory peak usage: 34 513 832
227 товаров, описание 40000 байт, memory peak usage: 40 092 584
227 товаров, описание 50000 байт, memory peak usage: 48 460 200
227 товаров, описание 60000 байт, memory peak usage: 54 039 464
227 товаров, описание 70000 байт, memory peak usage: 61 526 952

Вторая серия:
0 товаров, описание 10000 байт, memory peak usage: 10 566 152
1 товар, описание 10000 байт, memory peak usage: 10 566 088
227 товаров, описание 10000 байт, memory peak usage: 20 599 720
300 товаров, описание 10000 байт, memory peak usage: 23 846 936
325 товаров, описание 10000 байт, memory peak usage: 24 940 112
350 товаров, описание 10000 байт, memory peak usage: 26 037 320
375 товаров, описание 10000 байт, memory peak usage: 27 150 912
400 товаров, описание 10000 байт, memory peak usage: 28 252 248

Выходит примерно 40К памяти на каждый товар.
Если в выгрузке 10000 товаров, то надо 400M памяти - уже тяжко будет хостингу такое тянуть, если вообще потянет.
А если по полной программе (в требованиях Hotlint разрешается до 150 тыс товаров на один файл), то памяти надо уже 6G - это уж ни в какие ворота....

Для сравнения выгрузка yandex.php в Simpla в перечисленных аналогичных случях требует memory peak usage в пределах 2M...

Вышеприведенные цифры относятся к случаю, если в настройках модуля задать краткое описание.
Если же в настройках задать полное описание, то цифры существенно выше.

По ходу обнаружилась еще такая ошибочка - если в настройках задать краткое описание, то запрос к базе все равно вытягивает бесполезные большие объемы полного описания...

Насколько я понимаю, подобные нерациональности относятся и к прочих аналогичным выгрузкам.

Интересно, работает ли это реально у кого-то при большом числе товаров?

Сравнивать с файлом симплы, как мне кажется не совсем корректно, ведь в нем не передаются доп. фото товара, характиристики товара и прочие моменты, которые можно настроить индивидуально для выгрузки.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #9 korshunov » 30.03.2020, 07:34

OkayCMS писал(а):Сравнивать с файлом симплы, как мне кажется не совсем корректно, ведь в нем не передаются доп. фото товара, характиристики товара и прочие моменты, которые можно настроить индивидуально для выгрузки.

Эх-мм, ожидался от Вас более серьезный ответ по существу, а не легковесная реакция на самое малозначительное замечание.

Но раз уж Вы концентрируетесь на обсуждении мелких вопросов, попробуем по-Вашему. Вот я в файле
Okay/Modules/OkayCMS/Hotline/Controllers/HotlineController.php попробовал закомментировать строки

Код: Выделить всё

            $products = $productsHelper->attachImages($products);
            $products = $this->sliceImagesByProduct($products, 10);

            $products = $productsHelper->attachFeatures($products);

            $countryOfOrigin = $this->settings->get('okaycms__hotline__country_of_origin');
            if (!empty($countryOfOrigin)) {
                $products = $this->attachCountryOfOriginParameter($products);
            }

            $products = $this->attachGuaranteeParameter($products);

чтобы убрать фото и характеристики. Цифры потребления памяти практически не изменились - мегабайты те же...
Такое сравнение с Simpla, надеюсь, для Вас более корректно?

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 1 месяц
Откуда: Днепр

Сообщение #10 zyxer » 30.03.2020, 08:59

korshunov писал(а):Такое сравнение с Simpla, надеюсь, для Вас более корректно?
Нет конечно. В симпле другой подход для вывода товаров, это когда из кортежа результатов php всегда считывает только один результат (что кстати говорит о не совсем корректном замере расходов памяти). Такой подход возможен только если для товаров не нужно доставать дополнительные данные (изображения, свойства etc). Если же хотите сравнить с симплой (убрав свойства, изображения...), тогда сделайте этот кусок как в симпле. А вы подошли к вопросу очень легковесно замерив какие-то параметры для абсолютно разных скриптов, и ваши замеры в данном случае очень ошибочны.
P.S. Мне как-то сказали: "если кто-то считает что может написать web-апликуху, которая может на 10-15МБ памяти работать, быстрее пишите резюмеху в гугл))" Это я к тому, что ваши замеры (когда вы в данном случае сравниваете эти две выгрузки) не совсем корректны.

Добавлено спустя 2 минуты 8 секунд:
korshunov писал(а):Эх-мм, ожидался от Вас более серьезный ответ по существу, а не легковесная реакция на самое малозначительное замечание.
Но и тем не менее, некоторые ваши замечания по посту выше учтены, и уже внесены соответствующие фиксы, в будущей версии выйдут.

Добавлено спустя 29 минут 42 секунды:
Еще, если вас не затруднит, провести такой же анализ на примере модуля YandexXML, было бы интересно увидеть ваши результаты )
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #11 korshunov » 30.03.2020, 12:16

Ничего не понятно.

zyxer писал(а):В симпле другой подход для вывода товаров, это когда из кортежа результатов php всегда считывает только один результат (что кстати говорит о не совсем корректном замере расходов памяти).

Замер делается в конце работы стандартной memory_get_peak_usage, и что тут некорректного, непонятно...


zyxer писал(а):Такой подход возможен только если для товаров не нужно доставать дополнительные данные (изображения, свойства etc).

Такой подход возможен не только в этом случае. Если Вы попробуете раскрыть свой тезис, можно будет говорить по делу. И в той же Simpla дополнительные данные доставать нужно и они добываются...




zyxer писал(а):Если же хотите сравнить с симплой (убрав свойства, изображения...), тогда сделайте этот кусок как в симпле. А вы подошли к вопросу очень легковесно замерив какие-то параметры для абсолютно разных скриптов, и ваши замеры в данном случае очень ошибочны.

Если Вам так все не нравится, можно, покажете правильные замеры?


zyxer писал(а):P.S. Мне как-то сказали: "если кто-то считает что может написать web-апликуху, которая может на 10-15МБ памяти работать, быстрее пишите резюмеху в гугл))" Это я к тому, что ваши замеры (когда вы в данном случае сравниваете эти две выгрузки) не совсем корректны.

Совсем несерьезный прием дискуссии - "кто-то как-то сказал", да еще и на жаргоне, приближающемся к блатному.


zyxer писал(а):Еще, если вас не затруднит, провести такой же анализ на примере модуля YandexXML, было бы интересно увидеть ваши результаты )

А Вы попробуйте сами провести. Я уже кое-что сделал, Вам все некорректно. Покажите образец.


И опять-таки заметьте, Вы все время пытаетесь сворачивать не мелкие детали. А суть моего поста не замечаете.

На всякий случай эту суть приведу, если Вы ее в упор не видите. В Simpla объем памяти почти не зависит от объема выводимых данных, а у Вас он растет в арифметической прогрессии при росте объема данных, что говорит о серьезных просчетах разработчиков и нерациональности организации скрипта...

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 1 месяц
Откуда: Днепр

Сообщение #12 zyxer » 03.04.2020, 09:59

Проанализировав всё вышесказанное, перепробовав много различных вариантов работы модуля, получилась принципиально другая версия модуля.
В ней на данный момент не реализовано корректный вывод урла товара, всё остальное работает.
Из нюансов, этот модуль не будет работать на MySQL ниже 5.6 (используется GROUP_CONCAT), но думаю это только к лучшему ) и там, где печатаются товары, нельзя делать никаких sql запросов, т.к. там используются небуферизированные запросы, и любой запров в БД в это время сломает вывод.

По своим замерам памяти, вижу такие результаты, при выводе чуть более 100К товаров (но товары я не выводил, а печатал в файл, иначе браузер на машине создаёт большую нагрузку и точность измерения вообще никакая).
download (4).png
download (4).png (9.44 КБ) 2371 просмотр


Для теста, нужно на 3.5.1 обновить файл Okay/Core/Settings.php
Settings.zip
(2.27 КБ) 185 скачиваний

И собственно сам модуль (возможны еще какие-то правки, но общая концепция будет такой).
Hotline.zip
(59.61 КБ) 191 скачивание


Считаю что здесь исправлены все замечания, касающиеся производительности модуля
Хотелось бы услышать мнение по этой версии модуля. Может будут еще какие дельные замечания, мы бы сразу их исправили.

В ближайшее время будем тестировать этот модуль, и если проблем не обнаружится, можно будет переделывать остальные выгрузки в таком стиле.
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #13 korshunov » 03.04.2020, 14:04

zyxer писал(а):Проанализировав всё вышесказанное, перепробовав много различных вариантов работы модуля, получилась принципиально другая версия модуля.

Весьма рад, что мои старания привели к осознанию недостатков и необходимости улучшений.

zyxer писал(а):По своим замерам памяти, вижу такие результаты, при выводе чуть более 100К товаров (но товары я не выводил, а печатал в файл, иначе браузер на машине создаёт большую нагрузку и точность измерения вообще никакая).
download (4).png

Хорошо было бы, если б Вы показали свои методы тестирования, хотя бы по минимуму. Ибо тестирование часто есть процесс весьма тонкий и его можно делать очень по-разному и соответственно получать разные результаты...

В частности, сейчас выглядит по меньшей мере странно, что у Вас 100К товаров дают в результате файл 11M. Это значит, что в результирующем файле на запись одного товара приходится в среднем лишь 110 байт. Даже одни XML-теги с пустыми значениями заняли бы намного больше...

Опять же, обычно при тестировании стоит вопрос о работе СЕРВЕРА, ибо разработчикам сайтов тестировать пользовательские компьютеры и браузеры из-за их разнообразия никакого смысла нет. И почему у Вас это смешивается в одну кучу и почему у Вас проблемы с точностью, можно только гадать...

zyxer писал(а):...там, где печатаются товары, нельзя делать никаких sql запросов, т.к. там используются небуферизированные запросы, и любой запров в БД в это время сломает вывод.

Вопрос не принципиальный, но при некоторой смекалке это все можно. Когда-то довольно давно приходилось делать в экзотической ситуации для Simpla параллельную обработку двух небуфферизованных запросов. В Okay не пробовал, но скорее всего пойдет тоже...

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 1 месяц
Откуда: Днепр

Сообщение #14 zyxer » 03.04.2020, 14:12

korshunov писал(а):Хорошо было бы, если б Вы показали свои методы тестирования, хотя бы по минимуму. Ибо тестирование часто есть процесс весьма тонкий и его можно делать очень по-разному и соответственно получать разные результаты...
Запустил выгрузку, но там где вывод, я его убирал и делал запись в файл http://prntscr.com/rsc9ir. Итоговый файл получился около 400+ МБ.

korshunov писал(а):В частности, сейчас выглядит по меньшей мере странно, что у Вас 100К товаров дают в результате файл 11M. Это значит, что в результирующем файле на запись одного товара приходится в среднем лишь 110 байт. Даже одни XML-теги с пустыми значениями заняли бы намного больше...
11 МБ это объем ОЗУ (по идее это то же что и memory_get_peak_usage(), но не уверен что прям одно и тоже). И эти БМ некорректно делить на кол-во товаров, т.к. в памяти в данном случае мы храним один товар.

Добавлено спустя 4 минуты 12 секунд:
korshunov писал(а):Опять же, обычно при тестировании стоит вопрос о работе СЕРВЕРА, ибо разработчикам сайтов тестировать пользовательские компьютеры и браузеры из-за их разнообразия никакого смысла нет. И почему у Вас это смешивается в одну кучу и почему у Вас проблемы с точностью, можно только гадать...
разрабатываю на локальной машине, поэтому если ловить xml в браузер (которая 400+ МБ) браузер начинает создавать на этой же машине нагрузку и точность изменений начинает "плавать"

Еще и браузер такой файл просто отказывается отображать (по крайней мере хром)

Добавлено спустя 5 минут 10 секунд:
korshunov писал(а):Вопрос не принципиальный, но при некоторой смекалке это все можно. Когда-то довольно давно приходилось делать в экзотической ситуации для Simpla параллельную обработку двух небуфферизованных запросов. В Okay не пробовал, но скорее всего пойдет тоже...
просто интересно, это было на одном коннекте к БД?
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #15 korshunov » 03.04.2020, 15:20

zyxer писал(а):просто интересно, это было на одном коннекте к БД?

На разных.
При желании и на одном можно сделать. Но переделывать класс работы с базой - морока некоторая.

zyxer писал(а):разрабатываю на локальной машине, поэтому если ловить xml в браузер (которая 400+ МБ) браузер начинает создавать на этой же машине нагрузку и точность изменений начинает "плавать"

Так не открывайте большой файл, поставьте только ссылку на скачивание (если кому надо).
Файлы таких объемов просто так редко пользователи открывают...

zyxer писал(а):11 МБ это объем ОЗУ (по идее это то же что и memory_get_peak_usage(), но не уверен что прям одно и тоже).

Если так, то для Okay это большое достижение. Даже не верится, что так хорошо...

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #16 korshunov » 07.04.2020, 11:06

Еще выплыли недостатки модуля Hotline.

Модуль создает в таблице ok_products два поля to__okaycms__hotline, not_to__okaycms__hotline.
Первое: если отмечено (значение 1), то выводить товар в выгрузку.
Второе: если отмечено (значение 1), то не выводить товар в выгрузку.
Вроде бы все просто и понятно, но лишь на первый взгляд.

А если чуть задуматься, то сразу видно, что изначально заложены в логику нерациональность и противоречивость. Которые добавляют неудобства в пользовании. И в некоторых случаях возможен даже отказ в работе в админке...

1. Противоречивость.
А если ОБА поля отмечены? Это можно сделать просто и легко, в админке контроля за этим нет. Получаем противоречивость. Легко проверить методом испытаний, что в этой ситуации приоритет за вторым полем. Но, конечно, путаница у админа очень вероятна при многочисленных применениях этих полей.

2. Нерациональность.
Эти два поля легко заменить на одно, и все противоречивости уйдут (разве что в админке как-то надо разрешить вопрос одновременной установки обоих полей). И именно так - одним полем - делается давно-давно как в Simpla, так и в Okay в других подобных ситуациях, когда надо использовать параметр ДА-НЕТ.

3. Неудобство.
3.1. Неудобство маленькое. Если надо отметить нужное поле хотя бы у десятка-другого товаров, то начинается мучение: каждому товару надо ввести текст для поиска, потом найти товар, кликнуть.
3.2. Неудобство побольше. Если в списках для обоих полей много пунктов, а Вы пытаетесь добавить в первый список новый товар, то надо еще проверять, не содержится ли он во втором списке - ведь иначе не сработает, так как при коллизиях приоритет за вторым списком. А определять каждый раз, есть ли он там, довольно утомительно, если список большой...
3.3. Неудобство совсем большое, критичное. Если в списках очень много товаров, то они все выводятся на страницу редактирования модуля. А это может приводить к тому, что страница долго грузится или даже просто зависает. У меня зависания начинаются при 5 тыс товаров в списке. А это ведь далеко до предела, если разработчик нам тут рассказывает, что он тестирует на базе в 100К товаров...
3.4. В то же время перед глазами в админке на странице списка товаров образец удобной организации, пришедший из Simpla - легко и просто - смотришь список и кликаешь.

Зачем разработчики Okay на пустом месте придумали кривой велосипед, для меня загадка...
Последний раз редактировалось korshunov 08.04.2020, 10:17, всего редактировалось 1 раз.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #17 korshunov » 08.04.2020, 06:20

...

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #18 OkayCMS » 09.04.2020, 09:43

korshunov писал(а):Еще выплыли недостатки модуля Hotline.

Модуль создает в таблице ok_products два поля to__okaycms__hotline, not_to__okaycms__hotline.
Первое: если отмечено (значение 1), то выводить товар в выгрузку.
Второе: если отмечено (значение 1), то не выводить товар в выгрузку.
Вроде бы все просто и понятно, но лишь на первый взгляд.

А если чуть задуматься, то сразу видно, что изначально заложены в логику нерациональность и противоречивость. Которые добавляют неудобства в пользовании. И в некоторых случаях возможен даже отказ в работе в админке...

1. Противоречивость.
А если ОБА поля отмечены? Это можно сделать просто и легко, в админке контроля за этим нет. Получаем противоречивость. Легко проверить методом испытаний, что в этой ситуации приоритет за вторым полем. Но, конечно, путаница у админа очень вероятна при многочисленных применениях этих полей.

2. Нерациональность.
Эти два поля легко заменить на одно, и все противоречивости уйдут (разве что в админке как-то надо разрешить вопрос одновременной установки обоих полей). И именно так - одним полем - делается давно-давно как в Simpla, так и в Okay в других подобных ситуациях, когда надо использовать параметр ДА-НЕТ.

3. Неудобство.
3.1. Неудобство маленькое. Если надо отметить нужное поле хотя бы у десятка-другого товаров, то начинается мучение: каждому товару надо ввести текст для поиска, потом найти товар, кликнуть.
3.2. Неудобство побольше. Если в списках для обоих полей много пунктов, а Вы пытаетесь добавить в первый список новый товар, то надо еще проверять, не содержится ли он во втором списке - ведь иначе не сработает, так как при коллизиях приоритет за вторым списком. А определять каждый раз, есть ли он там, довольно утомительно, если список большой...
3.3. Неудобство совсем большое, критичное. Если в списках очень много товаров, то они все выводятся на страницу редактирования модуля. А это может приводить к тому, что страница долго грузится или даже просто зависает. У меня зависания начинаются при 5 тыс товаров в списке. А это ведь далеко до предела, если разработчик нам тут рассказывает, что он тестирует на базе в 100К товаров...
3.4. В то же время перед глазами в админке на странице списка товаров образец удобной организации, пришедший из Simpla - легко и просто - смотришь список и кликаешь.

Зачем разработчики Okay на пустом месте придумали кривой велосипед, для меня загадка...

1. Да, такая противоречивость может быть, но не думаю что клиент в здравом уме допустит такое. Эти настройки настраиваются буквально один раз и клиент четко знает что он хочет, чтобы товар выгружался или нет.
2. А вот тут как раз таки и нет. Вы не совсем понимаете как это работает. Приведу вам два кейса, которые часто бывают.
а) Нужно выгрузить в Хотлайн всю категорию кроме вот этих пяти товаров, их продавать нам не выгодно. Для это кейса выбирается выгрузку в хотлайн всего, а именно эти пять товаров выбираются "Не выгружать".
б) Нам интересно продавать только эти 5 товаров из всей категории. Для этого кейса именно эти пять товаров выбираются "Выгружать".
Как видите, просто ДА-НЕТ здесь недостаточно.

3. Неудобства
3.1. Не представляю пока альтернативного решения.
3.2 Как уже писал выше, клиент в здравом уме знает он хочет этот товар добавить в выгрузку или нет, в реальной жизни ситуации когда товар сначала был в одном списке, а затем в другом - редки
3.3. Не нужно набивать туда 5 тысяч товаров. Если вам нужно столько товаров, то проще выбрать к выгрузке всю категорию. Если что-то из неё не нужно, то можно эти товары добавить в "не выгружать". Если у вас в любом из вариантов нужно 5к товаров добавлять в один из списков - значит у вас плохо сформирован каталог
3.4. При этом в симпле если ты добавил новые товары через импорт, например, то затем нужно идти и кликать эти товары в списке, ведь просто так они в выгрузку не попадут.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #19 korshunov » 10.04.2020, 06:23

Вы зачем-то считаете нужным подробно объяснять СВОЙ СОБСТВЕННЫЙ подход, забывая о том, что пользователи разные, их много, у всех свои потребности и запросы. А задачей разработчика должна быть максимально возможная гибкость функционала под разные потребности, а Вы, наоборот, стараетесь всячески ограничить пользователя, навязывая ему СВОИ СОБСТВЕННЫЕ представления, частенько явно ограниченные...

3.3 Ваши объяснения слишком примитивны и однобоки. Например, если в магазине 100 категорий, надо их все в основном выгружать, но в каждой категории не выгружать 10 товаров, то вот и легко набирается 1000 элементов в списке невыгрузки. А это далеко не предел, и реально работающему магазину набрать 5 тыс исключений - вовсе не сложно...
3.4 В Simpla добавить новое поле в импорт-экспорт весьма легко, неужто этого не знаете?

Опять же,
3.5 Для выгрузки yandex.xml в админке в списке товаров можно быстро отмечать товары для выгрузки обычным образом. А для прочих такого счастья почему-то нет. Почему? Вроде должно быть единообразие. Возможно, это следствие разобщенности, если один модуль один разработчик сочинял, другой - другой. В любом случае это недостаток.
3.6 И в других моментах почему-то модули выгрузки разнятся. Например, в Hotline есть параметр Не выгружать отсутствующие товары со статусом "Предзаказ", а в Rozetka такого нет. И другие подобные параметры гуляют в модулях выгрузки как хотят, что не есть хорошо...

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #20 OkayCMS » 10.04.2020, 17:51

korshunov писал(а):Вы зачем-то считаете нужным подробно объяснять СВОЙ СОБСТВЕННЫЙ подход, забывая о том, что пользователи разные, их много, у всех свои потребности и запросы. А задачей разработчика должна быть максимально возможная гибкость функционала под разные потребности

Задачей разработчика является создание максимально удобного и быстроработающего функционала при сохранении всего функционала и максимальном удобстве его пользования. Гибкость важна - но это не самый максимальный приоритет. Если бы мы все делали ради максимальной гибкости, система работала бы по другому.


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 30 гостей