msProductOptions вывод характеристик в виде ссылок на ресурсы Вопрос.
        Добрый день возникла необходимость при выводе опций из minishop они выводились в виде ссылок на определённые ресурсы. Сейчас они выводятся в виде текста через msProductOptions. Думаю может в шаблоне как то через переменные. Честно говоря не силён в этом. Может кто подскажет.    
    
    
                                                                                
            Комментарии: 8
                Создаеш TV, с типом ввода — Список (множественный выбор)
В поле вожможные значения пишеш чтото такое
                    В поле вожможные значения пишеш чтото такое
@EVAL return $modx->runSnippet('msProducts', array(
    'parents'=>$parentID,
    'where'=>'{"Data.price:>=":"150"}',
    'limit'=>0,
    'sortby'=>'{"pagetitle":"ASC"}',
    'tplOuter'=>'@INLINE [[+output]]',
    'tpl'=>'@INLINE [[+pagetitle]]==[[+id]]',
    'outputSeparator'=>'||'
));А при выводе на сайте береш значение твоей TV и передаеш в pdoResources{'!pdoResources' | snippet:[
    'parents' => 0,
    'limit' => 0,
    'resources' => $_modx->resource.your_tv_field,
    'tpl' => '@INLINE <a href="{$uri}">{$pagetitle}</a>'
]}я только не помню точно ставит ли «Список (множественный выбор)» — какой-то свой разделитель между значениями, если ето не "," то надо будет заменить розделитель            
                Спасибо, но в этом случае как я понимаю он все опции в виде ссылок выкинет. А если нужны определённые характеристики в виде ссылок на ресурсы? Может быть в шаблоне с применением If? Допустим если «value == встроенная» то один вывод где значение в виде ссылки если значение другое то другой вывод. Извиняюсь в php не силён. )))) Я конечно понимаю, что это костыль, но ситуация, что нужно именно так сделать.            
                    {if in_array($id, [100, 150, 154])}
    <a href="{$uri}">{$pagetitle}</a>
{else}
    {$pagetitle}
{/if}только может быть такое что модыфикаторы не сработають для tpl — @INLINE и надо будет создавать отдельний чанк для этого            
                Нужен конкретный пример. Какая конкретно опция (цвет, вес или еще что-то), как она забивается (тип какой: текст, число и т.п.), на какой ресурс должна вести, вообще логика работы в целом (т.е. что хочешь получить) и т.д.
А так, если честно, не особо понятно…
                    А так, если честно, не особо понятно…
                Есть вывод характеристик в карточках товара, нужно чтобы часть этих характеристик в виде ссылок на ресурсы была. Характеристики эти из вкладки «опции товара» minishop2 
Вот как то так: disk.yandex.ru/i/pYmShQ_blS7Olw
Характеристики выводятся через msProductOptions tpl:
{foreach $options as $option}
{$option.caption}:
  
{if $option.value is array}
 
{$option.value | join: ', '}
{else}
{$option.value}
{/if}
 
 
{/foreach}
                    Вот как то так: disk.yandex.ru/i/pYmShQ_blS7Olw
Характеристики выводятся через msProductOptions tpl:
{foreach $options as $option}
{$option.caption}:
{if $option.value is array}
{$option.value | join: ', '}
{else}
{$option.value}
{/if}
{/foreach}
                Ну тогда как было написано выше. Только не по id, а прям по названию проверять. Примерно как-то так.
                    {set $data = [
    'Фрезеровка' => 2,
    'Гравировка' => 123
]}
{foreach $options as $option}
    ...
    {if in_array($option.value, $data)}
        <a href="{$data[$option.value]|url}">{$option.value}</a>
    {else}
        {$option.value}
    {/if}
    ...
{/foreach}            
                Что то подмена не срабатывает. array пишет во всех строках            
                    
                У меня просто пример, не проверял. В примере многоточие стоят. Это означает, что там другой код должен быть. А именно — проверка на массив и т.п.
Может быть даже лучше в отдельный сниппет вынести.
                    Может быть даже лучше в отдельный сниппет вынести.
{set $data = [
    'Фрезеровка' => 2,
    'Гравировка' => 123
]}
{foreach $options as $option}
    {if $option.value is array}
        {foreach $option.value as $key => $value}
            {if in_array($value, $data)}
                {set $option.value[$key]}
                    <a href="{$data[$value]|url}">{$value}</a>
                {/set}
        {/foreach}
        {$option.value | join: ', '}
    {/if}
    ...
{/foreach}(не проверял)            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.