Подскажите логику работы блока «Популярные направления»

Вопросы и ответы по изменению функционала, смене дизайна, переносу сайта и т.п.

Модераторы: Xpycm, Koduc

Правила форума
ВНИМАНИЕ! Форум не является средством гарантированной поддержки клиентов и пользователей. Поэтому на быстрый ответ тут рассчитывать не нужно, как и на ответ вообще. Сотрудники отвечают по мере своих возможностей.

На форуме действует ограничение в 3 сообщения / сутки.
Если Вы хотите сказать "спасибо", то воспользуйтесь функцией "Повысить репутацию" - зелёная иконка "плюс" под ником ответившего.

Подскажите логику работы блока «Популярные направления»

Сообщение sdelkadrom » 15 май 2019, 09:29

После вывода первых 4-х населенных пунктов, информация в блоке не меняется, несмотря на подачу объявлений в других населенных пунктов, количество объявлений в населенном пункте, а так же количество просмотров. Т.е. блок вывел информацию по четырём населенным пунктам и более никаких изменений не происходит.
Как я понял, выбираются все активные объявления, по ним собирается список городов, к которому они относятся и выводятся эти города в количестве не более 4-х. Кто первым вывелся – тем и «повезло».
Можно ли добавить сортировку по агрегатному запросу, но я, честно говоря, не знаю, где еще используется метод getAllActiveCities и что это может поломать?
sdelkadrom
Гражданин
Гражданин
 
Сообщения: 76
Зарегистрирован: 02 июн 2016, 14:25
Очки репутации: 5

Re: Подскажите логику работы блока «Популярные направления»

Сообщение Xpycm » 15 май 2019, 21:02

Здравствуйте.

Полностью согласен с вашим замечанием по работе вывода данного виджета (для меня его работа тоже оставалась загадкой :-))

Как по мне, будет логичным, если в данном виджете вывод будет в зависимости от количества всех объектов в населённом пункте.

Поэтому, откройте файл protected\helpers\common.php и в самый конец файла добавьте:
Код: Выделить всё
function sortArrByValuesCountDesc(array $arr)
{
    
uasort($arr, function ($a$b) { return (array_sum($a) < array_sum($b)) ? : -1; });

    return 
$arr;
}

function 
sortArrByKeysAnotherArrDesc(array $arr, array $orderArr)
{
    
uksort($arr, function($key1$key2) use ($orderArr) {
        return (
array_search($key1$orderArr) > array_search($key2$orderArr));
    });

    return 
$arr;


Затем откройте файл themes\basis\helpers\views\popular_dest_seo.php
До строки:
Код: Выделить всё
<?php foreach ($citiesListResult as $cityId => $cityValue) { ?>

Вставьте:
Код: Выделить всё
<?php
$citiesListResult 
sortArrByKeysAnotherArrDesc($citiesListResultarray_keys(sortArrByValuesCountDesc($countApartmentsByCategories)));
?>
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1541
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 45


Вернуться в Вопросы и помощь по изменениям

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

cron