Skip to main content
Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
Насколько ваши ожидания оправдались?
Оцените:
офис +7 (965)124-85-41
сервис +7 (965)124-85-41
пн-пт: 8:00-21:00, сб-вс: 9:00-18:00
пункт приема Ивантеевка
пункт приема Сергиев-Посад
пункт приема Фрязино
03
сентября
2019
ZOO - как убрать item и category из url сайта

ZOO - как убрать item и category из url сайта

По умолчанию в ZOO url материала на сайте имеет вид:

https://<site>/menu/item/article
https://<site>/menu/category/category-article

а хочется, чтобы ссылка была короче, так как "item" или "category" в url никакой функциональной нагрузки не несет:

https://<site>/menu/article
https://<site>/menu/category-article

Изменения будем делать в файле ZOO router.php ( /components/com_zoo/router.php)
В этом методе есть минус: при обновлении ZOO файл будет переписан, поэтому его нужно скопировать в папку template и переназначить.

Испытания проводились на следующих версиях:
ZOO 3.3.33
Joomla 3.9.16
Роутер, состоит из двух методов ZooBuildRoute() и ZooParseRoute()
В первом создается строка запроса, во втором происходит ее разбор.
Перед тем, как изменять файл router.php, сохраните его копию!

Убрать item из url сайта в ZOO.

В методе ZooBuildRoute() находим место где формируется ссылка на материал (item) и комментируем строку $segments[] = $task;:
Было
	// item
	$task = 'item';

		if (@$query['task'] == $task || @$query['view'] == $task) {
			if (@$query['task'] == $task && @$query['item_id']) {
				$segments[] = $task;
				$segments[] = $app->alias->item->translateIDToAlias((int) $query['item_id']);
			}
			unset($query['task'], $query['view'], $query['layout'], $query['item_id']);
		}
Стало
	// item
	$task = 'item';

		if (@$query['task'] == $task || @$query['view'] == $task) {
			if (@$query['task'] == $task && @$query['item_id']) {
			/*	$segments[] = $task;*/
				$segments[] = $app->alias->item->translateIDToAlias((int) $query['item_id']);
			}
			unset($query['task'], $query['view'], $query['layout'], $query['item_id']);
		}
В методе ZooParseRoute() находим раздел item и меняем следующие строки:
Было
	// item
	$task = 'item';

		if ($count == 2 && $segments[0] == $task) {
			$vars['task']    = $task;
			$vars['item_id'] = (int) $app->alias->item->translateAliasToID($segments[1]);
		}
Стало
	// item
	$task = 'item';

		if ($count == 1 && (int) $app->alias->item->translateAliasToID($segments[0]) )  {
			$vars['task']    = $task;
			$vars['item_id'] = (int) $app->alias->item->translateAliasToID($segments[0]);
		}

Убрать category из url сайта в ZOO.

В методе ZooBuildRoute() находим место где формируется ссылка на категорию и комментируем строку $segments[] = $task;:
Было
	// category
	$task = 'category';

		if (@$query['task'] == $task || @$query['view'] == $task) {
			if (@$query['task'] == $task) {
				$segments[] = $task;
			}
			if (@$query['category_id']) {
				$segments[] = $app->alias->category->translateIDToAlias((int) $query['category_id']);
			}
			unset($query['task'], $query['view'], $query['layout'], $query['category_id']);

			// pagination
			if (isset($query['page'])) {
				$segments[] = $query['page'];
				unset($query['page']);
			}
		}
Стало
	// category
	$task = 'category';

		if (@$query['task'] == $task || @$query['view'] == $task) {
			if (@$query['task'] == $task) {
				/*$segments[] = $task;*/
			}
			if (@$query['category_id']) {
				$segments[] = $app->alias->category->translateIDToAlias((int) $query['category_id']);
			}
			unset($query['task'], $query['view'], $query['layout'], $query['category_id']);

			// pagination
			if (isset($query['page'])) {
				$segments[] = $query['page'];
				unset($query['page']);
			}
		}
В методе ZooParseRoute() находим раздел category и меняем следующие строки:
Было
	// category (with optional pagination)
	$task = 'category';

		if ($count == 2 && $segments[0] == $task) {
			$vars['task']        = $task;
			$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[1]);
		}

		if ($count == 3 && $segments[0] == $task) {
			$vars['task']        = $task;
			$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[1]);
			$vars['page']        = (int) $segments[2];
		}
Стало
	// category (with optional pagination)
	$task = 'category';

		if ($count == 1 && (int) $app->alias->category->translateAliasToID($segments[0])) {
			$vars['task']        = $task;
			$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[0]);
		}

		if ($count == 2 && (int) $app->alias->category->translateAliasToID($segments[0])) {
			$vars['task']        = $task;
			$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[0]);
			$vars['page']        = (int) $segments[1];
		}
No video selected.

Leave a comment

You are commenting as guest.

Контакты