Перейти к содержанию

Как вывести несколько определённых опций в одном контейнере?


Рекомендуемые сообщения

Подскажите, как в один контейнер вывести несколько определённых опций (если они есть)?
Хочу получить такое:

<div class="options">
  <div class="option-1">
     Опция ID1
  </div>
  <div class="option-2">
     Опция ID3
  </div>
</div>

Пробовал так

<?php if ($options) { ?>
    <?php foreach ($options as $option) { ?>
    <?php if ($option['type'] == 'checkbox') { ?>
        <div class="options">
            <?php if ($option['option_id'] == '1' || $option['option_id'] == '2') { ?>
                <div class="option-<?php echo $option['option_id'] ?>">
                    Опция ID<?php echo $option['option_id'] ?>
                </div>
            <?php } ?>
        </div>
    <?php } ?>    
    <?php } ?>
<?php } ?>

Но получил результат

<div class="options">
  <div class="option-1">
    Опция-1
  </div>
</div>
<div class="options">
  <div class="option-2">
    Опция-2
  </div>
</div>

 

Ссылка на комментарий
Поделиться на другие сайты

Воспользуйтесь расширенным поиском по форуму opencart Воспользоваться поиском

Ознакомьтесь с руководством по использованию opencart Перейти к Документации

Расширьте возможности интернет-магазина дополнениями Подобрать Модуль

Выберите исполнителя для вашего технического задания Выбрать Исполнителя

Вот так:

<?php if ($options) { ?>
<div class="options">
    <?php foreach ($options as $option) { ?>
    <?php if ($option['type'] == 'checkbox') { ?>
            <?php if ($option['option_id'] == '1' || $option['option_id'] == '2') { ?>
            <div class="option-<?php echo $option['option_id'] ?>">
            	Опция ID<?php echo $option['option_id'] ?>
            </div>
            <?php } ?>
    <?php } ?>    
    <?php } ?>
</div>
<?php } ?>

 

За цикл опций вынесен вот этот DIV
 

<div class="options">

 

Ссылка на комментарий
Поделиться на другие сайты

Но тут есть некоторые моменты.

Если опций выбранных типов не будет, но будут другие опции, то получим пустой div.options

Для такого случая в контроллере стоит завести свой признак, чтобы его использовать вместо такого условия:

<?php if ($options) { ?>

Например так:

<?php if ($options_some_group) { ?>

Тогда ещё не будет гоняться перебор опций при выводе, если в наборе нет нужных вариантов.

Ссылка на комментарий
Поделиться на другие сайты

В 06.05.2022 в 22:40, mpn2005 сказал:

Для такого случая в контроллере стоит завести свой признак, чтобы его использовать вместо такого условия:

Спасибо большое за подсказку!

Скажите, пожалуйста, как завести в в контроллере свой признак? Вернее как выбрать в эту новую группу определённые опции?

Ссылка на комментарий
Поделиться на другие сайты

В 07.05.2022 в 12:58, DenKuzmin сказал:

Скажите, пожалуйста, как завести в в контроллере свой признак? Вернее как выбрать в эту новую группу определённые опции?

Тут не совсем подходит термин "Выбрать".

Саму выборку тут не надо трогать. Надо просто в цикле перебора добавить проверку, есть ли опции по нужному критерию.

И если есть, то передать этот признак в шаблон.

 

В контроллере товара после строки:

$data['options'] = array();

Добавляем:

$data['options_some_group'] = false;

Это мы сбросили признак, перед началом перебора.

 

Потом перед вот этой строкой:

foreach ($option['product_option_value'] as $option_value) {

Добавляем нужное условие:

if ($option['type'] == 'checkbox' && in_array($option['option_id'], array(1,2,3))) {
    $data['options_some_group'] = true;
}

И взводим наш признак по нужному условию.

В примере признак будет выставлен, если есть опции с типом 'checkbox' и option_id попадает в массив array(1,2,3)

Тут, естественно, надо условие заменить на своё.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...