Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

64j

Новичок
  
  • Публикаций

    2
  • Зарегистрирован

  • Посещение

Достижения 64j

Newbie

Newbie (1/14)

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

Последние медали

0

Репутация

  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.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.