Всего 125 949 комментариев

Вячеслав Варов
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
Павел, огромное вам спасибо! Задача решена.
Павел Романов
01 августа 2022, 12:25
1
+1
К строке приведите:
// .............
foreach($content_currency->Record as $currency) {
    $items .= $modx->getChunk($tpl, array(
        'date' => (string)$currency->attributes()->Date,
        'value' => (string)$currency->Value,
    ));
}
// .............
Ilya
01 августа 2022, 12:11
0
Да, задача вывести этим сниппетом только курсы доллара по дням.
Поэтому использовал второй вариант без функции.
Но не могу понять, почему-то [[+date]] и [[+value]] возвращаются пустыми.