Подмодуль VBO - массовое изменение цен, старых цен в Commerce (Drupal 10)

Главные вкладки

Аватар пользователя Danunafik Danunafik 6 апреля 2023 в 20:07

Как то понадобилось клиенту изменять вручную много цен на сайте. Модуля не нашел, подумал что как то в VBO можно добавить такое. В папке VBO случайно нашёл модуль views_bulk_operations_example. Подумал что вот это вот оно. Методом тыка написал вот модуль (я полный ноль в написании модулей, php и в апи друпала, возможно там всё набекрень, однако работает, и все проверки на дурака вроде сделал).

Модуль работает только при установленном Views Bulk Operations (конкретно этот работал в views_bulk_operations 4.2.3 и drupal 10.0.7). Старый модуль, который я делал для друпала 9 сразу не заработал в Drupal 10, пришлось опять лезть в модуль views_bulk_operations_example и искать что изменилось, копируя куски кода. Ну там всего один файл, так что даже с нулевыми познаниями методом тыка можно починить.

Устанавливаете VBO, этот модуль, создаете views которое отображает вариации товаров, добавляете поле VBO, и там выбираете чекбокс "Price field modify value" (название кривое, забыл нормально написать).

Если не знаете как пользоваться VBO, то звоните им, это не ко мне.

Модуль использует стандартное поле вариаций товаров price. Если не используете Drupal Commerce, то можно использовать обычный тип материала со своим полем цены. Нужно произвести небольшие изменение в файле ViewsBulkOperationPriceAction.php. Что делать написано в самом файле ViewsBulkOperationPriceAction.php.

Модуль может копировать цену перед изменением в другое поле field_price_backup (десятичное число) и восстанавливать из него. Поле нужно создать в вариациях если хотите делать бэкап. А то можно не то изменение сделать, а потом придётся на хостинг лезть восстанавливать.

Модуль может изменять основные и старые (зачеркнутые типа) цены методом умножения и сложения/вычитания, может округлять до 10.
Может устанавливать старую цену рандомно на все товары, рандомно на рандомные товары по указанному диапазону, фиксированно на все товары или фиксированно на рандомные товары. Короче как в озоне можете делать от балды скидки на всё. Имеются проверки, если цена меньше нуля получилась, то будет ноль, если старая цена меньше настоящей получилась - то старая цена и процент скидки удалятся.
Для использования старой цены нужно создать поле в вариациях field_oldprice (десятичное число, сделать необязательным, хотя опять таки если хотите как в озоне, делайте обязательным, чтобы менеджер не профукал).
Также модуль установит процент скидки в поле field_discount_procent (целое число, если его опять таки создать в вариациях).

Модуль проверяет есть ли такие поля, поэтому вроде ошибок не должно быть. Если поля нету, просто функции не будут использоваться.

ВложениеРазмер
Иконка пакета views_bulk_operations_price_actions.zip8.64 КБ

Комментарии

Аватар пользователя Danunafik Danunafik 7 апреля 2023 в 2:17

А я тоже сначала подумал, а есть же views_bulk_edit, а потом подумал, а чё views_bulk_edit ? Как он цены то изменит на процент? Или я что то не знаю ?

Аватар пользователя Danunafik Danunafik 7 апреля 2023 в 15:39

VasyOK wrote: Полезное дело делаете. На орге решение выставляли?

Не, не выкладывал. Страшно как то с такими познаниями php и английского, я не переведу. Я понимать то понимаю, а сказать не могу. Да и не знаю я что там делать, потом следить за ним нужно, обновлять типа ?

gun_dose wrote: Всегда забавляло, как скидки устанавливаются путём ввода старой цены

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

Аватар пользователя VasyOK VasyOK 7 апреля 2023 в 16:43

https://www.drupal.org/project/issues/commerce - создаете тут issue примерно с таким содержанием:

/*-------------------------*/
Sollution. Mass price update.

Lady and gentleman let me introduce wonderful aproach for update prices in commerce variations threw VBO.
Tadam: views_bulk_operations_price_actions.zip (attached).

/*-------------------------*/

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

Аватар пользователя Danunafik Danunafik 7 апреля 2023 в 19:12

Lady and gentleman лет ми спик фром май харт,
там еще и в самом модуле всякой ереси понаписано. Это же надо всё переводить. Не, я не умею, выкладите кто нибудь, если хочется.

VasyOK wrote: Функцию перевода в самописе знаете как обновлять?

Чавой обновлять, функцию? Я не вкурсе, ребят.

Аватар пользователя VasyOK VasyOK 8 апреля 2023 в 0:33

Ну вы же хотите что бы с вами работали зарубежные компании, например из Индии и Нигерии. Общение на орге позволяет выходить на международный уровень.
https://chromatichq.com/insights/drupal-code-standards-t-function/ - вот вам документация.

Аватар пользователя Danunafik Danunafik 8 апреля 2023 в 1:52

VasyOK wrote:
Ну вы же хотите что бы с вами работали зарубежные компании, например из Индии и Нигерии. Общение на орге позволяет выходить на международный уровень.
https://chromatichq.com/insights/drupal-code-standards-t-function/ - вот вам документация.

Не, я не хочу с зарубежными компаниями, с чего вдруг такая мысль, я вообще работать не люблю. Да и сайты не основное направление, я полиграфией занимаюсь. Просто решил начать составлять конструктор себе для сайтов на 10 друпале пока появился интерес. Вот начал с этой функции. Ни на какие орг я не пойду, переводить не буду, это всегда головная боль для меня этот английский.