FreeCode.Academy
Стратегии обучения
Уроки
Технологии
Участники
Проекты
Топики
Блоги
О проекте
Войти
I
info
10 окт. 2017 г., 15:14
Как скопировать цены?
Добрый день! Возникла необходимость скопировать примерно у сотни страниц цены из TV price2 в {$object.price}.
Пробовал так:
$q
=
$modx
->
newQuery
(
'modResource'
)
;
$q
->
command
(
'update'
)
;
$q
->
innerJoin
(
'ShopmodxProduct'
,
"Product"
)
;
$q
->
query
[
'set'
]
[
"price"
]
=
array
(
"value"
=>
"Product.sm_price"
,
"type"
=>
false
,
)
;
$s
=
$q
->
prepare
(
)
;
print
$q
->
toSQL
(
)
;
// $s->execute();
не получилось. (MODX Revolution 2.5.8-pl + Shopmodxbox 3.0.1) Есть ли какое-нибудь решение (кроме, как переделывать все ручками).
Александр Марков
10 окт. 2017 г., 18:38
Поясните, какая связь между price2 и ShopmodxProduct?
В ShopmodxProduct нет поля price2.
Я так понимаю, Вы обновили shopmodx с версии 2.х до версии 3.х?
I
info
10 окт. 2017 г., 18:53
Связи нет. Просто нашел топик
https://modxclub.ru/topics/sql-zapros-na-update-s-dzhoinami-sredstvami-xpdo-2152.html
и попробовал сделать все по аналогии... Поможете?
Александр Марков
10 окт. 2017 г., 20:59
Начиная с версии shopmodx-3.0 поле price находится в modResource, компонент ShopmodxProduct там не используется.
С ImportX не сталкивались, не могу по нему ничего сказать. Мы используем свой компонент для импорта.
Посмотрите в журнал администратора
http://joxi.ru/82QLOa7t1RjOjm
http://joxi.ru/82QLOa7t1RjOjm
Если после импорта там появляются записи типа
http://joxi.ru/L21GXajh6L84Jr
http://joxi.ru/L21GXajh6L84Jr
, то можно навесить плагин на событие OnDocFormSave, который будет копировать цену из tv в поле price документа. Если цена попадает при импорте в TV price2, то плагин будет примерно такой:
<?php
$object
->
set
(
'price'
,
$object
->
getTVValue
(
'price2'
)
)
;
$object
->
save
(
)
;
I
info
10 окт. 2017 г., 21:04
записи есть. А какой код плагина?
Александр Марков
10 окт. 2017 г., 21:09
Не забудьте включить событие:
http://joxi.ru/VrwzbwQcKaOl3A
http://joxi.ru/VrwzbwQcKaOl3A
I
info
10 окт. 2017 г., 21:11
про событие понял..
Александр Марков
10 окт. 2017 г., 21:14
Ну и после этого нужно повторить импорт
I
info
10 окт. 2017 г., 21:16
Спасибо! Буду пробовать...
Александр Марков
10 окт. 2017 г., 21:24
Пожалуйста. Напишите по результату :)
I
info
10 окт. 2017 г., 21:33
Что-то пошло не так:
Консоль запущена...
Attempted to set execution time to infinite. Max execution time currently: 30.
Тестирование данных перед импортом...
Данные из CSV-файла заменят все данные, введённые вручную. Название файла: import-NA-SITE.csv
Ошибок не обнаружено. Готовим данные к импорту...
Для импорта готовы элементы в количестве: 3. Импортирование...
PHP notice: Undefined index: data
PHP notice: Undefined variable: object
Потом все зависает. Если обновить страницу, появляется 1 ресурс из 3 импортируемых тестовых. В этом ресурсе поле price =0.
Александр Марков
11 окт. 2017 г., 0:20
Попробуйте
<?php
$resource
->
set
(
'price'
,
$resource
->
getTVValue
(
'price2'
)
)
;
$resource
->
save
(
)
;
Добавить комментарий