Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Редактирование товара: показывать в категориях


bucs
 Поделиться

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

Версия магазина: ocStore v1.5.5.1.1
Изменения не вносились.
Хостинг OpenServer, Inferno solutions VPS.

Проблема:
Редактирование товара - Связи - Показывать в категориях.

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

 

Причина:

/admin/view/template/catalog/product_form.tpl

 

Шаг 1, при обработке главной категории, происходит замена основного массива:

foreach ($product_categories as $product_categories) ...

 

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

if (in_array($category['category_id'], $product_categories)

 

Интересно, что даже если поправить шаг 1, то корректно работать все равно не будет, так как $product_categories - многомерный массив, и поиск в нем значений $category['category_id'] ничего не даст.

 

Пример решения:

Перед шагом 1 обьявляем вспомогательный массив, скажем $cts = array();

 

Цикл на всякий случай меняем на: foreach ($product_categories as $product_categorie) ..., и соответственно переменные $product_categories внутри цикла на $product_categorie.

 

Далее в конце цикла наполняем массив значениями: $cts[] = $product_categorie['category_id'];

 

В шаге 2 осуществляем поиск по уже новому массиву с корректными значениями:

if (in_array($category['category_id'],  $cts)

 

Вот собственно и все, может кому полезно будет.

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


  • 2 недели спустя...

не могли бы выложить готовый скрипт или строки для добавления в код для "не программистов"?

спасибо!

              <td><select name="main_category_id">
                <option value="0" selected="selected"><?php echo $text_none; ?></option>
<?php $cts = array(); ?>
                <?php foreach ($product_categories as $product_categorie) { ?>
                <?php if ($product_categorie['category_id'] == $main_category_id) { ?>
                <option value="<?php echo $product_categorie['category_id']; ?>" selected="selected"><?php echo $product_categorie['name']; ?></option>
                <?php } else { ?>
                <option value="<?php echo $product_categorie['category_id']; ?>"><?php echo $product_categorie['name']; ?></option>
                <?php } ?>
                <?php $cts[] = $product_categorie['category_id']; } ?>
              </select></td>
            </tr>
            <tr>
              <td><?php echo $entry_category; ?></td>
              <td><div class="scrollbox">
                  <?php $class = 'odd'; ?>
                  <?php foreach ($categories as $category) { ?>
                  <?php $class = ($class == 'even' ? 'odd' : 'even'); ?>


                  <div class="<?php echo $class; ?>">
                    <?php if (in_array($category['category_id'], $cts)) { ?>
                    <input type="checkbox" name="product_category[]" value="<?php echo $category['category_id']; ?>" checked="checked" />
                    <?php echo $category['name']; ?>
                    <?php } else { ?>
                    <input type="checkbox" name="product_category[]" value="<?php echo $category['category_id']; ?>" />
                    <?php echo $category['name']; ?>
                    <?php } ?>
                  </div>
                  <?php } ?>
                </div>
                <a onclick="$(this).parent().find(':checkbox').attr('checked', true);"><?php echo $text_select_all; ?></a> / <a onclick="$(this).parent().find(':checkbox').attr('checked', false);"><?php echo $text_unselect_all; ?></a></td>

Исправленный кусок кода, я думаю куда его вставить вы разберетесь?)

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


  • 3 недели спустя...

 

Вот собственно и все, может кому полезно будет.

 

Спасибо, помогло!  

 

Долго заморачивался с этим до этого, пропадала привязка товара к категориям каждый раз при редактировании товара.

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


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.