Помощь Дубликаты категорий

Тема в разделе "Opencart", создана пользователем Xrumer, 29 июн 2013.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Модераторы: ZiX
  1. Xrumer

    Xrumer Создатель

    Регистр.:
    21 ноя 2012
    Сообщения:
    46
    Симпатии:
    25
    Подскажите, как реализовать следующий хак? а именно: нужно запретить добавление категории при наличии дубликата. то есть, есть категория "фото", при добавление одноимённой нужно чтоб выдавало предупреждение или ошибку. кто-то уже сталкивался? в наличии более 900 категорий, и есть вероятность многочисленных дублей.
     
  2. BluesInMyBrain

    BluesInMyBrain Создатель

    Регистр.:
    21 янв 2014
    Сообщения:
    35
    Симпатии:
    6
    как вариант дописываем в model/catalog/category.php
    PHP:
        public function getCategoryByName($category_name) {
            
    $query $this->db->query("SELECT * FROM " DB_PREFIX "category_description WHERE name = '" . (int)$category_name "'");
           
            return 
    $query->row;
        } 
    controller/catalog/category.php
    в функцию validateForm
    PHP:
            foreach ($this->request->post['category_description'] as $language_id => $value) {
                if ((
    utf8_strlen($value['name']) < 2) || (utf8_strlen($value['name']) > 255)) {
                    
    $this->error['name'][$language_id] = $this->language->get('error_name');
                }
                
    $this->load->model('catalog/category');
                if(!empty(
    $this->model_catalog_category->getCategoryByName($value['name']))){
                    
    $this->error['name'][$language_id] = $this->language->get('error_name');
                }
            }
    вместо
    PHP:
            foreach ($this->request->post['category_description'] as $language_id => $value) {
                if ((
    utf8_strlen($value['name']) < 2) || (utf8_strlen($value['name']) > 255)) {
                    
    $this->error['name'][$language_id] = $this->language->get('error_name');
                }
            }
    Ошибку уже самому можно подредактировать в файле локализаций
     
    Xrumer нравится это.
  3. Xrumer

    Xrumer Создатель

    Регистр.:
    21 ноя 2012
    Сообщения:
    46
    Симпатии:
    25
    спасибо. уже отпала необходимость. теперь распарсиваю партнерский xml где четкая структура категорий. и не нужно вбивать ручками :)