UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: sergeron от 31 Мая 2012, 12:11:26

Название: Псевдоадрес (ЧПУ) по id
Отправлено: sergeron от 31 Мая 2012, 12:11:26
У объекта каталога есть некий id,  как получить его имя в транслите как это делает ЧПУ (через API)
Название: Re:Псевдоадрес (ЧПУ) по id
Отправлено: admin от 31 Мая 2012, 14:16:16
именно его ЧПУ получить по id или механизм транслитерации применить на что-то свое?
Название: Re:Псевдоадрес (ЧПУ) по id
Отправлено: Vladimir от 31 Мая 2012, 18:00:49
Имя объекта это %uri%. В апи:
$h = umiHierarchy::getInstance();
$element = $h -> getElement($id);
$uri = $element -> getAltName();//alt_name страницы
$path = $h -> getPathById($id);//путь к странице
Название: Re:Псевдоадрес (ЧПУ) по id
Отправлено: sergeron от 31 Мая 2012, 21:43:55
ок, спасибо
Название: Re:Псевдоадрес (ЧПУ) по id
Отправлено: sergeron от 01 Июня 2012, 12:32:15
че-то не пошло:

<page id="138" parentId="133" link="/shop/rechnye_kruizy/valaam/" is-active="1" object-id="1154" type-id="147" update-time="1338389423" alt-name="valaam"> - это вот объект

из custom.php прямым запросом в базу мы получаем этот id=1154
 
$query = 'select t2.id from cms3_objects t1, cms3_objects t2 where t1.id in ('.$city_id_str.') and t1.type_id = 138 and t1.name=t2.name and t2.type_id=147'  
$result = l_mysql_query($query) or die("ERROR :".mysql_error());
$sql_data = mysql_fetch_array($result)

вот так получил id ...  и он правильный 1154
пробую получить путь
$h = umiHierarchy::getInstance();
$element = $h -> getElement($id);
$uri = $element -> getAltName();
$path = $h -> getPathById($id);

и ничего... в переменной $path пусто а функция getAltName ругается Call to a member function getAltName() on a non-object
Название: Re:Псевдоадрес (ЧПУ) по id
Отправлено: Vladimir от 01 Июня 2012, 14:39:37
Минуту...  вы с каким id хотите работать: объекта или страницы?
Название: Re:Псевдоадрес (ЧПУ) по id
Отправлено: sergeron от 01 Июня 2012, 15:55:23
объекта
Название: Re:Псевдоадрес (ЧПУ) по id
Отправлено: Vladimir от 01 Июня 2012, 17:05:18
Тогда не так. Я понял что у вас id страницу объекта каталога.
тогда Id элемета по id объекта я получаю по методике http://umi-cms.spb.su/api/101/object-element/
Но Сергей Антонинко однажды на форуме ЮМИ называл метод api, решающий ту же задачу. К сожалению, я забыл этот метод, а ссылка на страницу документации в форуме устарела. Поэтому - поищите, возможно, вам повезет, вы найдете штатный метод. Он точно был.

Ну а дальше, когда у вас есть id элемента, все как было выше.