Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

64j

Новичок
  
  • Posts

    2
  • Joined

  • Last visited

64j's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Reputation

  1. Решил попропотому чтовать что это за зверь, ocStore 1.5.5.1.2. Сразу в глаза врезалось что с ЧПУ не всё ик просто. Посмотрел ггде происходит запись о ЧПУ в базу и поменял код в файлах: admin\model\catalog\category.php admin\model\catalog\product.php admin\model\catalog\manufacturer.php admin\model\catalog\information.php В настройках сивим Вклюлить ЧПУ: Да Тип ЧПУ: SeoPro Поскольку не нашёл сразу ггде подключается общий конроллер, функция транслии везгде дублируется. В каждый файл, после последней функции, добавляем нашу alias_translate private function alias_translate($alias, $alias_query = '') { $ru = explode('-', "А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я"); $en = explode('-', "A-a-B-b-V-v-G-g-G-g-D-d-E-e-YO-yo-E-e-ZH-zh-Z-z-I-i-I-i-I-i-Y-y-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch---Y-y---E-e-YU-yu-YA-ya"); $alias = html_entity_decode($alias); $alias = preg_replace('/[&=+%#<>"~`@\?\[\]\{\}\|\^\'\\\\]/', '', $alias); $alias = str_replace($ru, $en, $alias); $alias = preg_replace("/[\s]+/ui", '-', $alias); $alias = strtolower(preg_replace("/[^0-9a-zа-я\-]+/ui", '', $alias)); if($alias_query) { list($query_name, $id) = explode('=' , $alias_query); $where = " AND query != '" . $alias_query . "'"; } $query = $this->db->query("SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $alias . "' " . $where . ""); if($query->num_rows) { $alias = $alias . '-' . $id; } if($this->cache->get('seo_pro')) { $this->cache->delete('seo_pro'); } return $alias; } Теперь меняем генерацию URL в каждом файле admin\model\catalog\category.php в функции addCategory if ($data['keyword']) { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'category_id=" . (int)$category_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); } меняем на // SEO URL $data['keyword'] = $this->alias_translate($data['category_description'][1]['name'], "category_id=" . (int)$category_id); $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'category_id=" . (int)$category_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); в функции editCategory $this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'category_id=" . (int)$category_id. "'"); if ($data['keyword']) { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'category_id=" . (int)$category_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); } меняем на // SEO URL $keyword = $this->alias_translate($data['category_description'][1]['name'], "category_id=" . (int)$category_id); $query = $this->db->query("SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'category_id=" . (int)$category_id . "'"); if($query->num_rows) { if($data['keyword']) { $keyword = $this->alias_translate($data['keyword'], "category_id=" . (int)$category_id); } $this->db->query("UPDATE " . DB_PREFIX . "url_alias SET keyword = '" . $this->db->escape($keyword) . "' WHERE query = 'category_id=" . (int)$category_id . "'"); } else { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'category_id=" . (int)$category_id . "', keyword = '" . $this->db->escape($keyword) . "'"); } admin\model\catalog\product.php в функции addProduct if ($data['keyword']) { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); } меняем на // SEO URL $data['keyword'] = $this->alias_translate($data['product_description'][1]['name'], "product_id=" . (int)$product_id); $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); в функции editProduct $this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$product_id. "'"); if ($data['keyword']) { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); } меняем на // SEO URL $keyword = $this->alias_translate($data['product_description'][1]['name'], "product_id=" . (int)$product_id); $query = $this->db->query("SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$product_id . "'"); if($query->num_rows) { if($data['keyword']) { $keyword = $this->alias_translate($data['keyword'], "product_id=" . (int)$product_id); } $this->db->query("UPDATE " . DB_PREFIX . "url_alias SET keyword = '" . $this->db->escape($keyword) . "' WHERE query = 'product_id=" . (int)$product_id . "'"); } else { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->db->escape($keyword) . "'"); } admin\model\catalog\manufacturer.php в функции addManufacturer if ($data['keyword']) { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'manufacturer_id=" . (int)$manufacturer_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); } меняем на // SEO URL $data['keyword'] = $this->alias_translate($data['manufacturer_description'][1]['name'], "manufacturer_id=" . (int)$manufacturer_id); $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'manufacturer_id=" . (int)$manufacturer_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); в функции editManufacturer $this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'manufacturer_id=" . (int)$manufacturer_id. "'"); if ($data['keyword']) { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'manufacturer_id=" . (int)$manufacturer_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); } меняем на // SEO URL $keyword = $this->alias_translate($data['name'], "manufacturer_id=" . (int)$manufacturer_id); $query = $this->db->query("SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'manufacturer_id=" . (int)$manufacturer_id . "'"); if($query->num_rows) { if($data['keyword']) { $keyword = $this->alias_translate($data['keyword'], "manufacturer_id=" . (int)$manufacturer_id); } $this->db->query("UPDATE " . DB_PREFIX . "url_alias SET keyword = '" . $this->db->escape($keyword) . "' WHERE query = 'manufacturer_id=" . (int)$manufacturer_id . "'"); } else { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'manufacturer_id=" . (int)$manufacturer_id . "', keyword = '" . $this->db->escape($keyword) . "'"); } admin\model\catalog\information.php в функции addInformation if ($data['keyword']) { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'information_id=" . (int)$information_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); } меняем на // SEO URL $data['keyword'] = $this->alias_translate($data['keyword'], "information_id=" . (int)$information_id); $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'information_id=" . (int)$information_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); в функции editInformation $this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'information_id=" . (int)$information_id. "'"); if ($data['keyword']) { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'information_id=" . (int)$information_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); } меняем на // SEO URL $keyword = $this->alias_translate($data['information_description'][1]['title'], "information_id=" . (int)$information_id); $query = $this->db->query("SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'information_id=" . (int)$information_id . "'"); if($query->num_rows) { if($data['keyword']) { $keyword = $this->alias_translate($data['keyword'], "information_id=" . (int)$information_id); } $this->db->query("UPDATE " . DB_PREFIX . "url_alias SET keyword = '" . $this->db->escape($keyword) . "' WHERE query = 'information_id=" . (int)$information_id . "'"); } else { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'information_id=" . (int)$information_id . "', keyword = '" . $this->db->escape($keyword) . "'"); } вот собственно и всё, в добавленной нами функции alias_translate происходит олистка файла кеша cache.seo_pro и генерация URL с поиском дублей в базе. UPD: вышенаписанное, как показала практика, имеет ряд ошипотому чток и недочётов, ссылка на архив с исправленными файлами для версии ocStore 1.5.5.1.2.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.