Копия ресурса - небольшой плагин.

Иногда возникает необходимость при копировании ресурса, присвоить дублю какие то свойства оригинала
из таблиц сторонних компонентов. Это достаточно просто сделать плагином на событие OnResourceDuplicate.
Под катом пример плагина для импорта опций пакета msOptionsColor

<?php

if ($modx->event->name != 'OnResourceDuplicate') {
    return;
}

$msoptionscolor = $modx->getService('msoptionscolor', 'msoptionscolor',
    $modx->getOption('msoptionscolor_core_path', null,
        $modx->getOption('core_path') . 'components/msoptionscolor/') . 'model/msoptionscolor/', $scriptProperties);
if (!($msoptionscolor instanceof msoptionscolor)) {
    return '';
}

/** @var modResource $newResource */
/** @var modResource $oldResource */
$newResource = $modx->getOption('newResource', $scriptProperties, null, true);
$oldResource = $modx->getOption('oldResource', $scriptProperties, null, true);

$class = 'msopColor';
$q = $modx->newQuery($class);
$q->where(array('product_id' => $oldResource->get('id')));
/** @var  xPDOObject|$color */
foreach ($modx->getIterator($class, $q) as $color) {
    /** @var xPDOObject $o */
    $o = $modx->newObject($class);
    $o->fromArray($color->toArray(), '');
    $o->set('product_id', $newResource->get('id'));
    $o->save();
}
В плагине доступен оригинал и дубликат. Надо всего лишь получить опции цвета оригинала и создать аналогичные объекты, заменив идентификатор продукта на идентификатор дубликата.
Володя
18 января 2017, 06:39
modx.pro
4
1 978
+11
Поблагодарить автора Отправить деньги

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0