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

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - rauschen

Страницы: [1] 2
1
Небольшое уточнение:
поиск по русским словам не работает в тот момент, когда добавлены дополнительные параметры:
?search_branches=...&search_types=..

2
А ведь в версии 2.8.5 поиск по русским словам работает. Значит они там это пофиксили. Может сдернуть эту утилиту с новой версии и закинуть в старую?

3
Ясно. Будем пробовать. Спасибо!

4
А они не сказали что делали? У нас сайт без поддержки :(

5
Скажите, пожалуйста, удалось ли решить проблему? Мы столкнулись с такой же проблемой!

6
Делаем копию метода doSelection в custom.php модуля data и называем его как угодно, например, doSelectionCustom. Находим в этом методе такую строку:

if($element instanceof iUmiHierarchyElement) {

меняем ее на:

if($element instanceof iUmiHierarchyElement && $this->is_virtual($element->id) != 1) {

в этот же файл добавляем следующий метод:

public function is_virtual($id) {
$page_id = (int) $id;
$h = umiHierarchy::getInstance();
//экземпляр страницы
$element = $h->getElement($page_id);
if($element){
// object_id - id источника данных
$object_id = $element->getObjectId();
// список всех страниц, которые используют данный объект
$arr_id = $h->getObjectInstances($object_id);
// первая страница, это страница с наименьшим page_id, т.е. исходная страница
if($arr_id[0] != $page_id) return 1;
return 0;
}else  return 0;
}

вот и весь фокус

7
В общем задача решена.
Добавлен кастом doselection с проверкой на виртуальные копии. Кому надо, пишите - поделюсь кодом.

8
Могу дать доступ в админку, если не верите :)

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

Как в юселе исключить виртуальные копии? Или опять свой кастом писать?

9
а у нас 2.8.5.1 и там это реально происходит. не важно у какого товара снять галку или поставить ее, то же само происходит и у копии.

10
версия umi какая у вас?

11
снимаю у копию, сохраняю - снимается у оригинала. как быть? галки не подходят

12
ну тогда у обоих товаров она снимется. это же виртуальная копия!

13
Парни, а как виртуальные копии исключить? а то по два товара на главной выводится..

14
KTI, ну как скажете :) Спасибо.

Vladimir, там про usel идет речь, а у меня про selector.

15
Спасибо за подсказку, Владимир. Но так и не нашел этой темы.

В итоге родилось у меня следующее решение. Очень простое кстати.

Нужно было искать не дом с квартирами, а квартиры удовлетворяющие условиям и брать их родителя (то есть дом) для дальнейшей работы.

Привожу листинг кода.

public function getRelatedOffers($element_id, $metro, $price) {
   
        $sel = new selector('pages');
        if(isset($price) && $price != ""){
        $sel->types('object-type')->id(860);
        $sel->where('hierarchy')->page('/object-info/')->childs(2);
        }else{
        $sel->types('object-type')->id(853);
        $sel->where('hierarchy')->page('/object-info/')->childs(1);
        }
       
 
       
        $hierarchy = umiHierarchy::getInstance();
       
        if(isset($price) && $price != ""){//Если передан параметр price, то мы ищем самые дешевые квартиры в домах по заданному диапазону цен
       
        $flats = $hierarchy->getChilds($element_id);
       
        foreach ($flats as $key => $value){
$prices_and_names[] = array($hierarchy->getElement($key)->getValue('cena_ot'), $hierarchy->getElement($key)->getName());
}

$price = min($prices_and_names);
       
        $min_price = $price[0] * 0.85;
        $max_price = $price[0] * 1.15;
       
        $sel->where("cena_ot")->between($min_price, $max_price);
        $sel->where("name")->equals($price[1]);
        }
       
        $sel->order('rand');
        $sel->limit(0, 6);



        foreach($sel->result as $house) {
       
       
        if(isset($price) && $price != ""){//Если передан параметр price, то получаем экземпляр родителя страницы (т.е. получаем id дома)
        $house = umiHierarchy::getInstance()->getElement(umiHierarchy::getInstance()->getElement($house->id)->getParentId());
        }

//далее делаем что нам нужно с каждым элементом
...

         }
}

Конечно правильнее было бы написать прямой sql запрос, чтобы увеличить быстродействие. Но так как я не умею писать запросы, реализовал выборку средствами api.

Страницы: [1] 2