добавление типов объявления

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

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

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

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

добавление типов объявления

Сообщение yoght » 10 фев 2012, 15:08

Здравствуйте. Столкнулся с задачей увеличить количество типов объявлений. По типу https://skitch.com/yoght/8yqgh/open-real-estate . Как я понял, в базе данных тип указывается идентификатором. Можете мне подсказать, в каких файлах нужно указать новые типы?
yoght
Незнакомец
 
Сообщения: 8
Зарегистрирован: 10 фев 2012, 14:47
Очки репутации: 0

Re: добавление типов объявления

Сообщение andipas » 10 фев 2012, 15:37

На самом деле типов объявлений всего два - Аренда, Продажа. Задаются эти типы в модели protected\modules\apartments\models\Apartment.php

Код: Выделить всё
    const TYPE_RENT = 1;
    const TYPE_SALE = 2;
    const TYPE_DEFAULT = 1;


в поисковой форме, в зависимости от типа цены

Код: Выделить всё
    const PRICE_SALE = 1;
    const PRICE_PER_HOUR = 2;
    const PRICE_PER_DAY = 3;
    const PRICE_PER_WEEK = 4;
    const PRICE_PER_MONTH = 5;


и наличия объявлений с такой ценой, можно осуществлять соответствующий поиск.

В версии 1.1.2 простого решения, для добавления типов и поисков по ним нет. В новой версии будет возможность через админку добавлять, редактировать типы недвижимости и назначать их объявлениям.
Часто задаваемые вопросы. Для правки файлов notepad++, netbeans, phpStorm. Для правки CSS firebug.
Аватара пользователя
andipas
Разработчик
Разработчик
 
Сообщения: 695
Зарегистрирован: 28 дек 2011, 22:37
Очки репутации: 30

Re: добавление типов объявления

Сообщение yoght » 10 фев 2012, 15:45

Спасибо. Попробую - отпишусь.
yoght
Незнакомец
 
Сообщения: 8
Зарегистрирован: 10 фев 2012, 14:47
Очки репутации: 0

Re: добавление типов объявления

Сообщение Cronenberg » 21 фев 2012, 10:05

Вопрос к разработчику по поводу типов объявлений:
Добавляю типы объявлений в модуле Apartment

const TYPE_name = n;
...
в функции getFullInformation этого же модуля добавляю
$addWhere .= (Apartment::TYPE_NAME == $type) ? ' AND reference_values.for_name=1' : '';

...

Далее тоже самое добавляю к функции getCategories

...
Потом к функции getTypesArray
$types[self::TYPE_NAME] = tt('Name', 'apartments');

...
Потом getTypesWantArray
$types[self::TYPE_NAME] = Yii::t('common', 'name apartment');
...
Потом в функции GetPriceArray добавляю условие для нашего нового типа

if($type == self::TYPE_NAME){ //или elseif
$price = array(
self::PRICE_SALE => tt('Sale price', 'apartments'), //тип цены продажный, так подходит, а если что - можно поменять
);

И вроде бы все зашибись, то, что и хотелось, в управлении объявлениями появился список типов, но при редактировании или добавлении нового объявления с выбором нового типа объявления вываливается ошибка
Error 404

Системе не удалось найти запрашиваемое действие "undefined".


Ну что ж я еще не дописал? Подскажите, наши всемогущие разработчики!

P.S. Подписи к типам на русском конечно же тоже добавил...
Cronenberg
Незнакомец
 
Сообщения: 2
Зарегистрирован: 21 фев 2012, 09:38
Очки репутации: 0

Re: добавление типов объявления

Сообщение Xpycm » 21 фев 2012, 10:28

Всё правильно, но неполностью сделали, поэтому ошибка такая.

В функции getPriceArray в условие if($all) добавьте:

Код: Выделить всё
if($all){
   return array(
      ...
      self::PRICE_PER_TEST => tt('Price per test', 'apartments'),
   )
}


Откройте файл: protected/modules/apartments/views/backend/_form.php
в самом верху добавьте:

Код: Выделить всё
$urls = array(
   ...
   Apartment::TYPE_TEST => $this->createUrl('/apartments/backend/main/'.$this->action->id,
         array('id' => $model->isNewRecord? '': $model->id, 'type' => Apartment::TYPE_TEST)),
   )


После этого при смене типа при добавлении/редактивания объявления выдаст ошибку:

CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'reference_values.for_test' in 'where clause'.

Необходим запрос:
Код: Выделить всё
ALTER TABLE `re_dev_apartment_reference_values` ADD `for_test` TINYINT( 1 ) NOT NULL DEFAULT '1' AFTER `for_sale`;


Затем почистите кеш в папке: protected\runtime\cache\
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: добавление типов объявления

Сообщение Cronenberg » 21 фев 2012, 11:45

*BRAVO* Офигенно! Спасибо за помощь!
Офигенный фреймворк, учу...

Только в форме поиска нет этих типов. Я в админке уже подобавлял объявления с новыми типами... :'(
Cronenberg
Незнакомец
 
Сообщения: 2
Зарегистрирован: 21 фев 2012, 09:38
Очки репутации: 0

Re: добавление типов объявления

Сообщение Xpycm » 21 фев 2012, 11:57

Для того чтобы в поиске отображался новый тип необходимо:

откройте файл: protected\views\site\field-type-search.php

увидите такой код:
Код: Выделить всё
$data = SearchForm::apTypes();


статический метод apTypes находится в protected\components\SearchForm.php

(вообще для удобства переходов по методам и модулям пользуйтесь NetBeans или PhpStorm, добавив файлы в проект)

и вот уже в методе apTypes файла protected\components\SearchForm.php
необходимо добавить ваш новый тип
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50


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

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

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

cron