Получить опции товара в сниппете

Здравствуйте. Подскажите пожалуйста, как получить опции товара в сниппете. Исходя из документации, пробую как-то так:
$product = $modx->getObject('msProduct', 17954); //id Товара msProduct
$options = $product->getMany('Options');
print_r($options);
Но ничего не получается, на выходе получается огромный массив, в котором просто тьма информации.
Мне же нужен массив именно с опциями товара(название опции, значение опции). Подскажите пожалуйста как это можно сделать?
Dolce
13 января 2019, 15:12
modx.pro
1
2 065
0

Комментарии: 4

Dolce
13 января 2019, 16:15
0
Получилось вот так получать опции товаров.
<?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 лежат ключи опции, а как же получить именно названия опций?

    Павел Романов
    13 января 2019, 17:04
    +1
    Попробуйте так (выдаст все опции со значениями товара с ID = 123):
    $id = 123; //ID товара
    foreach ($modx->getIterator('msProductOption', array('product_id' => $id)) as $opt) {
    	echo $opt->get('key').' - '.$opt->get('value').'
    ';
    }
      Dolce
      13 января 2019, 19:07
      0
      Спасибо
      Андрей
      14 января 2019, 14:39
      1
      0
      Так у вас все верно было, надо выводить только по другому

      $product = $modx->getObject('msProduct', 17954); //id Товара msProduct
      $options = $product->getMany('Options');
      
      foreach ($options as $v) {
         print_r($v->toArray());
      }
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4