Получить опции товара в сниппете
Здравствуйте. Подскажите пожалуйста, как получить опции товара в сниппете. Исходя из документации, пробую как-то так:
Мне же нужен массив именно с опциями товара(название опции, значение опции). Подскажите пожалуйста как это можно сделать?
$product = $modx->getObject('msProduct', 17954); //id Товара msProduct
$options = $product->getMany('Options');
print_r($options);
Но ничего не получается, на выходе получается огромный массив, в котором просто тьма информации.Мне же нужен массив именно с опциями товара(название опции, значение опции). Подскажите пожалуйста как это можно сделать?
Комментарии: 4
Получилось вот так получать опции товаров.
<?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 лежат ключи опции, а как же получить именно названия опций?
Попробуйте так (выдаст все опции со значениями товара с ID = 123):
$id = 123; //ID товара
foreach ($modx->getIterator('msProductOption', array('product_id' => $id)) as $opt) {
echo $opt->get('key').' - '.$opt->get('value').'
';
}
Спасибо
Так у вас все верно было, надо выводить только по другому
$product = $modx->getObject('msProduct', 17954); //id Товара msProduct
$options = $product->getMany('Options');
foreach ($options as $v) {
print_r($v->toArray());
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.