Условие в сниппете вывода опций - не выводить удаленные опции
Еще раз всех приветствую, у товаров была текстовая опция со значением «по запросу», но опция была удалена, а цена была прописана в стандартную опцию минишопа price. Однако в фиде yml значение этой опции сохранилось, а за вывод опций отвечает данный сниппет, возможно ли добавить в него условие, что бы он не выводил удаленную опцию?
Скриншот: disk.yandex.ru/i/5g6y_-gg9qXBMA
Скриншот: disk.yandex.ru/i/5g6y_-gg9qXBMA
<?php
if(empty($tpl) || !$modx->getChunk($tpl)){
return false;
}
$sQuery = "SELECT
po.value as value,
o.caption as name
FROM
". $modx->getOption('table_prefix') ."ms2_product_options po
LEFT JOIN
". $modx->getOption('table_prefix') ."ms2_options o ON (po.key = o.key)
WHERE
po.product_id = '".$res_id."'";
$result = $modx->query($sQuery);
$res = $result->fetchAll(PDO::FETCH_ASSOC);
$output = "";
foreach($res as $v){
$output .= $modx->getChunk($tpl,$v);
}
echo $output;
Комментарии: 4
А почему не используете msProductOptions?
Спасибо за подсказку. Получилось вывести. Только не могу понять, как избавится от пробелов. Вроде в чанке все пробелы стер:
{foreach $options as $option}
{if $option.value[0] != ''}
<param name="{$option.caption}">{if $option.value is array}
{$option.value|join :','|ucfirst}
{else}
{$option.value|ucfirst}
{/if}</param>
{/if}
{/foreach}
А выводится с пробелами до и после значения: <param name="Тип светодиода"> Smd3535 (rgb) </param>
<param name="{$option.caption}">{if $option.value is array}{$option.value|join :','|ucfirst}{else}{$option.value|ucfirst}{/if}</param>
Еще так можно:
<param name="{$option.caption}">{$option.value is array ? (($option.value | join :',') | ucfirst) : $option.value | ucfirst}</param>
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.