Переиндексация TV на сайте (обновить TV массово)

Доброе утро.
Как переиндексисровать TV параметр на всем сайте?
TV1 — цена в долларах
TV2 — цена в рублях
В системных настройках — вбивается курс с учетом всех надбавок
Плагин берет TV1 и умножает на курс, округляет до десятков и пишет в TV2 (OnDocFormSave).
На сайте показывается TV2
Сегодня изменили курс и надо все ресурсы открыть, обновить TV2.

Как это сделать массово, не открывая каждый ресурс в отдельности?
Павлик Мышкин
12 января 2016, 08:08
modx.pro
1
1 737
0

Комментарии: 11

Илья Уткин
12 января 2016, 11:23
2
+3
Установить Console и запустить в нем что-то типа такого:

<?php
// Сколько ресурсов обрабатывать за раз
$step = 1;
// Если процесс уже остановлен, сбрасываем OFFSET
if (!isset($_SESSION['Console']['completed'])) {
    $_SESSION['console_offset'] = 0;
}
$offset = isset($_SESSION['console_offset']) && $_SESSION['console_offset'] ? $_SESSION['console_offset'] : 0;
// Формируем запрос
$q = $modx->newQuery('modResource');
$total = $modx->getCount('modResource', $q);
// Пропускаем все уже обработанные объекты
$q->limit($step, $offset);
$resources = $modx->getCollection('modResource', $q);
// Обработка
foreach ($resources as $resource) {
    $modx->runProcessor('resource/update', $resource->toArray());
}
// Меняем offset
$_SESSION['console_offset'] = $offset + $step;
if ($_SESSION['console_offset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
} else {
  $sucsess = round($_SESSION['console_offset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
print "\n";
print $sucsess.'% ('.$_SESSION['console_offset'].')'."\n\n";
Сергей Шлоков
12 января 2016, 13:11
+2
Вообще, это крайне неэффективный способ. Достаточно одной базовой цены, например, в долларах. Задали курс и на сайте выводить цену в долларах * курс. И ничего пересчитывать не нужно, цена в рублях формируется не лету.
    Павлик Мышкин
    12 января 2016, 13:56
    0
    Переиндексация цен за 5 лет, на моей памяти, была 2 раза.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    11