Павел Романов

Павел Романов

С нами с 03 марта 2014; Место в рейтинге пользователей: #43
Павел Романов
01 августа 2022, 10:27
1
+1
Поскольку тут уже HTML, то через getChunk.
Сниппет:
<?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='.$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;

Вызов:
[[snippetName?
    &tplWrapper=`chunk_wrapper`
    &tpl=`chunk_item`
]]

Чанк chunk_wrapper:
<div class="currency-exchange">
    <div class="ce-title">Таблица изменений курса доллара США за 30 дней</div>
    <table class="table table-condensed ce-table">
        <thead>
            <tr>
                <td>Дата</td>
                <td>Курс рублей за 1 usd</td>
                <td>Изменение</td>
            </tr>
        </thead>

        <tbody>
            [[+items]]
        </tbody>
    </table>
</div>

Чанк chunk_item:
<tr>
    <td>[[+date]]</td>
    <td>[[+value]]</td>
    <td></td>
</tr>
Павел Романов
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]]  ]
  },
//..........
Павел Романов
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]); ?>
Павел Романов
22 июля 2022, 09:56
0
Найдите для своего хостинга рабочий вариант htaccess-редиректа на HTTPS.
Тот, что в умолчальном не на всех работает.
Павел Романов
07 июля 2022, 09:57
0
Есть eventsCalendar — можно попробовать его кастомизировать.
Павел Романов
10 июня 2022, 12:50
0
Вынесите в чанки:
...
&tplPrev=`chunk_name`
...

И там уже [[+id]], [[+tv.tvname]] и т. д.
Павел Романов
10 июня 2022, 12:35
1
+1
В чанках pdoNeighbors как и в pdoResources доступны все поля ресурса + TV, указанные в &includeTVs.
Павел Романов
19 мая 2022, 12:41
+1
Там какой-то глюк, связанный с перемещением плагина в категорию. Почему-то код удаляется, но если убрать привязку к файлу, то все ОК.
Павел Романов
19 мая 2022, 12:10
+1
Попробуйте у плагина CKEditor снять галку «Статичный».
Код самого плагина при этом, естественно, должен присутствовать.
Павел Романов
30 апреля 2022, 18:36
0
Скорее всего код, приведенный Вами не соответствует скрину, поскольку он подразумевает вывод формы оформления заказа (FormIt и shopOrderForm).

Нужно найти вызов Shopkeeper без формы заказа, проверить какой там используется набор параметров (тут у Вас [[!Shopkeeper3@ordercart]]), посмотреть какой чанк прописан там в cartTpl.
Поместите код кнопки оформления в нижней части этого чанка (под <! --tpl_separator -->) и удалите оттуда, где она сейчас выводится.
Павел Романов
07 апреля 2022, 19:29
0
Добавьте в вызов pdoResources параметр &outputSeparator=`, `
Павел Романов
07 апреля 2022, 18:58
0
Каждая категория — отдельный элемент и выводится чанком, указанным в &tpl.
Оформите его как угодно.
Павел Романов
25 марта 2022, 11:38
1
+1
Опции — массив. Название должно быть:
<input type="hidden" name="options[time]" value="***"  />
Павел Романов
25 марта 2022, 10:59
+2
Добавьте скрытую опцию товара с уникальным значением (текущее время, например).
Павел Романов
21 февраля 2022, 13:52
+1
Если pagetitle текущей страницы, то:
[[*parent:is=`23`:then=`[[*pagetitle]]`]]

Если родителя, то:
[[*parent:is=`23`:then=`[[#[[*parent]].pagetitle]]`]]
Павел Романов
12 января 2022, 16:12
0
Можно сделать единый &tpl и проверять ID пункта и выводить в зависимости от этого разное оформление.
К примеру:

<li>
    <a href="{$link}">{$menutitle}</a>
    {if $id == 5}
        // оформление для пункта с id=5
        <ul>{$wrapper}</ul>
    {elseif $id == 6}
        // оформление  для пункта с id=6
        <ul>{$wrapper}</ul>
    {elseif $id == 7}
        // оформление для пункта с id=7
        <ul>{$wrapper}</ul>
    {else}
        // оформление по умолчанию
        <ul>{$wrapper}</ul>
    {/if}
</li>
Павел Романов
30 декабря 2021, 14:27
+1
Есть системная настройка failed_login_attempts.