Gloobus Posted July 1, 2014 Report Share Posted July 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> Вроде все! Теперь если при создании категории будет стоять галочка, то произойдет копирование свойств для вновь созданной подкатегории от родителя У меня не было необходимости, но эту доработку можно развить, позволив при создании категории выбрать из списка категорию, с которой будут скопированы свойства. Или например вывести список свойств и прям при создании/редактировании категории закреплять за ней свойства. Quote Link to post Share on other sites
infinity178 Posted July 2, 2014 Report Share Posted July 2, 2014 Алхимик! но полезная вещь Quote Link to post Share on other sites
Konlaz Posted July 12, 2014 Report Share Posted July 12, 2014 Спасибо, очень полезная и нужная вещь, в отличии от разных слайдеров и прочих примочек ))).Намного упрощает заполнение товара! Quote Link to post Share on other sites
Ogybil Posted July 13, 2014 Report Share Posted July 13, 2014 Красавец, спасибо! Quote Link to post Share on other sites
Dimon789 Posted July 15, 2014 Report Share Posted July 15, 2014 супер ) похожее делал, но руки не дошли выложить Quote Link to post Share on other sites
kib Posted October 2, 2014 Report Share Posted October 2, 2014 В "Свойствах" у меня около 100 свойств, и категории около 40. Вопрос: Как можно к каждому свойству присвоить использование во всех категориях? Quote Link to post Share on other sites
trainracing Posted November 19, 2015 Report Share Posted November 19, 2015 При создании категории нажимаешь сохранить, и сохраняется пустая категория ((( Quote Link to post Share on other sites
trainracing Posted November 19, 2015 Report Share Posted November 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 Quote Link to post Share on other sites
mishanya Posted November 19, 2015 Report Share Posted November 19, 2015 Проблема решена. В simpla/html/category.tpl надо вставить такой код: <input name=copy_features type="checkbox" id="copy_features" checked value='1'> <label for="copy_features">Скопировать свойства родителя</label> это пункт 3, мануала из первого поста) Quote Link to post Share on other sites
trainracing Posted November 19, 2015 Report Share Posted November 19, 2015 (edited) это пункт 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> Edited November 19, 2015 by trainracing Quote Link to post Share on other sites
mishanya Posted November 19, 2015 Report Share Posted November 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> и что? в чем ваши изменения? вы поменяли местами атрибуты у инпута. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.