dofus01

Новичок
  • Публикаций

    2
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о dofus01

  • Звание
    Новичок
  1. Хотя наверное основной вопрос все же будет в том как вывести эти привязанные категории на странице производителя, ну а потом почему в админке не отмечаются чекбоксы уже выбранных категорий после сохранения?
  2. Всем привет. Требуется, совет и пинок в нужную сторону. Только начинаю постигать программирование и опенкарт, прошу сильно не пинать. Попытаюсь расписать то что сделал в виде инструкции, вдруг кому то потом пригодится. Надеюсь на Вашу подсказку дамы и господа! OcStore версия 1.5.3.1 Хочу привязать категории к брендам, делаю следующее: Для начала выполняем запрос, дабы была таблица где будет формироваться связь CREATE TABLE IF NOT EXISTS `manufacturer_to_category` ( `manufacturer_id` int(11) NOT NULL, `category_id` int(11) NOT NULL, PRIMARY KEY (`manufacturer_id`,`category_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Далее, открываем /admin/model/catalog/manufacturer.php и там добавляем в addManufacturer if (isset($data['manufacturer_category'])) { foreach ($data['manufacturer_category'] as $category_id) { $this->db->query("INSERT INTO " . DB_PREFIX . "manufacturer_to_category SET manufacturer_id = '" . (int)$manufacturer_id . "', category_id = '" . (int)$category_id . "'"); } } в editManufacturer $this->db->query("DELETE FROM " . DB_PREFIX . "manufacturer_to_category WHERE manufacturer_id = '" . (int)$manufacturer_id . "'"); if (isset($data['manufacturer_category'])) { foreach ($data['manufacturer_category'] as $category_id) { $this->db->query("INSERT INTO " . DB_PREFIX . "manufacturer_to_category SET manufacturer_id = '" . (int)$manufacturer_id . "', category_id = '" . (int)$category_id . "'"); } } в deleteManufacturer $this->db->query("DELETE FROM " . DB_PREFIX . "manufacturer_to_category WHERE manufacturer_id = '" . (int)$manufacturer_id . "'"); ну и новую функцию public function getManufacturerCategories($category_id) { $manufacturer_category_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "manufacturer_to_category WHERE manufacturer_id = '" . (int)$manufacturer_id . "'"); foreach ($query->rows as $result) { $manufacturer_category_data[] = $result['category_id']; } return $manufacturer_category_data; } с моделью все ок, идем дальше в /admin/controller/catalog/manufacturer.php ну и например после $this->data['stores'] = $this->model_setting_store->getStores(); добавляем $this->load->model('catalog/category'); $this->data['categories'] = $this->model_catalog_category->getCategories(); if (isset($this->request->post['manufacturer_category'])) { $this->data['manufacturer_category'] = $this->request->post['manufacturer_category']; } elseif (isset($this->request->get['manufacturer_id'])) { $this->data['manufacturer_category'] = $this->model_catalog_manufacturer->getManufacturerStores($this->request->get['manufacturer_id']); } else { $this->data['manufacturer_category'] = array(); } теперь идем в /admin/view/template/catalog/manufacturer_form.tpl и добавляем <tr> <td><?php echo $entry_category; ?></td> <td><div class="scrollbox"> <?php $class = 'odd'; ?> <?php foreach ($categories as $category) { ?> <?php print (in_array($category['category_id'], $manufacturer_category)); ?> <?php $class = ($class == 'even' ? 'odd' : 'even'); ?> <div class="<?php echo $class; ?>"> <?php if (in_array($category['category_id'], $manufacturer_category)) { ?> <input type="checkbox" name="manufacturer_category[]" value="<?php echo $category['category_id']; ?>" checked="checked" /> <?php echo $category['name']; ?> <?php } else { ?> <input type="checkbox" name="manufacturer_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> ну вот вроде как и все, теперь у нас должно все работать, но работает криво немного, то есть, в базе все обновляется как надо, в нашу созданную таблицу формация о связи заносится, список категорий естественно тоже выводится, но вот чекбоксы постоянно пустые (под спойлером криншот) Ну и возник второй вопрос, как правильно вывести эти привязанные категории на странице соотвествующего производителя? потому как там у меня ваще все не работает.