Gloobus Опубликовано 1 июля, 2014 Жалоба Поделиться Опубликовано 1 июля, 2014 Появилась необходимость сделать так, что бы новая создаваемая категория товаров наследовала те же свойства, что и родительская!Есть у нас, к примеру, категория "Мойки", она родительская, мы в ней создали подкатегории "Мойки для кухни", "Мойки из гранита" и т.п. Создали кучу свойств товара, закрепили их за этими категориями и вроде все хорошо... Но пришло время создать новую подкатегорию "Мойки из стекла" и получаем следующее, что этой подкатегории придется опять, ручками, проставлять все те же самые свойства. Небольшая доработка в пару строк поможет нам наследовать свойства от родителя, в нашем случае достаточно привязать нужные свойства категории "Мойки" и все подкатегории в ней будут привязываться к тем же свойствам. И так...1. Меняем API, немного правим класс по работе с категориями Categories.php. Находим там функцию add_category и добавляем ей дополнительный входной параметр, меняем: public function add_category($category) на это public function add_category($category, $copy_features = false) и добавляем после $this->db->query("UPDATE __categories SET position=id WHERE id=?", $id); следующее if ($copy_features && $category['parent_id'] > 0) { $query = $this->db->placehold("INSERT INTO __categories_features SELECT ?, f.feature_id FROM __categories_features f WHERE f.category_id = ?", $id, $category['parent_id']); $this->db->query($query); } 2. Далее лезем в CategoryAdmin.php и добавляем после $category->description = $this->request->post('description'); следующее $copy_features = $this->request->post('copy_features', 'boolean'); потом чуть ниже находим $category->id = $this->categories->add_category($category); и меняем эту строчку на $category->id = $this->categories->add_category($category, $copy_features); 3. Открываем шаблон category.tpl и в нужное место добавляем <input type="checkbox" name="copy_features" id="copy_features" checked value="1"> <label for="copy_features">Скопировать свойства родителя</label> лучше всего это будет смотреться тут: <!-- Параметры страницы --> <div class="block layer"> <h2>Параметры страницы</h2> <ul> ... <li><input type="checkbox" name="copy_features" id="copy_features" checked value="1"> <label for="copy_features">Скопировать свойства родителя</label></li> </ul> </div> Вроде все! Теперь если при создании категории будет стоять галочка, то произойдет копирование свойств для вновь созданной подкатегории от родителя У меня не было необходимости, но эту доработку можно развить, позволив при создании категории выбрать из списка категорию, с которой будут скопированы свойства. Или например вывести список свойств и прям при создании/редактировании категории закреплять за ней свойства. Цитата Ссылка на сообщение Поделиться на другие сайты
infinity178 Опубликовано 2 июля, 2014 Жалоба Поделиться Опубликовано 2 июля, 2014 Алхимик! но полезная вещь Цитата Ссылка на сообщение Поделиться на другие сайты
Konlaz Опубликовано 12 июля, 2014 Жалоба Поделиться Опубликовано 12 июля, 2014 Спасибо, очень полезная и нужная вещь, в отличии от разных слайдеров и прочих примочек ))).Намного упрощает заполнение товара! Цитата Ссылка на сообщение Поделиться на другие сайты
Ogybil Опубликовано 13 июля, 2014 Жалоба Поделиться Опубликовано 13 июля, 2014 Красавец, спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
Dimon789 Опубликовано 15 июля, 2014 Жалоба Поделиться Опубликовано 15 июля, 2014 супер ) похожее делал, но руки не дошли выложить Цитата Ссылка на сообщение Поделиться на другие сайты
kib Опубликовано 2 октября, 2014 Жалоба Поделиться Опубликовано 2 октября, 2014 В "Свойствах" у меня около 100 свойств, и категории около 40. Вопрос: Как можно к каждому свойству присвоить использование во всех категориях? Цитата Ссылка на сообщение Поделиться на другие сайты
trainracing Опубликовано 19 ноября, 2015 Жалоба Поделиться Опубликовано 19 ноября, 2015 При создании категории нажимаешь сохранить, и сохраняется пустая категория ((( Цитата Ссылка на сообщение Поделиться на другие сайты
trainracing Опубликовано 19 ноября, 2015 Жалоба Поделиться Опубликовано 19 ноября, 2015 Проблема решена. В simpla/html/category.tpl надо вставить такой код: <input name=copy_features type="checkbox" id="copy_features" checked value='1'> <label for="copy_features">Скопировать свойства родителя</label> Прикрепляю все измененные файлы (у category.tpl.php убрать .php). Автору спасибо.Categories.phpCategoryAdmin.phpcategory.tpl.php Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 19 ноября, 2015 Жалоба Поделиться Опубликовано 19 ноября, 2015 Проблема решена. В simpla/html/category.tpl надо вставить такой код: <input name=copy_features type="checkbox" id="copy_features" checked value='1'> <label for="copy_features">Скопировать свойства родителя</label> это пункт 3, мануала из первого поста) Цитата Ссылка на сообщение Поделиться на другие сайты
trainracing Опубликовано 19 ноября, 2015 Жалоба Поделиться Опубликовано 19 ноября, 2015 (изменено) это пункт 3, мануала из первого поста) А теперь внимательно сравниваем код:пункт 3 : <input type="checkbox" name="copy_features" id="copy_features" checked value="1"> <label for="copy_features">Скопировать свойства родителя</label>мой код: <input name=copy_features type="checkbox" id="copy_features" checked value='1'> <label for="copy_features">Скопировать свойства родителя</label> Изменено 19 ноября, 2015 пользователем trainracing Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 19 ноября, 2015 Жалоба Поделиться Опубликовано 19 ноября, 2015 А теперь внимательно сравниваем код:пункт 3 : <input type="checkbox" name="copy_features" id="copy_features" checked value="1"> <label for="copy_features">Скопировать свойства родителя</label>мой код: <input name=copy_features type="checkbox" id="copy_features" checked value='1'> <label for="copy_features">Скопировать свойства родителя</label> и что? в чем ваши изменения? вы поменяли местами атрибуты у инпута. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.