Всего 125 951 комментарий

Максим
02 августа 2022, 21:35
0
В примере, указанном вами, цены отличаются…
Но если уж так хочется без дополнения, то я бы написал сниппет получения уникальных опций из категории товаров (GROUP BY или DISTINCT) и вызывал бы его указывая интересующие опции… При этом я бы делал так, что бы сниппет принимал список опций и на основании списка строил корректный запрос в базу, оборачивал результат в чанк и выводил…
Максим
02 августа 2022, 21:28
0
Я иногда удивляюсь тому, как люди методом тыка пытаются решать проблемы… Есть Документация Тинкофф
Ознакомившись (даже бегло) становится понятным, что любая оплата будет происходить в 2 запроса… Первый — инициализация платежа в банке, которая возвращает ссылку на форму банка. По опыту взаимодействия могу сказать, что время жизни ссылки регулируется как раз в этом методе. Так же для инициализации платежа нужна уникальная строка для обозначения заказа в вашей базе… Тут уже ясно, что заказ на вашем сайте должен быть уже сформирован и вы должны знать его идентификатор (ID).
Как бы там не было, но стоит так же получать ответ от Банка… Успех или нет… Для этого в лк банка указывается ссылка для нотификаций. По опыту — эту ссылку тоже можно перепределять в методе init (инициализация платежа).
И теперь уже совсем очевидно, что общение с банком в ModX корректнее всего реализовывать на бекенде… Соответственно придерживаясь логики miniShop2…
Так что создавайте класс платежа и не нужно будет костылить на фронтенде. Сложного там нет ничего, если немного почитать документацию и вникнуть…
Вячеслав Варов
02 августа 2022, 21:20
0
цена за тонну внутри категории одна, думаю что это дополнение не совсем подходит
Максим
02 августа 2022, 21:03
0
Кажется корректней было бы использовать msOptionsPrice2
Константин Ильин
02 августа 2022, 18:47
0
disk.yandex.ru/i/wIiFfWqjK78AxA

Есть кешовый файл
disk.yandex.ru/i/cFgFjjmhf3BYFQ
Он должен быть если я вызываю некешированным?

С кеширование мало знаком так что мои догадки такие себе, но будто в сниппете не учтено некешироваться.

Такая ситуация и на других сайтах.
Так же пробовал в контенте Некешируемого Ресурса вызывать с Пустым шаблоном, все равно тянет из кеша
Дмитрий
02 августа 2022, 17:27
0
В итоге я решил вопрос так.
1) Создал объект с марками и моделями (по наводке Романа, еще раз спасибо!)
Что-то такое:
var carsModelsObject = {
    "Alfa Romeo": {
        "146": [],
        "147": [],
        "156": []    
    },

    "Audi": {
        "80": [],
        "90": [],
        "100": [],
        "A2": [],
        "A3": [],
        "A4": [],
        "A5": [],
        "A6": [],
        "A6 Allroad": [],
        "A8": [],
        "Q2": [],
        "Q3": [],
        "Q5": [],
        "Q7": [],
        "TT": [],
        "V8": [],

    },
// и так далее по всем маркам...
}
2) Далее сам скрипт
<script>
      window.onload = function() {
        var carSel = document.getElementById("msoption|marka_0"); // мои названия опций
        var modelSel = document.getElementById("msoption|model_0"); // мои названия опций
    
        for (var x in carsModelsObject) {
            carSel.options[carSel.options.length] = new Option(x, x);
        }
        carSel.onchange = function() {
    
            modelSel.length = 1;
          //display correct values
          for (var y in carsModelsObject[this.value]) {
            modelSel.options[modelSel.options.length] = new Option(y, y);
          }
        }
      }
    </script>
Может не самое элегантное решение, но решение)
Если кто-то может поделиться своим вариантом, возможно более удачным, буду признателен. Спасибо!
Дмитрий
02 августа 2022, 17:18
0
Спасибо за подсказку.
Евгений Дубровин
02 августа 2022, 15:15
0
это выполняется в корзине. (чанк cartOuter)
вот не отрабатывает просто феном, поэтому и не могу понять)
т.е. имя товара — без проблем.
а числа — никак почему-то(

т.е.

function credit() {
	tinkoff.create(
    {
      sum:  {$total.cost},
      items: [

    		{foreach $products as $product}	{ name: '{$product.pagetitle}', price: {$product.price}, quantity: {$product.count} }, {/foreach}
    		]
    ,
      promoCode: 'default',
      shopId: 'cornu',
      showcaseId: 'cornu',
    },
 {ignore} {view: 'newTab'} {/ignore}
  )
	}
вот этот код выдает ошибку credit is not defined
Роман
02 августа 2022, 15:08
0
Шаблон может кэшироваться, Можете посмотреть в папке core/cache/, там увидите, где у вас происходит кэш.
Роман
02 августа 2022, 14:47
0
А где у вас этот скрипт выполняется, на какой странице?
Тут не нужны никакие var, попробуйте:
{$total_cost}
sum: {$total_cost},
У вас же товары в массиве, а вы выше вызываете {$product.price} понятно ничего работать не будет.
{foreach $products as $product}  { name: '{$product.pagetitle}', price: {$product.price}, quantity: {$product.count} }, {/foreach}
Евгений Дубровин
02 августа 2022, 14:15
0
Роман, спасибо, но нужели только так сложно?
ведь все переменные есть на странице где я запускаю этот скрипт.
<script>

  var totalcost = "{$total.cost}";
    var price = "{$product.price}";
    var count = "{$product.count}";

  function credit() {
  tinkoff.create(
    {
      sum: totalcost,
      items: [
        {foreach $products as $product}  { name: '{$product.pagetitle}', price: price, quantity: count }, {/foreach}
        ]
    ,
      promoCode: 'default',
      shopId: 'cornu',
      showcaseId: 'cornu',
    },
 {ignore}   {view: 'newTab'} {/ignore}
  )
  }
</script>
вот в таком коде все нужные переменные есть и их можно в алерт например вывести.
а вот как их в json засунуть не знаю.
т.е. name даже просто феномом отрабатывает (это текстовая строка), а вот цифры (totalcost, price, count) никак не понимаю как можно сделать.
Константин
02 августа 2022, 14:10
0
Спасибо!
Роман
02 августа 2022, 14:04
0
Может попробовать в ignore засунуть:
print_r('{ignore}' . json_encode($arr). '{/ignore}');
Или попробуй так:
print_r(json_encode($arr, JSON_FORCE_OBJECT));
Или так:
print_r($modx->toJson($arr));
Роман
02 августа 2022, 13:57
0
Создать свой класс обработки, и отправлять после на кредитную страницу.
В админке прописать новый класс обработки.
core/components/minishop2/custom/payment/tinkoffCredit.class.php
Роман
02 августа 2022, 13:47
0
Ну это новая версия, для modx3, нажмите удалить, и поставьте предыдущую версию.
Евгений Дубровин
02 августа 2022, 12:16
0
ну т.е. вопрос сводится к тому, как переменную (js или php) в json передать видимо)
R2m0x94 (Vasily)
01 августа 2022, 21:21
0
Ну я в плагин добавил на событие OnUserFormPrerender и всё хорошо.
alex
01 августа 2022, 21:14
+1
Подскажи пожалуйста, куда именно добавить в js список значений?
Ilya
01 августа 2022, 12:30
0
Павел, огромное вам спасибо! Задача решена.