насчет похожие объявления

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

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

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

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

насчет похожие объявления

Сообщение vanred79 » 18 мар 2015, 17:06

Добрый день! В денвере прикрутил похожие объявления в поиск. То есть если "Ничего не найдено", внизу выходят "Похожие объявления". Но имеется один недостаток, не учитываются параметры поиска при показе похожих объявлений. Возможно ли сделать, чтобы учитывались некоторые фильтры (город, тип недвижимости)? Если да, то как это можно реализовать?
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2

Re: насчет похожие объявления

Сообщение Xpycm » 19 мар 2015, 08:53

Доброе утро.

Берите параметры из массива $_GET ( http://php.net/manual/ru/reserved.variables.get.php )
И передавайте через criteria ( http://www.yiiframework.com/doc/api/1.1/CDbCriteria ) необходимые параметры.
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: насчет похожие объявления

Сообщение vanred79 » 19 мар 2015, 09:13

Xpycm писал(а):Доброе утро.

Берите параметры из массива $_GET ( http://php.net/manual/ru/reserved.variables.get.php )
И передавайте через criteria ( http://www.yiiframework.com/doc/api/1.1/CDbCriteria ) необходимые параметры.

Доброе утро Хруст! с $_GET вроде разобрался:
echo 'Привет ' . htmlspecialchars($_GET["objType"]); - дает число objType

Не понятно, что с городом делать, он в браузере вот так отображается "city%5B%5D" и не дает результат при использовании вышестоящего кода.

"Передавать через criteria" в этот кусок кода вставлять?
Код: Выделить всё
if(!$apartments){
    echo Yii::t('module_apartments','Apartments list is empty.');
    
    if
(!Yii::app()->user->getState('isAdmin')) {
            if (issetModule('similarads') && param('useSliderSimilarAds') == 1) {
                Yii::import('application.modules.similarads.components.SimilarAdsWidget');
                $ads = new SimilarAdsWidget;
                $ads->viewSimilarAds($data);
            }
        }
}
 
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2

Re: насчет похожие объявления

Сообщение Xpycm » 19 мар 2015, 10:15

Вместо:
Код: Выделить всё
if(!Yii::app()->user->getState('isAdmin')) {
    if (issetModule('similarads') && param('useSliderSimilarAds') == 1) {
        Yii::import('application.modules.similarads.components.SimilarAdsWidget');
        $ads = new SimilarAdsWidget;
        $ads->viewSimilarAds($data);
    }
}
 


пропишите:
Код: Выделить всё
if (issetModule('similarads') && param('useSliderSimilarAds') == 1) {
    Yii::import('application.modules.similarads.components.SimilarAdsWidget');
    $ads = new SimilarAdsWidget;
    if (isset($data) && $data)
        $ads->viewSimilarAds($data);
    elseif (isset($_GET) && count($_GET))
        $ads->viewSimilarAds($_GET);
    else 
        $ads
->viewSimilarAds(null);
}
 



В файле rotected\modules\similarads\components\SimilarAdsWidget.php, в методе viewSimilarAds() перепишите логику.

для примера разберу один блок:
Код: Выделить всё
if ($data->obj_type_id) {
    $criteria->addCondition('obj_type_id = :obj_type_id');
    $criteria->params[':obj_type_id'] = $data->obj_type_id;
}
 


должно выглядеть как-то так:
Код: Выделить всё
if (is_object($data)) {
    if ($data->obj_type_id) {
         $criteria->addCondition('obj_type_id = :obj_type_id');
         $criteria->params[':obj_type_id'] = $data->obj_type_id;
    }
}
elseif (is_array($data)) {
    if (array_key_exists('objType', $data)) {
        $criteria->addCondition('obj_type_id = :obj_type_id');
        $criteria->params[':obj_type_id'] = (int) $data['objType'];
    }
}
 
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: насчет похожие объявления

Сообщение vanred79 » 19 мар 2015, 10:55

Спасибо Хруст! Все работает кроме города, может из-за того что в браузере город отображается вот так city%5B%5D? Что можно сделать?
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2

Re: насчет похожие объявления

Сообщение Xpycm » 19 мар 2015, 10:58

Это потому что городов может быть множество ( массив ).
Посмотрите как это сделано в поиске ( modules/quicksearch/maincontroller.php )
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: насчет похожие объявления

Сообщение vanred79 » 19 мар 2015, 11:04

Большое спасибо! Разобрался
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2

Re: насчет похожие объявления

Сообщение vanred79 » 19 мар 2015, 12:05

Хруст! Я вывод "Похожих объявлений" хотел сделать на страницах page, для того чтобы раздел был не совсем пустой, в случае отсутствия объявлений. У меня значения фильтров можно задать с админки
Значения хранятся в таблице Menu столбце widget_data в виде {"term":"0","city_id":"1","description_near_ru":"0","type":"1","price_type":"0","obj_type_id":"1","num_of_rooms":"0","priceMin":"0","priceMax":"0"}.

Подскажите пожалуйста как можно адаптировать ваш код под это?
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2

Re: насчет похожие объявления

Сообщение Xpycm » 19 мар 2015, 16:57

декодируйте с помощью CJSON::decode - https://www.google.ru/?gws_rd=ssl#newwi ... son+decode

Ну и: viewtopic.php?f=17&t=608#p2975
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: насчет похожие объявления

Сообщение vanred79 » 22 мар 2015, 19:03

Добрый день Хруст!
Данные разобрался как получить через json_decode , но у меня получается получить данные только в файле protected/modules/menumanager/views/views.php через вот этот код:
Код: Выделить всё
$cart json_decode$model->widget_data );
    echo 
$cart->obj_type_id

Непонятно как эти данные вывести через файл protected/modules/apartments/views/widgetApartments_list.php (пробовал не получается).

Вопрос можно ли передать данные переменных, полученных с protected/modules/menumanager/views/views.php в виджет protected/modules/similarads/components/SimilarAdsWidget.php?
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2

След.

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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 2

cron