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

Amazko

Хранитель порядка
Регистрация
4 Мар 2012
Сообщения
265
Реакции
729
Как в кастомном шаблоне сменить вот такой выбор:
ZTVKq4c.png

На такой:
p3erwUz.png

тоесть показыват ьв категориях сделать с чекбоксами, а производитеть сделать выпадающим списком.
 
в кастомном шаблоне Чего?? это же две админки, как я понимаю

Что за первый скрин? Какая версия сборки или оригинала??
 
версии однаковые, просто то opencart а ето ocstore.
 
Откройте из админки product_form.tpl из opencart, находите <div id="tab-links"> и кромсаете по образцу ocstore. Не проверял, но похоже даже контроллер править не потребуется.
Но на мой взгляд, диз. opencart более удобен для шопов с большим количеством категорий и производителей.
 
Откройте из админки product_form.tpl из opencart, находите <div id="tab-links"> и кромсаете по образцу ocstore. Не проверял, но похоже даже контроллер править не потребуется.
Но на мой взгляд, диз. opencart более удобен для шопов с большим количеством категорий и производителей.
я все поправил, и не проканывает, говорю же, что в контролере надо чтото менять, но там очень много одинаковых фишек которые проверял через araxis merge
 
Жестоко ошибался, контроллер у ocstore значительно отличается, но решаемо.
Рассматриваю изменения для Opencart 1.5.6.4
Сначала попробуем сделать выбор для "Производитель". Находим в product_form.tpl фрагмент:
Код:
            <tr>
              <td><?php echo $entry_manufacturer; ?></td>
              <td><input type="text" name="manufacturer" value="<?php echo $manufacturer ?>" /><input type="hidden" name="manufacturer_id" value="<?php echo $manufacturer_id; ?>" /></td>
            </tr>
и меняем на код из ocstore:
Код:
            <tr>
              <td><?php echo $entry_manufacturer; ?></td>


              <td><select name="manufacturer_id">
                  <option value="0" selected="selected"><?php echo $text_none; ?></option>
                  <?php foreach ($manufacturers as $manufacturer) { ?>
                  <?php if ($manufacturer['manufacturer_id'] == $manufacturer_id) { ?>
                  <option value="<?php echo $manufacturer['manufacturer_id']; ?>" selected="selected"><?php echo $manufacturer['name']; ?></option>
                  <?php } else { ?>
                  <option value="<?php echo $manufacturer['manufacturer_id']; ?>"><?php echo $manufacturer['name']; ?></option>
                  <?php } ?>
                  <?php } ?>
                </select></td>
            </tr>
В контроллере /admin/controller/catalog/product.php перед
Код:
        // Categories
добавляем строчку:
Код:
$this->data['manufacturers'] = $this->model_catalog_manufacturer->getManufacturers();
Проверьте, похоже на рабочей вариант.
 
Для "Показывать в категориях:" приблизительно можно попробовать по аналогии.
Находим в product_form.tpl фрагмент:
Код:
            <tr>
              <td><?php echo $entry_category; ?></td>
              <td><input type="text" name="category" value="" /></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td><div id="product-category" class="scrollbox">
                  <?php $class = 'odd'; ?>
                  <?php foreach ($product_categories as $product_category) { ?>
                  <?php $class = ($class == 'even' ? 'odd' : 'even'); ?>
                  <div id="product-category<?php echo $product_category['category_id']; ?>" class="<?php echo $class; ?>"><?php echo $product_category['name']; ?><img src="view/image/delete.png" alt="" />
                    <input type="hidden" name="product_category[]" value="<?php echo $product_category['category_id']; ?>" />
                  </div>
                  <?php } ?>
                </div></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'], $product_category)) { ?>
                    <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);">Выбрать всё</a> / <a onclick="$(this).parent().find(':checkbox').attr('checked', false);">Снять выделение</a></td>
            </tr>
В контроллере /admin/controller/catalog/product.php кусок
Код:
        $this->data['product_categories'] = array();

        foreach ($categories as $category_id) {
            $category_info = $this->model_catalog_category->getCategory($category_id);

            if ($category_info) {
                $this->data['product_categories'][] = array(
                    'category_id' => $category_info['category_id'],
                    'name'        => ($category_info['path'] ? $category_info['path'] . ' &gt; ' : '') . $category_info['name']
                );
            }
        }
меняем на код
Код:
        $this->data['categories'] = $this->model_catalog_category->getCategories(0);
        $this->data['product_categories'] = array();

        foreach ($categories as $category_id) {
            $category_info = $this->model_catalog_category->getCategory($category_id);

            if ($category_info) {
                $this->data['product_categories'][] = array(
                    'category_id' => $category_info['category_id'],
                    'name'        => ($category_info['path'] ? $category_info['path'] . ' &gt; ' : '') . $category_info['name']
                );
            }
        }

        if (isset($this->request->post['product_category'])) {
            $this->data['product_category'] = $this->request->post['product_category'];
        } elseif (isset($this->request->get['product_id'])) {
            $this->data['product_category'] = $this->model_catalog_product->getProductCategories($this->request->get['product_id']);
        } else {
            $this->data['product_category'] = array();
        }
Т.к. для тестов использую 1.5.6.4, то с "Главная категория" не могу проверить, другая структура.
 
Последнее редактирование:
А "Главная категория" появляется для нужд ЧПУ, если ставишь vqmod Seo Pro и там уже заведомо она реализована выпадающим списком. Единственный минус, что задавать главную категорию можно только после выбора категорий товара и сохранения значений. Было бы здорово реализовать это через ajax, без перезагрузки
 
Здравствуйте, подскажите пж, а для Главная категория: выпадающий список как сделать?
 
Назад
Сверху