Озадачился вопросом быстро доработать компонент для агенства
недвижимости.
Вариант с добавлением дополнительных полей в стандартные таблицы базы данных и в шаблон компонента в ходе недолгих размышлений отбросил по следующим причинам:
1) высокая вероятность того, что заказчик будет корректировать свои пожелания в ходе обкатки компонента;
2) достаточное большое количество этих самых дополнительных полей;
3) необходимость подключения дополнительных справочников и разработки дополнительной системы индексации для поиска (стандартный модуль поиска компонента осуществляет только поиск по заголовку и тексту объявлений).
Решил пойти другим путём:
1) поля существующей таблицы jos_djcf_items были задействованы стандартным образом;
2) для дополнительных полей (таких как город, район, год постройки, общая площадь, состояние, материал здания, этаж и т.п.) была создана
отдельная таблица;
2) дополнительно были созданы еще
3 таблицы справочников (типы сделок, типы материалов, виды состояний);
3) дополнительно из
КЛАДР были конвертированы и созданы
еще 3 таблицы - справочники районов, городов, прочих населённых пунктов;
4) соответственно разработана
индексация таблиц для оптимизации запросов;
5) для большей гибкости в редактировании - вывод дополнительных полей в шаблоне - через вставку (echo $this->loadTemplate);
6) небольшие хаки в model и view для вызова внешних функций обработки дополнительных полей, вынесенных в отдельные файлы;
7) разработан дополнительный
расширенный поиск по дополнительным полям;
Редактирование пользовательских справочников - через админку с помощью дополнительного мини-компонента.
Таким образом было обеспечено
минимальное вмешательство в код компонента и полностью сохранена структура родных таблиц.
Пример - вариант формы расширенного поиска