Alexey
так по умолчанию же 1, и берет значения TV из &includeTVs
вроде не 1 по умолчанию...тогда можно еще попробовать processTVs=1
Oleksandr
спасибо
Andrew
Подскажите кто знает. Делаю $msProduct = $this->modx->newObject('msProduct'); $msProduct->set('pagetitle', $sourceProduct->name()); $msProduct->set('parent', $this->settings['parent']); $msProduct->set('show_in_tree', 0); ..... $msProduct->save(); и процесс повисает навеки. Где может быть слабое место в движке?, runProcessor также дохнет
Артур
Что такое $sourceProduct?
Артур
И где ты производишь эти действия? Что в $this?
Andrew
объект который выдаёт название нового товара, он его выдаёт с ним всё в порядке
Andrew
И где ты производишь эти действия? Что в $this?
в консоли запускаю служебный скрипт, который получает объект $modx. Все операции с бд работают отлично, товары по артикулам сверяются как надо
Andrew
но при попытке сохранить я не могу даже дождаться ошибки
Артур
Т.е. до сохранения код точно доходит?
Andrew
lf
Andrew
da
Andrew
до момента ->save();
Andrew
а дальше всё, смотрю жду когда скрипт отработает а он отрабатывать не собирается
Артур
А мне непонятно, откуда в консоли this
Andrew
а как он обновится, я как раз этой командой хочу добавить товар, которого нет
Andrew
А мне непонятно, откуда в консоли this
ну аналогично процессорам
Алексей
ну аналогично процессорам
вы делаете обновление(создание) товара в классе тогда $this - понятно, иначе нужно $modx->newObject
Артур
ну аналогично процессорам
Ну процессор это класс там конструктор, там this это экземпляр класса, а в консоли откуда.
Andrew
вы делаете обновление(создание) товара в классе тогда $this - понятно, иначе нужно $modx->newObject
$this->modx это указатель на $modx в моём классе обработчике. Если я сделаю $this->modx->query('INSERT ....') то всё сработает
Алексей
Andrew
published кстати нет, минутку
Алексей
publishedon
Алексей
точнее
Алексей
class_key укажите
Алексей
context_key тоже скорее всего нужен.
Andrew
сейчас попробую всё внести
Andrew
покажите все SET для товара. скорее всего нет необходимых полей типа Published
require_once __DIR__ . '/../../../../../config.core.php'; require_once MODX_CORE_PATH.'model/modx/modx.class.php'; $modx = new modX(); $modx->initialize('web'); $modx->getService('error','error.modError', '', ''); $msProduct = $modx->newObject('msProduct'); $msProduct->set('pagetitle', 'Test'); $msProduct->set('parent', 88323); $msProduct->set('show_in_tree', 0); $msProduct->set('content', 'test'); $msProduct->set('createdby', 1); $msProduct->set('alias', uniqid('test')); $msProduct->set('template', 18); $msProduct->set('published', 1); $msProduct->set('publishedon', time()); $msProduct->set('class_key', 'msProduct'); $msProduct->set('context_key', 'web'); $msProduct->save();
Andrew
переписал для теста, всё равно висит
Anonymous
привет. хочу добавить разную цену для разных опций товара. нашел такую штуку как msOptionsPrice2 (https://modstore.pro/packages/ecommerce/msoptionsprice2) или мб есть какое-то другое решение? кто-то с ней работал? хочу еще использовать msPromoCode, оно нормально будет сосуществовать, не в курсе? ну и еще хочу получать по апи данные о товарах и категориях. туда оно тоже подрубится? буду рад, если кто-то подскажет
Алексей
попробуйте
Алексей
он там капризный
Andrew
нет, такое чуство, что он пытается все товары перебрать для начала
Andrew
а их там 90к
Алексей
ааааааааааааааааааааа
Алексей
епта
Алексей
:)))))))))))))))))
Алексей
а их там 90к
у вас сервак уходит в аут 100%
Алексей
лечится переписыванием на голые sql запросы. :)
Алексей
по-другому ни как.
Andrew
так голые я задолбался уже писать
Anonymous
Нормально. Что значит подрубится?
в плане, что я ж смогу через modx api получать в список к товарам еще и эти опции с модифицированной ценой. я пока не очень понимаю, как эта штука работает
Andrew
лечится переписыванием на голые sql запросы. :)
это не смешно $sql = "INSERT INTO `{$tableName}` ( `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties` ) VALUES ( NULL, 'document', 'text/html', :pagetitle, '', '', :alias, '', '1', '0', '0', {$contentData['parent']}, {$contentData['isFolder']}, NULL, NULL, '1', {$contentData['template']}, '0', '1', '0', '1', '{$contentData['createdOn']}', '1', '{$contentData['editedOn']}', '0', '0', '0', '{$contentData['publishedOn']}', '1', '', '0', '0', '0', '0', '0', 'modDocument', 'web', '1', '{$contentData['uri']}', '0', '0', '1', NULL)";
Anonymous
то есть, обычно для покупки товара используется айди товара и отправка формы с этим айди и с количеством. а как тут реализовать покупку именно той опции - непонятно еще. демки только на видео, пощупать не нашел где
Алексей
так голые я задолбался уже писать
попробуйте отключить настройку на сайте: cache_alias_map
Anonymous
А документацию читал?
ну ток описание на модсторе
Andrew
попробуйте отключить настройку на сайте: cache_alias_map
так вот что интересно, чем там объектная модель модыкса занята, что простой инсерт в 2 таблицы сыпется
Anonymous
А документацию читал?
о, так я там и демку нашел, ничего себе
Алексей
так вот что интересно, чем там объектная модель модыкса занята, что простой инсерт в 2 таблицы сыпется
Алексей Смирнов, [15.03.21 23:21] Увы там идет много всего и победить это нельзя. Проще написать голыми запросами. например при 50...60к - товар создается секунд 20...30. оно вам надо?
Andrew
неее.. это трешак.
лучше пока не придумал
Артур
ну ток описание на модсторе
В админке у каждого товара появится вкладка Модификации. Каждая модификация имеет свой id и она связана с основным товаром. Работать будет. С msPromoCode тоже
Алексей
это не смешно $sql = "INSERT INTO `{$tableName}` ( `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties` ) VALUES ( NULL, 'document', 'text/html', :pagetitle, '', '', :alias, '', '1', '0', '0', {$contentData['parent']}, {$contentData['isFolder']}, NULL, NULL, '1', {$contentData['template']}, '0', '1', '0', '1', '{$contentData['createdOn']}', '1', '{$contentData['editedOn']}', '0', '0', '0', '{$contentData['publishedOn']}', '1', '', '0', '0', '0', '0', '0', 'modDocument', 'web', '1', '{$contentData['uri']}', '0', '0', '1', NULL)";
Вот код упрощающий жизнь вашу: $prefa = $modx->getOption('table_prefix'); $newprod = array( 'parent' => $category ,'alias' => $alias ................... ); $polya = ''; $vstavka = ''; foreach($newprod as $keyi => $line){ $polya .= $keyi.","; $vstavka .= "'".$line."',"; } $polya = trim($polya,","); $vstavka = trim($vstavka,","); $sql = "INSERT INTO `".$prefa."site_content` (".$polya.") VALUES (".$vstavka.");"; $redy = $modx->query($sql); :)
Алексей
Я о чем и говорю. чем больше товаров тем медленнее добавление.
Sentinel
понял, спасибо. тогда побегу покупать
Протестить можно на modhost бесплатно
Andrew
Я о чем и говорю. чем больше товаров тем медленнее добавление.
а есть какой-нибудь способ без процессоров применить все плагины к товару которые должны выполниться при его сохранении?
Andrew
понятно, походу придётся всё в сниппеты переносить
Алексей
но по идеенужно просто код плагинов вписать в скрипт импорта. :) или как-то вызывать отдельно для id товара, но х.з. как это сработает и сработает ли.
Andrew
ну скорее буду выносить в сниппет и при импорте и в плагине вызывать его
Степан
помогите с pdoPage
Степан
не могу написать снипет под pdoPage
Степан
может подскажете что именно должен вернуть снипет для pdoPage
Степан
а то возвращает array
Артур
не могу написать снипет под pdoPage
А почему понадобился собственный сниппет?
Степан
ну там кастомные таблицы
Степан
много( и вообще
Степан
вот сейчас для примера $pdo = $modx->getService('pdoFetch'); $_main_cat = $pdo->getCollection('modResource', array(), array( 'leftJoin' => array( 'EventsSet' => array( 'class' => 'EventsSet', 'on' => 'EventsSet.res_id = modResource.id' ) ), 'select' => array( 'modResource' => '*', 'EventsSet' => '*', ), 'where' => array( 'modResource.parent' => $parents, ), ) ); $output = $_main_cat; return $output;
Артур
Left join можно и в pdoResouces сделать