ЧПУ для VirtueMart средствами Joomla!

Введение

Всем известно, что джумла по умолчанию поддерживает «чистые ссылки» (ЧПУ – человеко-понятный урл). Так же всем известно? что для Joomla! существует популярный модуль магазина VirtueMart. Теперь рассмотрим схему работы и генерации ЧПУ для магазина VirtueMart на примере.

Основа

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
< ?php
defined( '_JEXEC' ) or die( 'Restricted access' );
 
function virtuemartBuildRoute(&$query)
{
	$segments = array();
	if (isset($query['task']))	{
		$segments[] = $query['task'];
		unset($query['task']);
	}
	if(isset($query['page']))	{
		$segments[] = $query['page'];
		unset($query['page']);
	}
	if(isset($query['category_id']))	{
		$segments[] = $query['category_id'];
		unset($query['category_id']);
	}
	if(isset($query['flypage']))	{
		$segments[] = $query['flypage'];
		unset($query['flypage']);
	}
	if(isset($query['product_id']))	{
		$segments[] = $query['product_id'];
		unset($query['product_id']);
	}
	if(isset($query['order_id']))	{
		$segments[] = $query['order_id'];
		unset($query['order_id']);
	}
	return $segments;
}
 
function virtuemartParseRoute($segments)
{
	$vars = array();
	$vars['task']		= $segments[0];
	$vars['page']		= $segments[0];
	$vars['category_id']	= $segments[1];
	$vars['order_id']	= $segments[1];
	$vars['flypage']	= $segments[2];
	$vars['product_id']	= $segments[3];
	return $vars;
}
 
?>

Использование

Достаточно поместить этот файл в корень папки компонента магазина и включить поддержку SEO в Joomla!. Все остальное сделает двигатель.

Заключение

Таким образом мы можем создать поддержку ЧПУ для любого компонента.

Теги: , ,

Четверг, 18 Мар 2010 Статьи

Отзывов: 14 на ЧПУ для VirtueMart средствами Joomla!

  1. Приветствую.

    Интересует данная тема. Но не понял, о каком файле идет речь? Как он называется? Если нужно модифицировать существующий, то в каком месте? Как после всего этого будут выглядеть ссылки?

  2. Sergey on 01 Апр 2010
  3. Мой косяк, выложил не законченную статью.

    Файл router.php. Весь код что представлен во вложении нужно поместить в него. Сам файл поместить в директорию components/com_virtuemart/.

    Пробуйте, если ссылки не устроят, есть еще вариант.

  4. admin on 01 Апр 2010
  5. Админ, ы молодец, конечно, но у меня sh404sef лажает – не могу установить – какие-то косяки с переименованием файла и

    atal error: Class ‘shRouter’ not found in /home/steh/domains/stroimatek.ru/public_html/components/com_sh404sef/shCache.php on line 50

    Ставлю твой код – созда нулевой фалй роутер и кидаю куда нужно. текст такой: Fatal error: Cannot redeclare class JRouterSite in .. и ссылается на роутер в инклюдах.

    Выдергивают из инлюд код. объединяю с этим и кидаю в категории. и терь такая надпись на сайте:

    Fatal error: Cannot redeclare class JRouterSite in /home/steh/domains/stroimatek.ru/public_html/components/com_virtuemart/router.php

    Белый лист. Ниче не понимаю. видимо 2 раза что ли исполняется. но как? Или запрос не закрыт ,я вот вижу чт ов инключах у кода нет ?> – но он. видимо. продолжается далее.

  6. Steh on 03 Апр 2010
  7. Steh, в первые слышу о таких проблемах как у тебя, обычно sh404sef без проблем работает с VirtueMart, что же касательно роутера для джумлы есть еще одна реализация.

  8. admin on 05 Апр 2010
  9. А все же твой код ошибку выдает .не знаешь почему и что бы она означала? Мне кажется что-то с хостингом – какие-то пробелмы ,некотоыре сайты не могут создать таблицы в базе данных. хотя пути прописан.Ы даже не сайты, а модули. темб олее чт оДжумлу тока поставил и такая головомойка. даже не знаю что делать .в итоге сейчас не адреса старниц . а цифры блин, Яша не кушает(((

  10. Steh on 12 Апр 2010
  11. А все же твой код ошибку выдает .не знаешь почему и что бы она означала? Мне кажется что-то с хостингом – какие-то пробелмы ,некотоыре сайты не могут создать таблицы в базе данных. хотя пути прописан.Ы даже не сайты, а модули. темб олее что Джумлу тока поставил и такая головомойка. даже не знаю что делать .в итоге сейчас не адреса страниц . а цифры блин, Яша не кушает(((

  12. Steh on 12 Апр 2010
  13. RКстати насчет встроенного ЧПУ – тоже отказывает. Сижу как лох без аватара и диз правлю и думаю – блин, где же выход – все наугад епрст((

  14. Steh on 12 Апр 2010
  15. Меня интересует твтоя реализация и ошибка исполнения – подумай. что бы это значило. а так спасибо за заботу!)

  16. Steh on 12 Апр 2010
  17. C использованием твоего кода не зайти в корзину VirtueMart – выбрасывает на 404

  18. Rodweb on 15 Окт 2010
  19. все сделала как написано, но почему то ничего не изменилось.
    создал файл router.php с содержимым указанным выше
    затем закинул его в папку компонента
    SEO уже было включено. попробовал отключить и включить – ничего не происходит(
    joomla 1.5.21
    virtuemart 1.1.4

    может я что то не то делаю?

  20. Kirill on 28 Окт 2010
  21. не работает разбитие на страницы. Так все отлично имеет вид красивый [ссылка] ,но как например нажимаю вывести количество товаров на страницу,то ссылка теперь такого вида [ссылка] и не работает. Что делать?

  22. Влад on 26 Дек 2010
  23. К сожалению наступает новый год, некогда заниматься этим плагином, и проекты с VirtueMart попадаются крайне редкою.
    С нового года постараюсь сделать новую версию.

  24. admin on 26 Дек 2010
  25. Ребята помогите пожалуйста у меня такая же проблема как у Kirill

    не работает разбитие на страницы. Так все отлично имеет вид красивый [ссылка] ,но как например нажимаю вывести количество товаров на страницу,то ссылка теперь такого вида [ссылка] и не работает. Что делать?

  26. Мусин on 12 Мар 2011
  27. извините ошибся не как у Kirill а как у Влад

  28. Мусин on 12 Мар 2011

Ваш отзыв

 

Календарь

Май 2012
Пн Вт Ср Чт Пт Сб Вс
« Дек    
 123456
78910111213
14151617181920
21222324252627
28293031  

Счетчики

Ссылки