Jump to content
Sign in to follow this  
bucs

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

Recommended Posts

Версия магазина: 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)

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

спасибо!

              <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>

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

Share this post


Link to post
Share on other sites

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By hiven411
      Всем привет. Нужно решить такую проблему:

      При выборе категории, фильтра отсутствует список уже созданных (см. прикрепленный рис.1), и категория, фильтр добавляется лишь тогда когда мы мы начинаем прописывать их первые буквы. Как сделать чтобы категории и фильтры были как на рис.2. (выпадающий список, список) и кнопка "Производитель" была выпадающим списком? Версия OpenCart 1.5.6. Благодарю!

      Админка -> Каталог -> Товары -> Изменить -> Ссылки (Связи)


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.