Вывод опций minishop2 в выпадающем списке на главной странице запросом к базе
        Всем привет, всех с праздниками!!! Подскажите пожалуйста, возможно ли и как подтянуть опции minishop2 в выпадающем списке не на странице товара, а на главной. Так понимаю, нужно делать запросы к базе, но в этом деле я новичёк.
Задача дать возможность предварительного выбора опций для передачи их в get-параметры для поиска по сайту по данным опциям.
Как реализовать поиск, мне помогли и подсказали в этой заметке: modx.pro/help/22865
Так что дело вроде как за малым. Осталось как-то подтянуть опции.
Заранее спасибо!
    
    
                                                                                
            Задача дать возможность предварительного выбора опций для передачи их в get-параметры для поиска по сайту по данным опциям.
Как реализовать поиск, мне помогли и подсказали в этой заметке: modx.pro/help/22865
Так что дело вроде как за малым. Осталось как-то подтянуть опции.
Заранее спасибо!
Комментарии: 20
                Код ниже вернёт массив с данными всех опций. Его можно феномом разобрать или дописать этот код и возвращать уже готовый hml. 
                    $options = $modx->getIterator('msOption');
$output = array();
foreach($options as $option){
    $output[] = $option->toArray();
}
return $output;            
                Спасибо!
1. Создал сниппет с этим кодом prnt.sc/ZuVvCHGba7Ny
2. Вывел сниппет в шаблоне prnt.sc/szcJrmnmSQ2O
3. Вот что получилось: ARRAY prnt.sc/vVOULK-zDUZh
                    1. Создал сниппет с этим кодом prnt.sc/ZuVvCHGba7Ny
2. Вывел сниппет в шаблоне prnt.sc/szcJrmnmSQ2O
3. Вот что получилось: ARRAY prnt.sc/vVOULK-zDUZh
                Всё правильно, я так и написал 
                    Код ниже вернёт массив с данными всех опций.Массив надо разобрать. Вот ссылка на документацию по foreach в fenom. Либо можно сделать это в сниппите тем же foreach, только в php.
                То есть, в сниппете мы сделали массив с опциями под названием option: prnt.sc/2KP4LPH3PSi6
А в шаблоне феном разбираем этот массив так? prnt.sc/n_EJth9nw9pr
Тогда на странице пустое поле: prnt.sc/iUZ68adwGFtX
                    А в шаблоне феном разбираем этот массив так? prnt.sc/n_EJth9nw9pr
Тогда на странице пустое поле: prnt.sc/iUZ68adwGFtX
                Нашел такой вариант вывода опций, но выводятся только названия опций, а не значения: prnt.sc/EmEinITQ3NQt
<?php
$options = $modx->getIterator('msOption');
$output = '';
foreach ($options as $opt){
$values[] = $opt->get('caption').'=='.$opt->get('key');
}
$output = implode('||',$values);
return $output;
                    <?php
$options = $modx->getIterator('msOption');
$output = '';
foreach ($options as $opt){
$values[] = $opt->get('caption').'=='.$opt->get('key');
}
$output = implode('||',$values);
return $output;
                Ведь задача вывести значения списком, например МаркиL mazda, kia, bmw… Модели: CX-7, Rio, X6
Пробую написать сниппет такого плана.
<?php
$options = $modx->getIterator('msOption');
$output = array();
$onlyoptions = marka, model;
foreach($options as $onlyoptions ){
$output[] = $onlyoptions ->get('key').'=='.$option->get('value');
}
return $output;
Не работает…
                    Пробую написать сниппет такого плана.
<?php
$options = $modx->getIterator('msOption');
$output = array();
$onlyoptions = marka, model;
foreach($options as $onlyoptions ){
$output[] = $onlyoptions ->get('key').'=='.$option->get('value');
}
return $output;
Не работает…
                Константин, я же дал работающий код, а вы даже не смогли найти информацию о том, как сохранить результат работы сниппета в переменную.
                    {set $options = 'SnippetName' | snippet:[]}
{foreach $options as $option}
чтобы увидеть все поля в массиве.
{$option | print} 
{/foreach}            
                Спасибо, я просто очень новичок в программировании, почти ноль в php по этому так туплю.
Понял, как вывести название полей.
Но не могу понять, как вывести именно значения конкретного поля: prnt.sc/2FKOYRKsdTPl
То есть не МОДЕЛЬ, а его значения: RIO, SOLARIS.
Может не правильно изначально сформулировал.
                    Понял, как вывести название полей.
Но не могу понять, как вывести именно значения конкретного поля: prnt.sc/2FKOYRKsdTPl
То есть не МОДЕЛЬ, а его значения: RIO, SOLARIS.
Может не правильно изначально сформулировал.
                Ок, тогда, наверное, можно использовать стандартный сниппет в свойстве product укажи id любого товара у которого есть нужная опция            
                    
                То есть создать технический товар, который будет содержать все существующие значения опций, указать его в product, но скрыть от индексации и публикации? Спасибо за идею. Точно же.            
                    
                Получилось вывести, но почему-то значения опций идут через запятую: prnt.sc/tttKEXSIDpZU
Есть ли возможность каждое значение опции отдельным полем в выпадающем списке выводить?
                    Есть ли возможность каждое значение опции отдельным полем в выпадающем списке выводить?
                Загляни в чанк посмотри, что там если там join убери, если нет, то используй модификатор split для разбиения строки в массив.            
                    
                Join убрал, заменил на split
Теперь чанк такой:
И выводит, как я уже понял, массив Array: prntscr.com/bBdan3Y7zv1y
Выходит его теперь как-то разобрать foreach menom?
                    Теперь чанк такой:
<select name="marka" class="no-border jsSelect">
{foreach $options as $option}
            {if $option.value is array}
               <option value="{$option.value | split : ', '}">{$option.value | split  : ', '}</option>
            {else}
                <option value="{$option.value}">{$option.value}</option>
            {/if}
            
{/foreach}
</select>И выводит, как я уже понял, массив Array: prntscr.com/bBdan3Y7zv1y
Выходит его теперь как-то разобрать foreach menom?
                Я сейчас тебя удивлю, но в родном чанке от minishop2 уже всё за тебя написали.
                    {foreach $options as $name => $values}
    <div class="form-group row align-items-center">
        <label class="col-6 col-md-3 text-right text-md-left col-form-label" for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
        <div class="col-6 col-md-9">
            <select name="options[{$name}]" class="form-control col-md-6" id="option_{$name}">
                {foreach $values as $value}
                    <option value="{$value}">{$value}</option>
                {/foreach}
            </select>
        </div>
    </div>
{/foreach}            
                Блин, туплю капец.
Вот вызов сниппета:
                    Вот вызов сниппета:
{$_modx->runSnippet('msProductOptions', [
'product' => 8875,
'tpl' => 'msProductOptionsSearchTpl'
'onlyOptions' => 'marka'
])}Вот вместо прошлого кода вставил это и что получилось:<select name="marka" class="no-border jsSelect">
{foreach $options as $name => $values}
    <div class="form-group row align-items-center">
        <label class="col-6 col-md-3 text-right text-md-left col-form-label" for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
        <div class="col-6 col-md-9">
            <select name="options[{$name}]" class="form-control col-md-6" id="option_{$name}">
                {foreach $values as $value}
                    <option value="{$value}">{$value}</option>
                {/foreach}
            </select>
        </div>
    </div>
{/foreach}
</select>И выводит кракозяблу prntscr.com/W-SvGf1Es-rQ            
                Ты похоже и html недавно увидел, да? Ты в select запихнул div внутри которого другой select браузер в шоке.            
                    
                Да, походу)
Но когда такой код чанка
Опять кракозябла
                    Но когда такой код чанка
{foreach $options as $name => $values}
    <div class="form-group row align-items-center">
        <label class="col-6 col-md-3 text-right text-md-left col-form-label" for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
        <div class="col-6 col-md-9">
            <select name="options[{$name}]" class="form-control col-md-6" id="option_{$name}">
                {foreach $values as $value}
                    <option value="{$value}">{$value}</option>
                {/foreach}
            </select>
        </div>
    </div>
{/foreach}Вот что выводит: prntscr.com/ujPFA_6LX2nQОпять кракозябла
                А я ссылку на msProductOptions давал разве? Ты хоть описания сниппетов читай.            
                    
                Заработало!!! Спасибо!!!            
                    
                Пожалуйста, поставь хоть один плюсик что ли…            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.