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

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

$product = $modx->getObject('msProduct', 17954); //id Товара msProduct
$options = $product->getMany('Options');

foreach ($options as $v) {
   print_r($v->toArray());
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.