Mon. - Fri. 9 am - 5 pm Ask a Question
Remember me

Глупый, но важный вопрос :)

1 month 4 weeks ago #1

  • Alexander's Avatar
  • Alexander
  • Posts: 262
Не спрашивайте зачем мне это нужно)) Магазин гридбокса не позволяет производить сложные вычисления с ценой опций для товара, а клиенту это очень важно. Как итог колдую на грани своих возможностей)

Задача по сути простая, но моим знания js очень слабые.


Гридбокс формирует js файл с большим вложенным массивом для каждой страницы



Все что нужно - это заменить 1 значение в этом массиве.

В этом файле переменная gridboxItems, я к ней обращаюсь и получаю значение цены опции для текущего товара
var NeededValue = gridboxItems["page"]["item-15948919360"]["productData"]["data"]["extra_options"]["3"]["items"]["1669539038997"]["price"];
  
  alert(NeededValue);
Возвращается значение "20"

Ура, это то что и должно быть!!


Радовался я не долго, так как это только получение значения, а мне нужно его заменить, одно единственное, но я застрял, поскольку нужно как-то функцией each обратиться к переменной gridboxItems найти то значение "20" и заменить на новое

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

Как это сделать или может есть более простое решение?


Надеюсь мне удалось адекватно объяснить в чем загвоздка

P.S.
На английском не стал писать, т.к. было бы сложно понять, да и другим пользователям это навряд ли поможет

1 month 3 weeks ago #2

  • Artem's Avatar
  • Artem
  • Posts: 10553
Добрый день Александр,

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

Ссылку на страницу и что вы хотите на ней сделать :)

C Уважением,
Артем, Balbooa.com

1 month 3 weeks ago #3

  • Alexander's Avatar
  • Alexander
  • Posts: 262
Вообще я уже придумал другой хитрый способ, чтобы обойти ограничение. Но поясню чего не хватает в гридбокс и почему мне пришлось использовать дополнительный код.

Есть бизнес который продает душевые кабины под заказ. У них есть типовые размеры остекления, но цена этого стекла не фиксированная, а складывается из формулы
Общая цена = (площадь стекла * цену стекла) + (площадь стекла * цену варианта обработки стекла) + (площадь стекла * цену варианта защиты стекла) + простые доп.опции.

Если использовать опции гридбокс то получается что для каждого товара нужно заполнить от 500 до 1500 вариантов цены, что есть невозможно.

Использовать extra опции так же не подходит там наценка фиксированная и не зависит от площади изделия.

В отношении компонента магазина не хватает немного функционала из форм, логики для полей и калькулятор.

Или хотя бы возможность задавать количество товара дробным числом( 2.4 шт.) или чтобы "вес товара" влиять на цену, тогда бы можно было решить мою проблему обычным функционалом.

Для чего я задал вопрос.
Я хотел производить доп. расчеты в js, затем динамически при смене опций товара, менять цену одной из стандартных опций, чтобы получать правильную цену товара, с учетом описанных особенностей бизнеса.
https://works.weston.alexander-drobakhin.com/dushovi-kabiny/configurator

Насколько я разобрался, эта стандартная опция, как и любая другая, получается из файла:
index.php?option=com_gridbox&task=editor.getItems&id=62&theme=9&edit_type=&view=page&menuitem=177&2022-12-07-13-47-28

Там она спрятана под толщей вложенных массивов.

А как обратиться к var gridboxItems и заменить значение глубоко спрятанной опции на свое новое значение, я не знаю)
gridboxItems["page"]["item-15948919360"]["productData"]["data"]["extra_options"]["3"]["items"]["1669539038997"]["price"]

это пример, по сути подойдет цена любой опции, важно понять принцип.

Хотя я уже придумал другое решение по принципу древних щет))

создал 5 вариантов опций, в каждой из которых всего по 9 значений

единицы 1-9
десятки 10-90
сотни 100-900
тысячи 1000-9000
и десятки т. 10000-90000

из этих 5 опций можно получить любую цену от 1 до 99 999
Все остальные опции для клиентов без цены.

А эти 5 скрыты и выбираются скриптами после смены опций клиентом.
+некоторые другие расчету и в итоге получиться нужный результат)

1 month 3 weeks ago #4

  • Artem's Avatar
  • Artem
  • Posts: 10553
Добрый вечер Александр,

Да, калькулятор и условная логика есть в списке задач. Хорошо, что получилось найти решение :)

Вы нас своим сайтом очень удивили. Первоклассная работа, дизайн, функционал, доставка Нова Пошта. Очень приятно видеть работы такого уровня на Gridbox

1 month 3 weeks ago #5

  • Alexander's Avatar
  • Alexander
  • Posts: 262
Спасибо. Все благодаря Вашему невероятному продукту, ни один редактор не дает столько возможностей, с подобной оптимизацией, а главное удобством в работе.

Некоторые сайты мне приходится делать на других системах и я страдаю)) После гридбокс, это как с теслы пересесть на трактор)

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

1 month 3 weeks ago #6

  • Artem's Avatar
  • Artem
  • Posts: 10553
Спасибо большое :) будем стараться дальше несмотря ни на что :pinch:
Powered by Kunena Forum