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

Роман
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]] возвращаются пустыми.
Роман
01 августа 2022, 12:09
0
Ну вам там выше писали. В чем проблема. Можете, просто выводить картинки из thumb, если нужны medium:
{$thumb | replace: "/small/" : "/medium/"}
Павел Романов
01 августа 2022, 12:00
1
+1
Да, добавьте точку с запятой, я опечатался.

Если Вы используете функцию, то нужно в ней объявить глобальную переменную $modx:
function get_currency_td($currency_code = 'R01235') {
    global $modx;
    $out = '';
    $date_start = date('d/m/Y', strtotime('-30 days')); // Дата начала выборки
    $date = date('d/m/Y'); // Текущая дата (используется для кэша и для конца выборки)
    $cache_time_out = 86400; // Время жизни кэша в секундах
    $file_currency_cache = './currency.xml'; // Файл кэша
    if(!is_file($file_currency_cache) || filemtime($file_currency_cache) < (time() - $cache_time_out)) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='.$date_start.'&date_req2='.$date.'&VAL_NM_RQ='.$currency_code);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        $out = curl_exec($ch);
        curl_close($ch);
        file_put_contents($file_currency_cache, $out);
    }
    $content_currency = simplexml_load_file($file_currency_cache);
    $content_currency_result = ''; // Переменная для объединения всех дней в одну группу
    
    foreach($content_currency->Record as $currency) {
        $items .= $modx->getChunk($tpl, array(
            'date' => $currency->attributes()->Date,
            'value' => $currency->Value,
        ));
    }	
    if($items != '') $out = $modx->getChunk($tplWrapper, array('items' => $items));
    return $out;
}
Но потом, естественно, в сниппете где-то нужно эту функцию вызывать.

Но если у Вас задача вывести этим сниппетом только курсы доллара, функция не нужна, но надо непосредственно указать код валюты (в 9 строке):
<?php
$out = '';
$date_start = date('d/m/Y', strtotime('-30 days')); // Дата начала выборки
$date = date('d/m/Y'); // Текущая дата (используется для кэша и для конца выборки)
$cache_time_out = 86400; // Время жизни кэша в секундах
$file_currency_cache = './currency.xml'; // Файл кэша
if(!is_file($file_currency_cache) || filemtime($file_currency_cache) < (time() - $cache_time_out)) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='.$date_start.'&date_req2='.$date.'&VAL_NM_RQ=R01235');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $out = curl_exec($ch);
    curl_close($ch);
    file_put_contents($file_currency_cache, $out);
}
$content_currency = simplexml_load_file($file_currency_cache);
$content_currency_result = ''; // Переменная для объединения всех дней в одну группу

foreach($content_currency->Record as $currency) {
    $items .= $modx->getChunk($tpl, array(
        'date' => $currency->attributes()->Date,
        'value' => $currency->Value,
    ));
}	
if($items != '') $out = $modx->getChunk($tplWrapper, array('items' => $items));
return $out;
Константин
01 августа 2022, 11:53
0
Убрал 'includeThumbs' => 'medium' — дубли пропали. Как так?
Роман
01 августа 2022, 11:50
0
Ответить даже если предположить, что проблема в этом: AND `msProduct`.`id` IN (4,4,4,4,4,27,28)
Запрос выводит 7 строк, хотя долен 3.
Попробуйте уберите: 'includeThumbs' => 'medium'
Константин
01 августа 2022, 11:47
0
Спасибо, помогло. А в чем была проблема? На других сайтах такого не наблюдается.