Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 1 Гость просматривают эту тему.

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Получить имя значения справочника
« : 23 Октябрь 2012, 19:23:02 »
Здравствуйте!

Помогите реализовать следующую задачу.
НЕ получается ....

Нужно получить имя значения справочника.
То есть, есть страница на которой пользователь проводит поиск
_http://pro-busy.ru.xsph.ru/search_in_a_stone/?fields_filter[a]=679

679 - это id камня по которому проводится поиск.

Как получить его название на это странице, что бы можно было его вставить рядом с заголовком.

К примеру:
Поиск по камню "Авантюрин"

В данный момент получилось вытащить только его id

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #1 : 24 Октябрь 2012, 09:55:09 »
Интересная задача. На тему подписался, будет интересно посмотреть решение.

Я до конца решения не вижу, но попробую свои мысли сформировать.

Думаю, что решение через javascript это лишь выход из ситуации, было бы инетерсно как это запилить на xslt :)

Мне кажется, что можно описать отдельный шаблон на формирование <head> ... </head> ну и через param передавать нужный title. Но вот что-то мне подсказывает, что много менять придётся, если за основу взят demodizzy....

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #2 : 24 Октябрь 2012, 10:27:37 »
Проблема заключается еще в том, что используется TPL шаблонизатор.

Нужна помощь!!!!

*

Vladimir

  • ****
  • 271
  • +46/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #3 : 24 Октябрь 2012, 17:53:07 »
$filter = getRequest('fields_filter');
$name = '';
if($filter and isset($filter['a'])){
$id = (int)$filter['a'];
$o = umiObjectsCollection::getInstance();
if($obj = $o->getObject($id)){
$name = $obj->getName();
}
}
return $name;

*

Vladimir

  • ****
  • 271
  • +46/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #4 : 24 Октябрь 2012, 17:55:13 »
Хотя, если 'a' - это имя поля, то вам поможет data getPropertyOfObject

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #5 : 24 Октябрь 2012, 18:54:21 »
Немного не понял, объясните пожалуйста как использовать кастом

a - это не имя поля, это справочник буквы А где хранятся камни этой буквы.
Есть еще другие буквы b, с, d итд   
« Последнее редактирование: 24 Октябрь 2012, 18:58:37 от korogan »

*

Vladimir

  • ****
  • 271
  • +46/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #6 : 24 Октябрь 2012, 19:23:48 »
Тогда не понял я. Как из "А" следует "Авантюрин". А если там будет 25 камней?

*

Vladimir

  • ****
  • 271
  • +46/-0
    • Просмотр профиля

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #8 : 24 Октябрь 2012, 19:39:26 »
a - это справочник,
камни в нем каждый под своим id лежат

*

Vladimir

  • ****
  • 271
  • +46/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #9 : 24 Октябрь 2012, 21:01:52 »
Все равно непонятно. Зачем имя справочника? Да еще, поди, и на русском языке? Справочнику нужен id  или имя поля, к которому он привязан

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #10 : 24 Октябрь 2012, 21:04:08 »
Справочник несет значения для фильтрации товаров.
При фильтрации к примеру по камню Агат нужно на страницы получить его имя.

*

Vladimir

  • ****
  • 271
  • +46/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #11 : 25 Октябрь 2012, 11:13:05 »
Нет. Вы говорите, что "а" - это не имя поля. Тогда что это? Я не могу понять как вы фильтруете по имени справочника.

Например
fields_filter[vendor]=2541368
vendor - имя поля в типе данных страницы
2541368 - id элемента справочника

Как у вас в аналогичной записи вдруг оказалось имя справочника??? И тогда - а где вы вообще это имя задаете?

Без претензий - может, вы и правы, а я не знаю какого-то очевидного способа.  Но пока мне непонятны ваши действия.

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #12 : 25 Октябрь 2012, 11:22:08 »
a - это имя поля. Вы меня просто не поняли.
К нему подцеплен справочник

fields_filter[a]=659
a - поле
679 - авнтюрин

 

*

Vladimir

  • ****
  • 271
  • +46/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #13 : 25 Октябрь 2012, 12:54:42 »
Разобрались. Тогда, на мой взгляд, проще всего макросом. С некоторой корректировкой:
$filter = getRequest('fields_filter');
$name = '';
if($filter){
$id = (int)$filter[key($filter)];
$o = umiObjectsCollection::getInstance();
if($obj = $o->getObject($id)){
$name = $obj->getName();
}
}
return $name;

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Получить имя значения справочника
« Ответ #14 : 25 Октябрь 2012, 13:14:22 »
Может кому пригодится.

Решение следующее:
В файл /classes/modules/content/__custom.php
Вставляем слудующий код

public function getStoneName(){

$filter = getRequest('fields_filter');
$name = '';
if($filter){
$id = (int)$filter[key($filter)];
$o = umiObjectsCollection::getInstance();
if($obj = $o->getObject($id)){
$name = $obj->getName();
}
}
return $name;
}

};

Макрос для вывода %content getStoneName()%

Огромное спасибо Владимиру!!!