Копия ресурса - небольшой плагин.
Иногда возникает необходимость при копировании ресурса, присвоить дублю какие то свойства оригинала
из таблиц сторонних компонентов. Это достаточно просто сделать плагином на событие OnResourceDuplicate.
Под катом пример плагина для импорта опций пакета msOptionsColor
из таблиц сторонних компонентов. Это достаточно просто сделать плагином на событие 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();
}
В плагине доступен оригинал и дубликат. Надо всего лишь получить опции цвета оригинала и создать аналогичные объекты, заменив идентификатор продукта на идентификатор дубликата.
Поблагодарить автора
Отправить деньги