mfilin

mfilin

Был в сети 29 ноября 2022, 13:48
Заказы принимаю
дружище, я ни в коем случае не хочу чем либо обидеть или достать тебя :)
вы пишите код, как сами говорите что он изящен и безупречен — верю! но в
доках порой неочевидно написано ( вот и приходится по разному доставать инфу

по поводу ТП — компонент заведен на другого человека, а разбираемся как всегда
ночью)

ps еще раз говорю, что не хотел бы чем то обидеть )
обязательно почитаю и применю, но пока этого хватит…
[[!YandexMaps2?
                    &objects=`[{
                        "type":"placemark",
                    	"geometry":[[!ymaps_center? &x=`[[*os_latitude]]` &y=`[[*os_longitude]]`]]
                	}]`
                    &objectsInScope=`true`
                    &center=`[[!ymaps_center? &x=`[[*os_latitude]]` &y=`[[*os_longitude]]`]]`
                ]]
при передаче &zoom он как был 10 так и остается :(
более менее понятно как работать с компнентом, но можно ли пояснить как передавать массив $objects
так координаты парсятся в бд и нужно на их основе создавать метку…
вот код чанка
[[!YandexMaps2?
                    &defaultIconContent=`test`
                    &defaultBalloonContent=`test2`
                    &objects=`[{
                        type: 'placemark',
                         geometry: {
                             coordinates:[[!ymaps_center? &x=`[[*os_latitude]]` &y=`[[*os_longitude]]`]]
                         }
                    }]`
                    &class=`msProduct`
                    &objectsInScope=`true`
                    &center=`[[!ymaps_center? &x=`[[*os_latitude]]` &y=`[[*os_longitude]]`]]`
                ]]
ymaps_center возвращает строку в виде [x, y]
извините за некропост, но может кому-то сэкономит время…
также столкнулся с такой задачей, но думал что плагин minishop2 в modx ставит ID только в таблице
`modx_ms2_products` и также был удивлен, когда мной же проставленное значение AUTO_INCREMENT становилось прежним… магия блин…

но нет, пошарив по базе убедился в том, что где то данные «дублируются» — modx_site_content…
в итоге написал что то подобное в своем сниппете удаления ресурсов:

....
     if($process){
        // msProduct
        $sql = 'SELECT MAX(id) as maxID FROM modx_ms2_products';
        $statement = $modx->query($sql);
        $result = $statement->fetch(PDO::FETCH_ASSOC);
        $maxID = $result['maxID'];

        $sql = 'ALTER TABLE modx_ms2_products AUTO_INCREMENT=' . $maxID;
        $modx->exec($sql);
        
        // modx siteContent
        $sql = 'SELECT MAX(id) as maxID FROM modx_site_content';
        $statement = $modx->query($sql);
        $result = $statement->fetch(PDO::FETCH_ASSOC);
        $maxID2 = $result['maxID'];

        $sql = 'ALTER TABLE modx_site_content AUTO_INCREMENT=' . $maxID2;
        $modx->exec($sql);
    }
    ....
еще вопрос
на данный момент я написал скрипт по наполнению базы msProduct со свойствами, используя Вашу подсказку. скрипт отрабатывает на небольшом количестве объектов и ~40 свойствах в консоль-менеджере modx (конечно пока есть оговорка, что это тестовый сервер), но как только объектов > 500, менеджер «отваливается», но объекты догружаются, то есть nginx видимо не дожидается ответа от apache.

что я делаю дальше — дополняю скрипт и вешаю его на крон как php-cli… он снова грузит объекты, но почему то не проставляются свойства (

я еще конечно посмотрю логи на тестовом, но корректно вообще ли вешать такого рода скрипт на крон /usr/bin/php?
подскажите каким образом можно обновлять программно значения полей в товаре?
например, если бы я использовал опции минишопа, то делал бы так

// проставка Опций
function addOption($modx, $parent_id, $option, $value){
$option = $modx->newObject('msProductOption', array(
'product_id' => $parent_id,
'key' => $option,
'value' => $value
));
$option->save();
}

а как в этом компоненте можно поступить?