Gloobus Опубликовано 2 сентября, 2014 Жалоба Поделиться Опубликовано 2 сентября, 2014 При создании и редактировании свойства товара вы можете указать, к товаром какой категории будет применимо это свойство. НО в симпле нет обратного действия, нельзя при создании и редактировании категории указать свойства, которые будут применимы к товарам данной категории. Я решил это немного подправить, получилось так: Как пользоваться, думаю понятно... Попробую расписать как это организовать! 1. В api/Features.php находим функциюpublic function update_feature_categories($id, $categories){ ...}и после нее добавляем новую:public function update_category_features($id, $features){ $id = intval($id); $query = $this->db->placehold("DELETE FROM __categories_features WHERE category_id=?", $id); $this->db->query($query); if(is_array($features)) { $values = array(); foreach($features as $feature) $values[] = "($id , ".intval($feature).")"; $query = $this->db->placehold("INSERT INTO __categories_features (category_id, feature_id) VALUES ".implode(', ', $values)); $this->db->query($query); // Удалим значения из options $query = $this->db->placehold("DELETE o FROM __options o WHERE o.product_id in (SELECT c.product_id FROM __products_categories c WHERE c.category_id = ?) AND o.feature_id not in (?@)", $id, $features); $this->db->query($query); } else { // Удалим значения из options $query = $this->db->placehold("DELETE o FROM __options o WHERE o.product_id in (SELECT c.product_id FROM __products_categories c WHERE c.category_id = ?)", $id); $this->db->query($query); }}2. Открываем simpla/CategoryAdmin.php и после$category->description = $this->request->post('description');добавляем$features = $this->request->post('features');Чуть ниже, после // Загрузка изображения$image = $this->request->files('image');if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)){ $this->categories->delete_image($category->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->categories_images_dir.$image['name']); $this->categories->update_category($category->id, array('image'=>$image['name']));}добавляем это:$this->features->update_category_features($category->id, $features);и почти в конце после $categories = $this->categories->get_categories_tree();добавляем:$features = $this->features->get_features();$this->design->assign('features', $features);$feature_categories_tmp = array();if (!empty($category->id)) { $feature_categories = $this->features->get_features(array('category_id' => $category->id)); foreach ($feature_categories as $f_cat) { $feature_categories_tmp[] = $f_cat->id; }}$this->design->assign('feature_categories', $feature_categories_tmp); 3. Открываем simpla/design/html/category.tpl и в удобное место вставляем "селектлист"<!-- Свойства категории --> <div class="block layer"> <h2>Свойства категории</h2> <select class="multiple_categories" multiple name="features[]"> {foreach $features as $feature} <option value="{$feature->id}" {if in_array($feature->id, $feature_categories)}selected{/if}>{$feature->name|escape}</option> {/foreach} <select></div> Вроде все. Делал на быструю руку и возможно мог что-нибудь упустить. Цитата Ссылка на сообщение Поделиться на другие сайты
FDA Опубликовано 30 ноября, 2019 Жалоба Поделиться Опубликовано 30 ноября, 2019 (изменено) Тег <select> должен быть парным, т.е. второй должен быть закрытым </select>.И еще, при данном дополнении не будет работать решение "Наследование свойств при создании категории" написанное Вами же.http://forum.simplacms.ru/topic/7762-%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2-%D0%BF%D1%80%D0%B8-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8/?hl=%2B%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F+%2B%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0 Изменено 1 декабря, 2019 пользователем FDA Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.