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

Ilya
31 июля 2022, 18:47
0
Что-то
[[+value]] и [[+dates]]
пустыми отображаются.
Павел Романов
31 июля 2022, 17:16
1
+1
Тут тоже чанк не нужен. Используйте setPlaceholders:
<?php
$dates= array();
$values = array();

foreach($content_currency->Record as $currency) {
    $dates[] = '"'.(string)$currency->attributes()->Date.'"';
    $values[] = str_replace(',', '.', $currency->Value);
}

$modx->setPlaceholders(array(
    'dates' => implode(', ', $dates),
    'values' => implode(', ', $values),
));

return;

Вызывайте сниппет где-нибудь в начале страницы, а в скрипте вставьте плейсхолдеры:
//..........
series: [
    {
      name: "Курс",    
      data: [ [[+values]] ]
    }
  ],
  xaxis: {
    categories: [ [[+dates]]  ]
  },
//..........
Ilya
31 июля 2022, 17:03
0
Добрый день, Павел. Большое спасибо за ответ!
Дело в том, что эти данные я вывожу в графиках с помощью Apexcharts.
Код был большим. Поэтому я сокращенно написал их.
Вот как оно выглядит:
<div id="chart" style="max-width: 760px; margin: 35px auto; opacity: 0.9;">
  <div id="responsive-chart"></div>
</div>

<script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
<script>
    var options = {
  chart: {
    width: "100%",
    height: 380,
    type: "area"
  },
  plotOptions: {
    bar: {
      horizontal: true
    }
  },
  dataLabels: {
    enabled: false
  },
  fill: {
          type: 'gradient',
          gradient: {
            shadeIntensity: 1,
            inverseColors: false,
            opacityFrom: 0.5,
            opacityTo: 0,
            stops: [0, 90, 100]
          },
  series: [
    {
      name: "Курс",    
      data: [<?php echo implode(', ', $currencyArr[1]); ?>]
    }
  ],
  xaxis: {
    categories: [<?php echo implode(', ', $currencyArr[0]); ?>]
  },
  title: {
          text: 'Динамика курса доллара США',
          align: 'left'
        },
        stroke: {
          curve: 'straight'
        },
  legend: {
    position: "right",
    verticalAlign: "top",
    containerMargin: {
      left: 35,
      right: 60
    }
  },
  responsive: [
    {
      breakpoint: 1000,
      options: {
        plotOptions: {
          bar: {
            horizontal: false
          }
        },
        legend: {
          position: "bottom"
        }
      }
    }
  ]
};

var chart = new ApexCharts(
  document.querySelector("#responsive-chart"),
  options
);

chart.render();

</script>
Данный html код я выводил вместе с php кодом внутри сниппета. Поэтому под графикой выводилась ошибка return; 1.
Павел Романов
31 июля 2022, 16:49
+1
У Вас нет HTML и выводить в чанк нет смысла.
Сделайте вывод прямо в сниппете:
<?php
$dates= array();
$values = array();

foreach($content_currency->Record as $currency) {
    $dates[] = '"'.(string)$currency->attributes()->Date.'"';
    $values[] = str_replace(',', '.', $currency->Value);
}
echo implode(', ', $dates);
echo implode(', ', $values);
return;

Этого, естественно, не нужно:
<?php echo implode(', ', $currencyArr[1]); ?>
<?php echo implode(', ', $currencyArr[0]); ?>
Евгений Дубровин
31 июля 2022, 16:41
-1
ну да, то что Вы предлагаете — это точно проще, ага)
при чем тут html?
я сам в основном учился и уже почти полтора десятка лет довольно успешно этим занимаюсь.
я спросил только как там вывести цену и количество, т.к. феном там не отрабатывает.
Ilya
31 июля 2022, 16:29
0
У меня тоже под результатом выходит текст return; 1 если в сниппете смешиваются html и php коды.
Пытался разделить смешанный код на сниппет и чанк, но не получается.

Павел, надеюсь, что вы и мне тоже поможете. Заранее спасибо!
Ilya
31 июля 2022, 14:30
0
Здравствуйте, Павел.
Вы можете помочь разделить нижеследующий код на сниппет и чанк/и?:

foreach($content_currency->Record as $currency) {

	$content_currency_result[0][] = '"'.(string)$currency->attributes()->Date.'"';
	$content_currency_result[1][] = str_replace(',', '.', $currency->Value);

}
	return $content_currency_result;
}
На сайте я вывожу их так:
<?php echo implode(', ', $currencyArr[1]); ?>
  <?php echo implode(', ', $currencyArr[0]); ?>
Кирилл Киселев
31 июля 2022, 11:42
0
Буду признателен!
Роман
31 июля 2022, 08:33
0
Можно проще добавить groupby
deleted
31 июля 2022, 07:25
+1
У нас в компании все кроме меня пишут код в админке. Предположу, что таких много. Ещё на многих хостингах нет доступа по ssh. Для css и js удобный редактор
Кирилл Киселев
30 июля 2022, 22:05
0
Опыт и знание как оно работает под капотом, тем более поможет в будущем, если надо будет внедрить PR для ACE MODX
Артур Шевченко
30 июля 2022, 21:48
0
Можно создать шаблоны для визуального редактора.
Артур Шевченко
30 июля 2022, 21:47
0
Кто вас учил смешивать js и html? Что вам мешает вынести js в отдельный файл, делать ajax-запросы на сервер за нужными данными? Что мешает использовать массивы callbacks доступные в minishop2?
Артур Шевченко
30 июля 2022, 21:25
0
Мой вопрос остался прежним: зачем?
deleted
30 июля 2022, 16:05
0
Подключил редактор monaco (это урезанная версия vs code). Если интересно, напишу инструкцию. Но только ошибки в php не подсвечивает и подсветки синтаксиса smarty нет
Евгений Дубровин
30 июля 2022, 15:17
0
вообще вот в таком коде
<script>
	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}
  )
	}
</script>
не работают только цена и количество, название отрабатывает (видимо потому что текст и в кавычках).
что можно сделать, чтобы цена и количество тоже выводились в массиве?
может не через феном можно как-то?
Артур Шевченко
30 июля 2022, 13:15
0
Дело твоё, но мне просто интересно зачем?
Кирилл Киселев
30 июля 2022, 12:34
0
Это решение имеет место быть, но я ушел от этого варианта изначально, мне он не подходить. Я хочу решить проблему глубже посредством внедрения в ACE. Там заложено это расширение по бьютифай кода, но пока не могу понять почему не работает.
Евгений Дубровин
30 июля 2022, 12:16
0
в итоге эта истрория получила продолжение спустя время)
кнопку в карточке товара (по их иструкции forma.tinkoff.ru/docs/credit/examples/#example-8) удалось добавить без проблем.
вот например здесь cornu.ru/kvadrokopter-mavic-3/
а вот в корзине, точнее на странице оформления заказа не выходит пока.
там надо собрать содержимое корзины в таком виде:
items: [{name: 'iphone 11', price: 100000, quantity: 1}, {name: 'Чехол', price: 500, quantity: 1}],
но это ломает феном и приходится всю функцию
tinkoff.create(
    {
      sum: 10000,
      items: [{name: 'Apple TV', price: 10000, quantity: 1}],
      promoCode: 'default',
      shopId: 'SHOP_ID',
      showcaseId: 'SHOWCASE_ID',
    },
    {view: 'newTab'}
  )
одевать в тэги {ignore}
а как без фенома получить там содержание корзины пока ума не приложу.
вдруг кто поможет)
Артур Шевченко
30 июля 2022, 10:32
0
1. Настраиваешь подключение по SFTP/FTP.
2. Устанавливаешь pdoTools.
3. В системных настройках включаешь fenom на страницах.
4. Кодишь в IDE или любом удобном редакторе кода с подключенным плагином для форматирования кода.
Другой вариант сделать все элементы статичными, но это может плохо повлиять на производительность сайта.