Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Как получить доступ к какому нибудь свойству в config файле?

Автор atachРаздел Custom макросы

Ответов: 2
Просмотров: 1365
Последний ответ 26 Мая 2016, 15:41:52
от atach
Как получить отсортированный список товаров полученный getFilteredPages?

Автор bacoРаздел Макросы UMI.CMS

Ответов: 5
Просмотров: 5910
Последний ответ 27 Сентября 2011, 11:03:07
от Aksuk
Получить название страницы с которой отправлен комментарий

Автор igor84Раздел Custom макросы

Ответов: 2
Просмотров: 3194
Последний ответ 27 Мая 2013, 12:07:25
от igor84
Как получить значение поля из другой языковой версии?

Автор 31rusРаздел Шаблоны XSLT

Ответов: 19
Просмотров: 5237
Последний ответ 08 Февраля 2016, 02:35:46
от crazygeorgio
JS+XSLT: получить значение page/properties/group

Автор 0xDEFACEРаздел Настройка системы и модулей

Ответов: 4
Просмотров: 1537
Последний ответ 19 Апреля 2016, 14:39:45
от 0xDEFACE

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

*

andrey

  • *
  • 31
  • +6/-0
    • Просмотр профиля
По umiField получить значения
« : 21 Февраля 2014, 14:18:32 »
У меня есть umiField,  к примеру типа float мне нужно получить минимальное и максимальное из значений, которые есть в системе.

Не пойму как это сделать.

*

andrey

  • *
  • 31
  • +6/-0
    • Просмотр профиля
Re:По umiField получить значения
« Ответ #1 : 24 Февраля 2014, 14:32:41 »
При помощи тех.поддержки набросал такое решение:

// Максимальное и минимальное значения поля, приводится к int
public function fieldMinMax( $fieldId, $object_type_id )
{
$field = umiFieldsCollection::getInstance()->getField( $fieldId );
$field_name = $field->getName();


//Получаем все страницы с полученными типами
$sel = new selector( 'pages' );
$sel->types( 'object-type' )->id( $object_type_id );


//Находим минимальное и максимальное значение
$max = 0;
$min = 10000000;
foreach ( $sel as $page )
{
$val = intval( $page->getValue( $field_name ) );
if ( $val > $max )
{
$max = $val;
}

if ( $val < $min )
{
$min = $val;
}
}

return array(
'min' => $min,
'max' => $max
);
}

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re:По umiField получить значения
« Ответ #2 : 24 Февраля 2014, 16:37:32 »
При помощи тех.поддержки набросал такое решение:

// Максимальное и минимальное значения поля, приводится к int
public function fieldMinMax( $fieldId, $object_type_id )
{
$field = umiFieldsCollection::getInstance()->getField( $fieldId );
$field_name = $field->getName();


//Получаем все страницы с полученными типами
$sel = new selector( 'pages' );
$sel->types( 'object-type' )->id( $object_type_id );


//Находим минимальное и максимальное значение
$max = 0;
$min = 10000000;
foreach ( $sel as $page )
{
$val = intval( $page->getValue( $field_name ) );
if ( $val > $max )
{
$max = $val;
}

if ( $val < $min )
{
$min = $val;
}
}

return array(
'min' => $min,
'max' => $max
);
}

Странный ответ от техподдержки, так как все можно сделать двумя запросами к базе без цикла:

$minSel = new selector('pages');
$minSel->types( 'object-type' )->id( $object_type_id );
$minSel->order($field_name)->asc();
$minSel->limit(0, 1);
$min = 0;
if($minSel->length > 0)
$min = $minSel->result[0]->getValue($field_name);
$minSel->flush();

$maxSel = new selector('pages');
$maxSel->types( 'object-type' )->id( $object_type_id );
$maxSel->order($field_name)->desc();
$maxSel->limit(0, 1);
$max = 0;
if($maxSel->length > 0)
$max = $maxSel->result[0]->getValue($field_name);
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/