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

Изменение URL модуля


trance

Recommended Posts

Добрый день уважаемые.

Впервые столкнулся с такой задачей.

Есть модуль, который выводится по ссылке

site.tu/index.php?route=information/some_module

Необходимо "переписать" ссылку что-бы она имела вид

site.ru/desk/build/

Пытался осилить это через RewriteRule ,но понял что знаний моих очень мало.

Надеюсь на Вашу помощь.

С меня пирожок и + в карму)

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


Я гуглил решение данной проблемы, ничего нет. Значит проблема не актуально, поэтому решил не выкладывать реализацию задачи)

Но раз есть комент значит кому-то все-же интересно =)

сохраняем скрипт ниже в файл route.php

<?php
class ControllerCommonRoute extends Controller {

	var $pages = array(
//Добавляем каждое условие с новой строки.
//В этом примере показано что страница с адресом сайт.ру/index.php?route=information/toplama будет доступна по адресу site.ru/desktop/config
					'desktop/config'	=> 'information/toplama'
				);


	public function check() {

		$uri = substr(str_replace(strrchr($this->request->server['REQUEST_URI'], '?'), '', $this->request->server['REQUEST_URI']),1 );
		$uri = (substr($uri, -1)=='/')? $uri = substr($uri, 0, strrpos($uri, '/')) : $uri;

		
		if((!isset($this->request->get['route'])) AND (trim($uri) <> '')){
			if(array_key_exists($uri, $this->pages)){
			  $this->request->get['route'] = $this->pages[$uri];
			  return $this->forward($this->pages[$uri]);
			}
		}


	}
}
?>

Полученный контроллер закидываем в

catalogcontrollercommon

идем в корень магазина, открываем index.php

ищем

// Maintenance Mode
$controller->addPreAction(new Action('common/maintenance/check'));

Добавляем ниже


	  // Router Mode
	  $controller->addPreAction(new Action('common/route/check'));

Инструкшн в коментах контроллера

Q. Мы перемещаемпереписываем ссылкумодуль на другую страницу?

A. Нет, мы просто дописываем с каких еще страницссылок будет доступен этот модуль.

Q. C SEO работать будет?

A. Угу, будет

Q. А для каких версий?

A. Для всех до 1.5.* (возможно и на ней работать будет, но в задачу это не входило)

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


Хорошо... спрошу по другому...

На страницах сайта ссылки будут формироваться с route=information/toplama

Откуда будут браться ссылки desktop/config

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

Yesvik, давно хотел спросить, почему в seo Pro не сделали что-то наподобе этого? смысл в том, что бы любому линку вида index.php?route=... можно было добавить красивый seo-url

Index: catalog/controller/common/seo_pro.php
===================================================================
--- catalog/controller/common/seo_pro.php	(revision 1:98a0f9b9b318)
+++ catalog/controller/common/seo_pro.php	(revision 1+:98a0f9b9b318+)
@@ -38,8 +38,13 @@
					 }
				 }
			 } else {
+				$query = $this->db->query("SELECT `query` FROM " . DB_PREFIX . "url_alias WHERE keyword ='" . $this->db->escape(utf8_strtolower($route)) . "' LIMIT 1");
+				if ($query->num_rows) {
+					$this->request->get['route'] = $query->row['query'];
+				} else {
-				$this->request->get['route'] = 'error/not_found';
-			}
+					$this->request->get['route'] = 'error/not_found';
+				}
+			}

			 if (isset($this->request->get['product_id'])) {
				 $this->request->get['route'] = 'product/product';
Надіслати
Поділитися на інших сайтах

да мне и на сео начхать по большому счету. пользователи просят.

первая причина - этот и похожие топики на форуме

вторая - это не сложно сделать

третья - абстрактный пример. я пишу модуль(клон статей например), которому не плохо бы прикрутить seo

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

да мне и на сео начхать по большому счету. пользователи просят.

первая причина - этот и похожие топики на форуме

вторая - это не сложно сделать

У меня нет времени и желания заниматься ерундой. Я лучше потрачу время на что-то полезное.

третья - абстрактный пример. я пишу модуль(клон статей например), которому не плохо бы прикрутить seo

При чем тут ссылки только с роутами?
Надіслати
Поділитися на інших сайтах

1. это не ерунда,а расширение,гибкость функционала. пусть она нафиг не нужна, но кому станет хуже если она всё же будет?

нет времени - другое дело. но с другой стороны часть кода уже я написал

может показаться, что я упрекаю или ещё каким-то образом выражаю недовольство.. это не так. я просто спрашиваю "почему бы не сделать?"

при чем или причем ?

если первый вариант - я не понял вопрос

если второй - пример абстрактный. могут понадобится любого вида

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

1. это не ерунда,а расширение,гибкость функционала. пусть она нафиг не нужна, но кому станет хуже если она всё же будет?

Да, станет хуже... абсолютно не нужная нагрузка и пачка дополнительных запросов.

Как ни крути, а ЧПУ делают для того что-бы вставить ключевики...

Странице контактов и сайтмепа - ключевики в URL нафиг не нужны, а остальные страницы вообще надо закрывать от поисковиков...

Ну и зачем долбать базу лишним десятком запросов?

при чем или причем ?

если первый вариант - я не понял вопрос

если второй - пример абстрактный. могут понадобится любого вида

Второй вариант. Это я безграмотно написал...

Участок кода который мы обсуждаем не имеет отношения к приведённому примеру.

Приведённый пример требует добавления правил для обработки ссылок нового модуля...

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

я понял твою мысль. на самом деле будет не пачка запросов, а один(к тому же таблицу с seo урлами можно кешировать) и то в очень редких случаях.. но это не важно

есть модуль News Pages >2000 загрузок для старой версии правда, но и для новой или есть или переписать не сложно. ссылки вида catalog/news.

для них автор сам должен добавлять правила в seoPro потому как нет "из коробки".

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

я понял твою мысль. на самом деле будет не пачка запросов, а один(к тому же таблицу с seo урлами можно кешировать) и то в очень редких случаях.. но это не важно

Я уже начинаю думать что мы о разном говорим...

Вот ссылки о которых я говорю

http://demo15.myopencart.ru/index.php?route=account/account
http://demo15.myopencart.ru/index.php?route=account/login
http://demo15.myopencart.ru/index.php?route=account/newsletter
http://demo15.myopencart.ru/index.php?route=account/order
http://demo15.myopencart.ru/index.php?route=account/register
http://demo15.myopencart.ru/index.php?route=account/return/insert
http://demo15.myopencart.ru/index.php?route=account/wishlist
http://demo15.myopencart.ru/index.php?route=affiliate/account
http://demo15.myopencart.ru/index.php?route=checkout/cart
http://demo15.myopencart.ru/index.php?route=checkout/checkout
http://demo15.myopencart.ru/index.php?route=checkout/voucher
http://demo15.myopencart.ru/index.php?route=common/home
http://demo15.myopencart.ru/index.php?route=information/contact
http://demo15.myopencart.ru/index.php?route=information/sitemap
В примере кода который ты дал показано "декодирование" ЧПУ... Но при формировании страницы надо "кодировать"... соответственно даже если надо формировать ЧПУ для одной-двух ссылок - запросы к базе будут выполняться для всех... Или ты предлагаеш ЧПУ руками прописывать в шаблонах?
Надіслати
Поділитися на інших сайтах

есть модуль News Pages >2000 загрузок для старой версии правда, но и для новой или есть или переписать не сложно. ссылки вида catalog/news.

для них автор сам должен добавлять правила в seoPro потому как нет "из коробки".

У меня была мысль добавить правила для наиболее популярных модулей, но я так и не решил какие модули наиболее популярны...

Давай определимся со списком популярных модулей и добавим...

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

я про декодирование с самого начала.

вот ты к базе привязался=)

давай на примере

модуль news pages. в админке сама новость и seo-url к ней we_are_started.html, в базе запись catalog/news&news_id=1, we_are_started.html

У меня была мысль добавить правила для наиболее популярных модулей, но я так и не решил какие модули наиболее популярны...

Давай определимся со списком популярных модулей и добавим...

завтра будут ещё популярные модули, снова добавим?
Надіслати
Поділитися на інших сайтах

я про декодирование с самого начала.

вот ты к базе привязался=)

давай на примере

модуль news pages. в админке сама новость и seo-url к ней we_are_started.html, в базе запись catalog/news&news_id=1, we_are_started.html

Давай... какое отношение это имеет к приведённому тобой примеру, к ссылкам имеющим только route?
Надіслати
Поділитися на інших сайтах

без seo линк будет таким /index.php?route=catalog/news&news_id=1

c seo /we_are_started.html

в seoPro придет _route_ = we_are_started.html, не найдя подходящих правил seoPro возьмет из базы запись catalog/news&news_id=1 | we_are_started.html и покажет требуемую новость

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

теперь я понял о чем ты =)

для этого модуля, насколько я знаю таких линков не будет.

для сложных линков безусловно нужно писать новые правила. всё это время я говорил о простых вида route=a/b&c=d

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

Так это получается костыль для частного случая... причем добавляющий дополнительный запрос и при формировании ЧПУ и при разборе ЧПУ.

Не вижу причин не использовать существующий алгоритм в который надо добавить правила....

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

пусть костыль, я бы назвал расширение, но не суть

лишний запрос? может я не понимаю, сейчас такие урлы редиректятся на 404 not_found, в моём случае перед 404 выполнится запрос(мол, а вдруг есть)

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

лишний запрос? может я не понимаю, сейчас такие урлы редиректятся на 404 not_found, в моём случае перед 404 выполнится запрос(мол, а вдруг есть)

Если я правильно понял предлагаемый код - то сначала делается запрос стандартным алгоритмом, ни фига не получается, уходит на редирект и тут выполняется второй запрос... по два запроса будет выполнятся для всех ссылок такого типа и для ошибочных.

Если добавить правила в существующий алгоритм - всегда будет один запрос.

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

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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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