Вызвать опцию товара в сниппете
Как получить одну опцию по ключу товара внутри шаблона через сниппет?
Из того что нашёл на просторах этого форума получилось так, но результат никакой
Из того что нашёл на просторах этого форума получилось так, но результат никакой
<?php
$product = $modx->getObject('msProduct', $modx->resource->get("id"));
$options = $product->getMany('options');
foreach($options as $option){
if($option['key'] == 'type_food'){
print_r($option['value']);
}
}
Комментарии: 2
Решение для условия нашёл такое
{if $_modx->resource.type_toy.0 == "Кукла"}
Кукла
{else}
Машина
{/if}
Забавно что за кучу лет ни одного решения нет ни на форуме, ни вообще в интернете для подобной задачи. Даже сниппета готового никто не написал. Надеюсь когда-то пригодится таким как я бедолагам.
Очень плохой код.
Вот эта строка не нужна
Вот тут ошибка
Сниппет должен возвращать значение, а не вызывать его. Никаких echo, print_r, и var_dump
Ну и желательно использовать строгое сравнение.
Итого корректный код будет таким
Вот эта строка не нужна
$product = $modx->getObject('msProduct', $modx->resource->get("id"));
$modx->resource это и есть $product;Вот тут ошибка
$options = $product->getMany('options');
Если используете getMany и getOne — там всегда будет слово с большой буквы. Потому и не срабатывает код, что вызов неверный. Сниппет должен возвращать значение, а не вызывать его. Никаких echo, print_r, и var_dump
Ну и желательно использовать строгое сравнение.
Итого корректный код будет таким
<?php
$options = $modx->resource->getMany('Options');
foreach ($options as $option) {
if ($option->get('key') === 'type_food') {
return $option->get('value');
}
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.