private:koding:hostcms:modules:shop:useful:short_url

This is an old revision of the document!


Короткие URL

1) ТДС интернет магазин, настройки страницы, вставить перед:

$Shop_Controller_Show
	->limit($limit)
	->parseUrl();

Код:

$newPath = Core::$url['path'];
$partsPath = explode('/', $newPath);
 
if(count($partsPath) == 4)
{
	$partsPath = array_reverse($partsPath);
	$oItems = Core_Entity::factory('shop_item');
	$oItems->queryBuilder()
		->where('shop_id', '=', 1)
		->where('path', '=', $partsPath[1]);	
	$aoItems = $oItems->findAll();
 
	if(count($aoItems) == 1)	
	{
		$oldPath = $aoItems[0]->Shop->Structure->getPath() . $aoItems[0]->getPath();
		Core::$url['path'] = $oldPath;
	}
 
	elseif(count($aoItems) > 1)
	{
		$oldPath = $aoItems[0]->Shop->Structure->getPath() . $aoItems[0]->getPath();
		Core::$url['path'] = $oldPath;
 
		Core_Log::instance()
			->clear()
			->status(4)
			->write("Найдено более одного товара с путём $partsPath[1], выводится первый из них");
	}
}

После:

$Shop_Controller_Show
	->limit($limit)
	->parseUrl();

Добавить:

Core::$url['path'] = $newPath;

2. Меняем в нужных XSLT шаблонах в shop_item ссылки. Вместо {url} вставить /shop/{path}/.

3. Для того чтобы на карте сайта (/sitemap/) выводились товары с изменённым url, необходимо в ТДС Google SiteMap в настройках страницы создать новый класс, который наследуется от Core_Sitemap, и переопределить метод _structure в котором изменяется часть с url товара.

 

Страницу создал Константин Сериков 18.10.16 в 17:07

private/koding/hostcms/modules/shop/useful/short_url.1476801144.txt.gz · Last modified: 18.10.16 в 17:32 by reval-31_mail.ru