Столкнулся с проблемой, что если активировать seo-url, то валидация пропускает незаполнение поля SEO URL в админке, в результате чего на фронтенде ссылки на категории пустые (нет даже обычных параметров навроде ?category_id=123). Это явная недоработка. В качестве решения установил расширение Override Engine http://www.opencart.com/index.php?route=extension/extension/info&extension_id=8588 Затем создал файл override/auto_seo_url/admin/model/catalog/category.php PHP: <?php class auto_seo_url_ModelCatalogCategory extends ModelCatalogCategory {private function _getSeoUrl($data) { $this->load->helper('translit'); return Translit::toUrl(end($data['category_description'])['meta_title']);}public function addCategory($data) { if (empty($data['keyword'])) { $data['keyword'] = $this->_getSeoUrl($data); } return parent::addCategory($data);}public function editCategory($category_id, $data) { if (empty($data['keyword'])) { $data['keyword'] = $this->_getSeoUrl($data);} parent::editCategory($category_id, $data); }} Плюс файл system/helper/translit.php: PHP: <?php class Translit{public static function toUrl($st) { return preg_replace('/[^\d\w]+/', '', strtr(preg_replace('/ {2,}/', ' ', mb_strtolower(trim($st))),array( 'а' => 'a','б' => 'b','в' => 'v','г' => 'g','д' => 'd','е' => 'e','ж' => 'zh','з' => 'z','и' => 'i','й' => 'i','к' => 'k','л' => 'l','м' => 'm','н' => 'n','о' => 'o','п' => 'p','р' => 'r','с' => 's','т' => 't','у' => 'u','ф' => 'f','х' => 'h','ц' => 'ts','ч' => 'ch','ш' => 'sh','щ' => 'shch','э' => 'e','ю' => 'yu','я' => 'ya','ь' => '','ъ' => '',' ' => '_', 'ы' => 'y', ) ));}} По этому же принципу можно сделать автогенерирование url для товаров. Надеюсь кому нибудь пригодится.
Очень странно! Убрал seo у категории и все есть, как и должно быть. А то что пропускает не заполненным, это в порядке вещей, т.к сео урль не является обязательным, это лишь чпу. За решение спасибо, пригодится. Только оформляйте в теги [ PHP ] в следующий раз.
И если делать, то через события в модели , а не через оверрайд PHP: $this->event->trigger('pre.admin.category.edit', $data); и меняем $data['keyword'] на транслит.
Я неправильно объяснил наверно. Убирать seo не надо, достаточно добавить категорию с пустым url, тогда на фронтенде эта категория отобразится, но перейти по ней не получится. Спасибо, это самое очевидное решение, я почему то пропустил эту строчку изначально
Все понял. Отличный баг. Увидел, нашел. Завтра оформлю... Как раз из за того что пустое поле, он и записывает в url_alias пустой keyword
Если что, меняем в \admin\model\catalog\category.php 50 строку if (isset($data['keyword'])) { на if ($data['keyword']) {