Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как убрать "index.php?route=" из адресной строки в старой версии ocStore v.0.2.0


mseb99

Recommended Posts

Всем привет!


Кто-нибудь знает, что нужно добавить в файл "catalog/controller/common/seo_url.php" древней версии движка ocStore 0.2.0 (стандартный шаблон), чтобы избавиться от "index.php?route=" в адресной строке? Или может быть есть более элегантные решение?

SEO-url в настройках включено и работает, но только на категориях и на самих товарах. Хотелось бы видеть красивый адрес и для "index.php?route=information/contact", "index.php?route=product/search" и остальных подобных адресов.

Нахожу решения только для более поздних версий движка, которые не работают в v.0.2.0.

Я понимаю, что сейчас кто-нибудь посоветует перейти на более современные версии движка, но, если честно, не хотелось бы менять то, что хорошо работает уже не один год. )))

 

Текущий код "catalog/controller/common/seo_url.php":

<?php
class ControllerCommonSeoUrl extends Controller {
	public function index() {
		if (isset($this->request->get['_route_'])) {
			$parts = explode('/', trim($this->request->get['_route_'], '/'));

			foreach ($parts as $part) {

				if( $this->config->get('config_seo_url_replace') ) {
					$part = str_replace('_', ' ', $part);
				}

				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");

				if ($query->num_rows) {
					$url = explode('=', $query->row['query']);

					switch ($url[0]) {
						case 'product_id':
							$this->request->get['product_id'] = $url[1];
							break;

						case 'category_id':
							if (!isset($this->request->get['path'])) {
								$this->request->get['path'] = $url[1];
							} else {
								$this->request->get['path'] .= '_' . $url[1];
							}
							break;

						case 'manufacturer_id':
						case 'information_id':
							$this->request->get[$url[0]] = $url[1];
							break;

						default:
							break;
					}
				} else {
					$this->request->get['route'] = 'error/not_found';
					return $this->forward('error/not_found');
				}
			}

			if (isset($this->request->get['product_id'])) {
				$reference = 'index.php?route=product/product&product_id=' . $this->request->get['product_id'];
				if ($this->checkUrl($reference) === false) {
					$this->request->get['route'] = 'error/not_found';
				} else {
					$this->request->get['route'] = 'product/product';
				}
			} elseif (isset($this->request->get['path'])) {
				$reference = 'index.php?route=product/category&path=' . $this->request->get['path'];
				if ($this->checkUrl($reference) === false) {
					$this->request->get['route'] = 'error/not_found';
				} else {
					$this->request->get['route'] = 'product/category';
				}
			} elseif (isset($this->request->get['manufacturer_id'])) {
				$this->request->get['route'] = 'product/manufacturer';
			} elseif (isset($this->request->get['information_id'])) {
				$this->request->get['route'] = 'information/information';
			}

			if (isset($this->request->get['route'])) {
				return $this->forward($this->request->get['route']);
			}
		} elseif ($this->config->get('config_seo_url') && isset($this->request->get['route'])) {
			if (isset($this->request->get['product_id']) && $this->request->get['route'] == 'product/product') {
				$reference = 'index.php?route=product/product&product_id=' . $this->request->get['product_id'];
			} elseif (isset($this->request->get['path']) && $this->request->get['route'] == 'product/category') {
				$reference = 'index.php?route=product/category&path=' . $this->request->get['path'];
			}

			if (isset($reference) && $this->checkUrl($reference) === false) {
				$this->request->get['route'] = 'error/not_found';
				return $this->forward('error/not_found');
			}
		}
	}

	private function checkUrl($reference) {
		$this->load->model('tool/seo_url');

		$seo_url = $this->model_tool_seo_url->rewrite(HTTP_SERVER . $reference, 'validate');

		if ($seo_url === false) return false;

		if (isset($this->request->get['_route_'])) {
			$url = HTTP_SERVER . $this->request->get['_route_'];
		} else {
			$url = HTTP_SERVER . 'index.php?' . urldecode(http_build_query($this->request->get));
		}

		if ($url != $seo_url) {
			header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
			$this->redirect($seo_url);
		}

		return true;
	}
}
?>

 

Заранее всем спасибо.

seo_url.php

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.