Перейти к содержанию

Рекомендуемые сообщения

Найдено ли какое-то решение с ссылками вида http://site.ru/index.php?route=information/contact

Можно ли как-то освободиться от /index.php?route= в страницах которые не имеют псевдонимов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самое простое - прописать переадресацию в файле .htaccess Для вашего урла, например, можно вставить следущую запись:RewriteRule ^information/contact/?$ index.php?route=information/contact [L,QSA]Ну и далее по аналогии, только не забудьте потом везде и ссылочки поправить... :roll:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Найдено ли какое-то решение с ссылками вида http://site.ru/index.php?route=information/contactМожно ли как-то освободиться от /index.php?route= в страницах которые не имеют псевдонимов

Решить можно вот таким образом.1)Открываем catalog/model/tool/seo_url.phpвместо кода с 13 по 45 строки вставляем
foreach ($data as $key => $value) {                if (strstr($value, '/')) {                   $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $value . "'");                   if ($query->num_rows) {                      $url .= '/' . $query->row['keyword'];                   }                }                else if (($key == 'product_id') || ($key == 'manufacturer_id') || ($key == 'information_id')) {                   $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'");                   if ($query->num_rows) {                      if ($key == 'product_id' || $key == 'information_id') {                         $url .= '/' . $query->row['keyword'];                      } else {                         $url = '/' . $query->row['keyword'];                      }                      unset($data[$key]);                   }                } elseif ($key == 'path') {                   $categories = explode('_', $value);                   foreach ($categories as $category) {                      $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");                      if ($query->num_rows) {                         $url .= '/' . $query->row['keyword'];                      }                   }                   unset($data[$key]);                }             }
2)Открываем catalag/controler/common/seo_url.phpменяем код на этот
<?php    class ControllerCommonSeoUrl extends Controller {       public function index() {          if (isset($this->request->get['_route_'])) {             $parts = explode('/', $this->request->get['_route_']);             $is_shortcut = false;             foreach ($parts as $part) {                $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");                if ($query->num_rows) {                   if (strstr($query->row['query'], '/')) {                      $is_shortcut = true;                      $this->request->get['route'] = $query->row['query'];                      break;                   } else {                      $url = explode('=', $query->row['query']);                      if ($url[0] == 'product_id') {                         $this->request->get['product_id'] = $url[1];                      }                      if ($url[0] == 'category_id') {                         if (!isset($this->request->get['path'])) {                            $this->request->get['path'] = $url[1];                         } else {                            $this->request->get['path'] .= '_' . $url[1];                         }                      }                      if ($url[0] == 'manufacturer_id') {                         $this->request->get['manufacturer_id'] = $url[1];                      }                      if ($url[0] == 'information_id') {                         $this->request->get['information_id'] = $url[1];                      }                   }                }             }             if (!$is_shortcut) {                if (isset($this->request->get['product_id'])) {                   $this->request->get['route'] = 'product/product';                } elseif (isset($this->request->get['path'])) {                   $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']);             }          }       }    }?>
3)Открываем catalog/controler/common/header.phpнаходим строку 85 после нее вставляем
$this->load->model('tool/seo_url');
Далее добавляем
$this->model_tool_seo_url->rewrite
допустим к
$this->data['login'] = HTTPS_SERVER . 'index.php?route=account/login';
получаем
$this->data['login'] = $this->model_tool_seo_url->rewrite(HTTPS_SERVER . 'index.php?route=account/login');
4)Дальше идем phpadmin Делаем SQL запрос
INSERT INTO url_alias(`query`, `keyword`) VALUES('account/login', 'login');
и так далееspecialcontact.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

гдеж вы все были недельку назад)как сделал SEO ссылки у себя, так сразу и через mod rewrite, и через alias_url решения появились.неплохо бы это засунуть в базовый дистрибутив.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

гдеж вы все были недельку назад)

как сделал SEO ссылки у себя, так сразу и через mod rewrite, и через alias_url решения появились.

неплохо бы это засунуть в базовый дистрибутив.

Надено ли решение?

А Вы исправте это название топика что-бы люди понимали о чем идет речь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я не модераторадмин и прав на изменение названия топиков нету.

я делал в commonseo_url.php

Добавил уловия

switch ($part) {	case 'home':		$this->request->get['route'] = 'common/home';		break;	case 'contact':		$this->request->get['route'] = 'information/contact';		break;
и так далее, а ссылки вручную вбил - лишние запросы к БД ни к чему. А вот твоим способом можно сделать управление такими страницами через админку и было бы красиво, удобно и вполне SEO оптимизировано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

гдеж вы все были недельку назад)как сделал SEO ссылки у себя, так сразу и через mod rewrite, и через alias_url решения появились.неплохо бы это засунуть в базовый дистрибутив.

Это точно, пропарился с этим реврайтом, а тут такое решение.Сам использую ОС, но думаю что для остальных в срочном порядке нужно выпускать ОСS 0.1.5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я не модераторадмин и прав на изменение названия топиков нету.я делал в commonseo_url.phpДобавил уловия

switch ($part) {	case 'home':		$this->request->get['route'] = 'common/home';		break;	case 'contact':		$this->request->get['route'] = 'information/contact';		break;
и так далее, а ссылки вручную вбил - лишние запросы к БД ни к чему. А вот твоим способом можно сделать управление такими страницами через админку и было бы красиво, удобно и вполне SEO оптимизировано.
А можно поподробнее, в какую строку эти условия нужно добавить?? И где править ссылки??? Прошу не пинать! ;) в кодинге не бум-бум, а магазин доделать хочется!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Den

Подходит ли Ваше решение для oc 1.4.9.1?

UPD. Пробовал ли кто это решение для версии 1.4.9.1?

По п.2... Содержание файла seo_url.php полностью менять?

По п.3... У меня в файле catalog/controler/common/header.php были некоторые изменения (сколько точно не помню). Так вот, можете написать, после какой конкретно строчки (написано 85) вставлять

$this->load->model('tool/seo_url');
Изменено пользователем remix8080

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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