Dolce

Dolce

Был в сети 13 августа 2021, 14:58
Заказы не принимаю
Возможно проще, но как по мне это костыльно — вместо того, что бы работать напрямую, мы скрываем нативный блок и на нем триггерим событие с другого элемента. Я не любитель такого подхода, но это кому как, хорошо когда есть выбор, как реализовывать, а решать уже вам
Получилось вот так получать опции товаров.
<?php

$parent = [17074,24];

if(!$list = $modx->getCollection('modResource', array(
	'parent:IN' => $parent,
	'template' => 3

))){return;}

foreach ($list as $item){
	$id = $item->get('id');
    if (!$product = $modx->getObject('msProduct', $id)) {
        return $options;
    }
    $options = $product->loadData()->get('options');


    foreach ($options as $k => $v) {
        if (is_array($v)) {
            $options[$k] = array_map('trim', $options[$k]);
            $options[$k] = array_keys(array_flip($options[$k]));
            $options[$k] = array_filter($options[$k]);
        }
        else {
            $options[$k] = trim($options[$k]);
        }
        echo $k;
        print_r($options[$k]);
        
    }
}
Но в $k лежат ключи опции, а как же получить именно названия опций?

Нашел на форуме, вот так вот получилось сделать:
<?php

$query = $this->modx->newQuery('msProduct');
$query->setClassAlias('Product');
$query->leftJoin('msProductData','Data', '`Product`.`id` = `Data`.`id`');
$query->select($this->modx->getSelectColumns('msProduct','Product',''));
$query->select($this->modx->getSelectColumns('msProductData','Data','data.'));

$query->where(array(
            '`Data`.`article`:IN' => [5100349, 5160016],
        ));
$query->sortby("pagetitle", "ASC");
$query->prepare();
$query->stmt->execute();
$rows = $query->stmt->fetchAll(PDO::FETCH_ASSOC);

foreach($rows as $row){
  $id = $row['id'];
  echo $id . "
";
}
Разобрался
Был закомментирован кусок, но еще и взят в скобки, как сниппет:
[[.....]]
Сайт сам не делал, клиент пришел с ним. Так что я постоянно открываю для себя что-то новое на нем=)
А вот почему ошибки генерировались не понятно, судя по аналитиксу никто не ходил по сайту. Ну возможно просто аналитикс уже не всех видит и на самом деле все же по сайту лазят
Я попробовал через консоль, на конкретном ресурсе
$resource =  $modx->getObject('modResource',array(   
      'id' => 1699
  ));

$co = $modx->getCount('modResource', array('pagetitle' => $resource->get('pagetitle'), 'parent' => $resource->get('parent')));

echo $co;

if($co > 1){
 	$resource->set('createdon', time(now));
 	$resource->save();
    
 }
1699 — это ID копии;
В $co лежит 2, то есть условие срабатывает
Ругается на time(now)
[2018-06-05 17:01:58] (WARN @ /home/s6828/www/core/components/console/processors/exec.class.php(24): eval()'d code: 12)
PHP notice: Use of undefined constant now — assumed 'now'