abushyk 694 Жалоба Опубликовано: June 21, 2014 1. Предистория Допустим мы имеем базовый сайт на сайтбилле. У нас есть стандартная модель квартиры-недвижимости со всякими Цена, Площадь и прочими свойствами по вкусу. И вот, в один прекрасный момент, мы решили заняться торговлей квартирами в новостройках. А новостройки эти у нас зачастую представлены не отдельными зданиями, а целыми комплексами зданий, которые в свою очередь разбиты на секции. 2. Анализ. Сначала разберемся со структурой. Самый простой вариант - мы решили еализовывать каждую квартиру в виде отдельного объекта. Например, если в ЖК "Элитный" у нас есть корпус А, а в нем секция I и в этой секции, грубо говоря, 15 квартир одной планировки, но некоторые на разных этажах, мы будем считать, что каждая квартира, даже одинаковой планировки - является одним объектом. Иными словами, мы не делаем группировок по типам, а ведем каждую квартиру отдельно. Это дает нам некоторую гибкость, так как квартиры на крайних этажах могут иметь меньшую цену в отличии от одноплановых с ними, на остальных этажах. Так же, из плюсов то, что мы можем задать какие-то особенности поквартирно, даже не смотря на то, что они одноплановые. Особенно это касается, когда квартиры продаются не в сыром виде, а меблированные или с финишной отделкой. Либо учесть иные особенности каждой квартиры. Из минусов такого подхода то, что если секция у нас 9-ти этажная с 4 квартирами на этаж, то на секцию получается 36 объектов. И дальше в геометрической прогрессии в зависимости от количества секций в корпусе и корпусов в ЖК. Соответственно, логично предположить, что кроме обычных для недвижимости параметров (цена, площадь, этаж,и т.д.) нам придется снабдить модель недвижимости дополнительными параметрами, устанавливающими ее привязку к конкретному положению в разрезе ЖК - конкретный ЖК, корпус ЖК, секция корпуса ЖК. И так же очевидно, что при заполнении формы эти параметры должны бы быть связаны цепочкой, как то при выборе отдельного ЖК, мы должны получить под выбор список корпусов только этого ЖК, что бы не рыскать в длиннющем списке всех корпусов. Аналогино и с секциями. 3. Инструментарий. Для реализации нам понадобятся свежие приложения system, admin, table, customentity. Привлекать готовые приложения типа "Жилые комплексы" мы не будем. Из настроек нам будет необходимо включить параметр Настройки - Дополнительно - Off system Ajax. Данная опция выключает автоматические связки между зависимыми элементами и предоставляет нам полный контроль над определением своих зависимостей. Из почитать - http://wiki.sitebill.ru/index.php?title=%D0%A1%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D1%8B 4. Подготовка дополнительных сущностей. Если мы должны иметь возможность выбрать корпус, ЖК и секцию, значит у нас где-то должны быть списки этих значений. В Сайтбилле, для организации списков значений существует два типа полей - select_box и selectbox_by_query. Первый нам не подходит, так как не поддерживает организацию наследия. Т.е. штатными средствами этого элемента мы можем задать набор его вариантов значений, но не можем указать какие-то связующие ключи с другим элементом. Второй, поскольку хранится в БД в виде отдельной таблицы, вполне на это способен. Но для его использования необходима соответствующая таблица в БД. В нашем случае таблиц будет три - таблица ЖК, таблица корпусов и секций корпусов. Что бы избавить себя от рутинной работы по наполнению этих данных через phpMyAdmin создадим соответствующие таблицы в Редакторе форм. 4.1. Жилые комплексы. Для ЖК - это таблица czhilkom с полями czhilcom_id (primary_key) и name (safe_string).Создав таблицу и наполнив ее элементами, нажимаем кнопку Создать таблицу.Теперь таблица ЖК существует физически в БД.Надо наполнить ее какими-то жилыми комплексами.Для того, что бы получить доступ к работе с этой сущность через стандартную админку, воспользуемся приложением Пользовательские сущности. Для начала проверим, что приложение установлено. Для этого в админке переходим по адресу /admin/index.php?action=customentity&do=install При переходе по нему, в случае отсутствия необходимых таблиц для работы приложения, они будут созданы.После этого возвращаемся в Редактор форм и в заголовке таблицы czhilkom ищем кнопку со завездочкойЭта кнопка отвечает за создание мини-обработчика для сущности, у которой нет штатного обработчика (в виде встроенного модуля или стандартного\стороннего приложения). NB. Попытка создать этой кнопкой обработчик для встроенных сущностей, как Город, Район или для тех у которых есть приложения - Баннеры, Новости - ни к чему не приведет. После нажатия кнопки Создания обработчика мы увидим следующее окногде в поле Название вам нужно ввести вменяемое название для вашего обработчика, что бы вы знали к чему он относится. Введем например Жилой комплекс и нажмем Создать.После перезагрузки страницы в верху, возле кнопки раскрытия списка приложений мы получим дополнительную кнопку Пользовательские, а под ней и наше квази приложение Жилой комплексЕсли перейти по предложенной ссылке, вы получите минималистический инструмент для управления вашими ЖК где вы можете добавить ЖК в список, изменить существующий или удалить ненужный. Приложение не следит за целостностью, т.е. если вы удаляете ЖК, то об удалении соответствующих зависимых корпусов и секций вам так же придется позаботиться самому. Не надейтесь на возможность реализации таким способом каких-то "творческих вывихов" - это исключительно инструмент для обеспечения удобства. Для полноценной работы с такими сущностями, как разделение их по пользователям с возможностью редактирования последними, организация страницы, например конкретного ЖК, шаблонизация необходимо создавать полноценное приложение. Для наших целей добавим два ЖК - Элитный и Морской с помощью кнопки Добавить записьПроцесс, как вы можете заметить, вполне привычный и не должен вызвать трудностей 4.1. Корпуса. Создание таблицы корпусов абсолютно ничем не отличается от создания таблицы ЖК кроме того, что у корпусов есть зависимость от ЖК. Например ЖК Элитный имеет два корпуса - Корпус А и Корпус Б. Тогда модель корпуса (ckorps) будет состоять из полейПоле czhilcom_id является обычным полем селектбокса подбирающим данныеиз внешней таблицы, в данном случае из таблицы czhilcomПростыня под спойлером Дальше все по алгоритму - создали таблицу в Редакторе форм, наполнили полями, создали физическую таблицу, зарегистрировали обработчик. Из Пользовательских переходим в Корпуса добавляемНазвания сущностей рекомендую давать расширенные - с включением родительского описания. Так как обработчик весьма прост, то особых способов отличить Корпус А от ЖК Элитный и Корпус А от ЖК Морской у вас не будет. В результате мы получаем нечто похожее на 4 Realtor, metrpro, XTRO и 1 other reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: June 21, 2014 Продолжаю отдельными постами, так как исчерпал лимит на картинки в одном сообщении )) 4.1. Секции. Не буду давать расширенного описания, скажу только, что все идентично как для корпусов.Таблица csection и поля csection_id, name, ckorps_id (по таблице ckorps)В принципе для секций можно было бы установить двойную зависимость - указывать принадлежность секции к корпусу и к ЖК. Для некоторых случаев это оправдано (особенено если делается полноценное приложение), но в нашем случае, когда необходимо лишь поразграничивать принадлежности и сам корпус и ЖК будет указан в свойствах недвижимости, такая связка будет избыточной. В итоге 5. Внедрение в недвижимость Сущности у нас готовы, можно приступать к привязке их на объявление. Нам необходимо добавить три свойства в нашу таблицу data - ЖК, Корпус и Секция. Все они будут добавляться полями типа select_by_query, что бы мы могли сформировать их списки в элементах выбора из соответствующих таблиц. Носить имена будут эти элементы czhilcom_id, ckorps_id и csection_id Если теперь мы перейдем в форму добавления объявления мы увидим, что наши новые три поля уютно прописались в форме в виде привычных списков выбора. Но если их поразворачивать, то вы увидите, что они вмещают все варианты из своих таблиц и не реагируют на состояние "родительского" элемента. Например выбор ЖК никак не отражается на содержимом списка корпусов. Приступаем к наладке связей. 6. Связывание Основой для связывания служит принцип связанных элементов формы - http://wiki.sitebill.ru/index.php?title=%D0%A1%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D1%8B Нам необходимо в рамках одной формы указать элементам на какие другие элементы они влияют в форме и от каких зависят. Например - ЖК. От состояния этого элемента зависит возможный список выбора в элементе Корпуса. Эта зависимость описывается какЭто значит, что элемент, в котором мы выбираем название ЖК связан с элементом с системным именем ckorps_id (элемент выбора Корпуса ЖК), а ключем, который внутри Корпуса соответствует жилому корпусу является значение из поля czhilcom_id модели Корпуса. Если взлянете выше, то это значение в модели Корпуса у нас является идентификатором ЖК, к которому привязан Корпус.Больше ЖК у нас ни на что не влияет, потому и других параметров нет. Далее Корпус. Корпус, аналогично ЖК влияет на "следующий" элемент - Секцию. Но, кроме этого, он еще должен знать от какого элемента зависит сам - это необходимо для формирования адекватного списка значений элемента Корпус, но не тогда, когда сделан выбор конкретного ЖК, а при загрузке формы. Например, если вы открыли на редактирование объявление в котором ЖК был указан как Элитный, тогда в списке Корпусов вполне ожидаемо окажется уже готовый список корпусо ЖК Элитный. linked - описывает зависмость когда элемент влияет на что-то.depended - когда что-то влияет на элемент И, наконец, Секция. Самый простой элемент. Он ни на что не влияет, но на него влияет Корпус. Что и видно из параметров. Нет ничего страшного, если вы ничего не поняли про связи с первого раза. Это нормально, Я гарантирую это. Если теперь вы попробуете загрузить форму добавления объявления, вы видите, что у вас доступен на выбор только элемент ЖК, а остальные будут подгружены только после выбора соответствующего родительского. Для того, что бы увидеть этот эффект в Настройках необходимо включить параметр Настройки - Дополнительно - Off system Ajax 7. Эпилог Ай, у меня не работают элементы выбора географии. Что делать?... Тут все ожидаемо. Изначально принцип связанных элементов предназначался как-раз для географических элементов, что бы вывести из кода движка жесткие зависимости Страна-Регион-Город-Район\Улица и иметь более широкую возможность настройки своих связей. А так же, иметь возможность введения промежуточных элементов (Страна-Регион-Субрегион-Город), которые разрывали бы существующие связи, заложенные в код Сайтбилля. Именно поэтому опция Off system Ajax отрубает всю систему заложенных связей. Возможно это слишком кардинально и стоило бы предусмотреть ступенчатую систему, когда подключение пользовательских связанных элементов регулировалось бы одной настройкой, а отключение привычной связки от Страны к Улице другой. На данный момент четкого мнения у меня пока нет. Для себя я решил эту проблему навеской связей на географические элементы в виде, аналогичном системным правилам. Т.е.country_idlinked region_id,country_id region_idlinked city_id,region_iddepended country_id city_idlinked street_id,city_id;district_id,city_iddepended region_id district_idlinked mkrn_id,district_iddepended city_id street_iddepended city_id mkrn_iddepended district_id 8. Offtop С другой стороны, даже этот способ немного избыточен. Если Город является дочерним к Региону, а Регион к Стране, то хранение всех трех значений для объявления - это "лишние" данные, хотя при организации поиска они весьма кстати. Суть в том, что географические данные вполне возможно хранить в виде, схожем со структурой и получать к ним доступ более "человечным" путемНо в этом случае остается так же много вопросов связанных с совместимостью с многими приложениями, принципом организации смой геоструктуры (ведь если заструктурить географию от страны до улиц - это может стать неподъемным грузом, а если закончить городом, то не совсем понятно, как вести связь дальше к улицам, которые должны таки быть привязаны к городам или чему-то наследному от них). В общем идея у нас полно, была бы возможность все реализовать) 4 XTRO, YUR@, doma и 1 other reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: June 21, 2014 Отлично, спасибо. будем считать, что каждая квартира, даже одинаковой планировки - является одним объектом.и это правильно. По большому счёту причиндалы к квартире - это её свойства. Из почитать - http://wiki.sitebill.ru/index.php?title=%D0%A1%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D1%8Bтам бы орфографию и пунктуацию поправить. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: June 21, 2014 и это правильно. По большому счёту причиндалы к квартире - это её свойства. Тут разные продавцы поступают по разному. Некоторые просто группируют типаж квартиры. например в корпусе1-секции2 доступны однокомнатные, двухкомнатные и трехкомнатные. И они не оперируют отдельно квартирой, а сразу типом. Т.е. "однокомнатная квартира доступная на 2-25 этажах". При чем, в разрезе этажа, далеко не всегда есть возможность определить, есть ли нужная квартира без звонка продавцу. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: June 21, 2014 я исхожу из ооп есть ли нужная квартира без звонка продавцу.во-во, что логически равняется любая квартира в доме - всё равно звонить. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
vetalysd 8 Жалоба Опубликовано: July 2, 2015 У меня после связывания ошибка: Unhandled Error: Undefined variable: refresher_linked_global_callback строка с ошибкой - refresher_linked_global_callback(connected_element); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ReatEstate 13 Жалоба Опубликовано: February 26, 2016 как бы все правильно и верно. Но как уединоличить или конкретно присвоить, привязать в выборке?Например : к 1 району принадлежат 1й-2й-3й-4й-5й микрорайона ко 2му району принадлежат 2й-4й-6й-7й микрорайон? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: February 27, 2016 Все ваши сущности образуют цепочку родитель - наследник. Так вот у детей всегда должно быть поле ссылающееся на родителя - как в Район - есть поле Город по таблице городов, которое и выступает этой связью. Добавляя микрорайон вам нужно указывать в поле Район тот район в подчинении которого они находятся. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ReatEstate 13 Жалоба Опубликовано: February 27, 2016 Я имел ввиду, если включить параметр :Off system Ajax (apps.realty.off_system_ajax) = "1"то , в выборке появится интелектуальный отбор. При выборе определенного РАЙОНА должны подгружаться только относящиеся к данному району МИКРОРАЙОНЫ...а пока высыпается каша, все подряд. Как исправить? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chernetskiy 469 Жалоба Опубликовано: February 27, 2016 Я имел ввиду, если включить параметр :Off system Ajax (apps.realty.off_system_ajax) = "1"то , в выборке появится интелектуальный отбор. При выборе определенного РАЙОНА должны подгружаться только относящиеся к данному району МИКРОРАЙОНЫ...а пока высыпается каша, все подряд. Как исправить?пропиши связи в настройках обоих полей (linked и depended), например: raion_idlinked mkrn_id,raion_id;street_id,raion_id mkrn_iddepended raion_id -с вязь вниз (к подчиненному справочнику) может быть множественной, я специально указал 2 связи, но это не обязательно.- связь вверх (к родителю) - одна. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ReatEstate 13 Жалоба Опубликовано: March 1, 2016 Понятно со связками, правда если они подчинены строго одно к другому. Т.е. если в справочнике заданы родители и дети. Вопрос. Каким образом вывести такую связку: Регион - Район (минуя город) ? Очень часто попадаются на периферии, например Рязанская область - Михайловский р-н ... Справочники переделывать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: March 1, 2016 Что бы что-то с чем-то связать, нужно что бы хоть у кого-то из этой пары был признак ссылающийся на второго. Это единственный вариант, кроме случаев наличия третьего элемента-связиста, который представляет собой не объект в привычном смысле, а именно связь между двумя другими. Цитата Каким образом вывести такую связку: Регион - Район (минуя город) ? Указать linked у Региона на Район, а у Района depended на Регион и последнему добавить признак принадлежности к региону. Ниспадающая связь не обязана быть единичной. Регион запросто может быть родителем как Города, так и Региона одновременно. Но нельзя иметь двух родителей. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: March 3, 2016 Видео по связанным элементам 1 XTRO reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
banzai72 32 Жалоба Опубликовано: February 22, 2018 В 03.03.2016 в 07:46, rumantic сказал: Видео по связанным элементам Настроил связи. Всё работает отлично! Есть один вопрос Всё работает отлично если не использовать autocomplete=1 и autocomplete_notappend=1 Если их дописать в data то связи пропадают Так и должно быть? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chernetskiy 469 Жалоба Опубликовано: February 22, 2018 2 часа назад, 72realty сказал: Настроил связи. Всё работает отлично! Есть один вопрос Всё работает отлично если не использовать autocomplete=1 и autocomplete_notappend=1 Если их дописать в data то связи пропадают Так и должно быть? Связанные элементы имеют свой механизм, схожий с автокомплитом. По этому автокомплит надо отключить и больше его не упоминать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
banzai72 32 Жалоба Опубликовано: February 23, 2018 7 часов назад, Chernetskiy сказал: Связанные элементы имеют свой механизм, схожий с автокомплитом. По этому автокомплит надо отключить и больше его не упоминать. Спасибо. Тогда откажусь ро связных элементов)) А то слишком огромный список выпадает и не удобно. Удобнее написать Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chernetskiy 469 Жалоба Опубликовано: February 23, 2018 3 часа назад, 72realty сказал: Спасибо. Тогда откажусь ро связных элементов)) А то слишком огромный список выпадает и не удобно. Удобнее написать У связанных элементов больше преимуществ, лучше использовать их. Относительно огромного списка, я-бы не сказал, может это особенности отображения в вашем шаблоне? Список не обязательно прокручивать до нужной позиции, по ходу набора текста в строке выборки список сокращается до нужных вариантов. Посмотри у меня в поиске, там всё на связанных элементах. Так-же в ЛК и в админке работает. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
banzai72 32 Жалоба Опубликовано: February 23, 2018 7 часов назад, Chernetskiy сказал: У связанных элементов больше преимуществ, лучше использовать их. Относительно огромного списка, я-бы не сказал, может это особенности отображения в вашем шаблоне? Список не обязательно прокручивать до нужной позиции, по ходу набора текста в строке выборки список сокращается до нужных вариантов. Посмотри у меня в поиске, там всё на связанных элементах. Так-же в ЛК и в админке работает. Ну да. Видимо это особенности шаблона. Если бы в real-spces было дополнительное поле для набора то было бы отлично!) Но к сожалению в нашем шаблоне тупо прокрутка и прокрутить большое количество очень не удобно Вопрос к администраторам С этим, что то можно сделать или только смириться? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chernetskiy 469 Жалоба Опубликовано: February 23, 2018 1 час назад, 72realty сказал: Ну да. Видимо это особенности шаблона. Если бы в real-spces было дополнительное поле для набора то было бы отлично!) Но к сожалению в нашем шаблоне тупо прокрутка и прокрутить большое количество очень не удобно Вопрос к администраторам С этим, что то можно сделать или только смириться? По началу в Realia была такая-же фигня, Константин покопался и доработал. На тот момент был автокомплит, но многим понадобились дополнительные справочники, которые надо было как-то увязать в зависимость к имеющимся. Следующей разработкой стал функционал связанных элементов и его обкатывали на Реалии - наиболее ходовом шаблоне на тот момент. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
banzai72 32 Жалоба Опубликовано: February 23, 2018 53 минуты назад, Chernetskiy сказал: По началу в Realia была такая-же фигня, Константин покопался и доработал. На тот момент был автокомплит, но многим понадобились дополнительные справочники, которые надо было как-то увязать в зависимость к имеющимся. Следующей разработкой стал функционал связанных элементов и его обкатывали на Реалии - наиболее ходовом шаблоне на тот момент. Ну вот я поэтому просто загрузил справочник и поставил автокомплит. Посмотрел на вашем сайте. Но так то в Реалии удобно, что помимо списка есть дополнительное поле для ввода Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
banzai72 32 Жалоба Опубликовано: February 24, 2018 В 21.06.2014 в 18:23, abushyk сказал: Продолжаю отдельными постами, так как исчерпал лимит на картинки в одном сообщении )) 4.1. Секции. Не буду давать расширенного описания, скажу только, что все идентично как для корпусов. Таблица csection и поля csection_id, name, ckorps_id (по таблице ckorps) В принципе для секций можно было бы установить двойную зависимость - указывать принадлежность секции к корпусу и к ЖК. Для некоторых случаев это оправдано (особенено если делается полноценное приложение), но в нашем случае, когда необходимо лишь поразграничивать принадлежности и сам корпус и ЖК будет указан в свойствах недвижимости, такая связка будет избыточной. В итоге 5. Внедрение в недвижимость Сущности у нас готовы, можно приступать к привязке их на объявление. Нам необходимо добавить три свойства в нашу таблицу data - ЖК, Корпус и Секция. Все они будут добавляться полями типа select_by_query, что бы мы могли сформировать их списки в элементах выбора из соответствующих таблиц. Носить имена будут эти элементы czhilcom_id, ckorps_id и csection_id Если теперь мы перейдем в форму добавления объявления мы увидим, что наши новые три поля уютно прописались в форме в виде привычных списков выбора. Но если их поразворачивать, то вы увидите, что они вмещают все варианты из своих таблиц и не реагируют на состояние "родительского" элемента. Например выбор ЖК никак не отражается на содержимом списка корпусов. Приступаем к наладке связей. 6. Связывание Основой для связывания служит принцип связанных элементов формы - http://wiki.sitebill.ru/index.php?title=%D0%A1%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D1%8B Нам необходимо в рамках одной формы указать элементам на какие другие элементы они влияют в форме и от каких зависят. Например - ЖК. От состояния этого элемента зависит возможный список выбора в элементе Корпуса. Эта зависимость описывается как Это значит, что элемент, в котором мы выбираем название ЖК связан с элементом с системным именем ckorps_id (элемент выбора Корпуса ЖК), а ключем, который внутри Корпуса соответствует жилому корпусу является значение из поля czhilcom_id модели Корпуса. Если взлянете выше, то это значение в модели Корпуса у нас является идентификатором ЖК, к которому привязан Корпус. Больше ЖК у нас ни на что не влияет, потому и других параметров нет. Далее Корпус. Корпус, аналогично ЖК влияет на "следующий" элемент - Секцию. Но, кроме этого, он еще должен знать от какого элемента зависит сам - это необходимо для формирования адекватного списка значений элемента Корпус, но не тогда, когда сделан выбор конкретного ЖК, а при загрузке формы. Например, если вы открыли на редактирование объявление в котором ЖК был указан как Элитный, тогда в списке Корпусов вполне ожидаемо окажется уже готовый список корпусо ЖК Элитный. linked - описывает зависмость когда элемент влияет на что-то. depended - когда что-то влияет на элемент И, наконец, Секция. Самый простой элемент. Он ни на что не влияет, но на него влияет Корпус. Что и видно из параметров. Нет ничего страшного, если вы ничего не поняли про связи с первого раза. Это нормально, Я гарантирую это. Если теперь вы попробуете загрузить форму добавления объявления, вы видите, что у вас доступен на выбор только элемент ЖК, а остальные будут подгружены только после выбора соответствующего родительского. Для того, что бы увидеть этот эффект в Настройках необходимо включить параметр Настройки - Дополнительно - Off system Ajax 7. Эпилог Ай, у меня не работают элементы выбора географии. Что делать?... Тут все ожидаемо. Изначально принцип связанных элементов предназначался как-раз для географических элементов, что бы вывести из кода движка жесткие зависимости Страна-Регион-Город-Район\Улица и иметь более широкую возможность настройки своих связей. А так же, иметь возможность введения промежуточных элементов (Страна-Регион-Субрегион-Город), которые разрывали бы существующие связи, заложенные в код Сайтбилля. Именно поэтому опция Off system Ajax отрубает всю систему заложенных связей. Возможно это слишком кардинально и стоило бы предусмотреть ступенчатую систему, когда подключение пользовательских связанных элементов регулировалось бы одной настройкой, а отключение привычной связки от Страны к Улице другой. На данный момент четкого мнения у меня пока нет. Для себя я решил эту проблему навеской связей на географические элементы в виде, аналогичном системным правилам. Т.е. country_id linked region_id,country_id region_id linked city_id,region_id depended country_id city_id linked street_id,city_id;district_id,city_id depended region_id district_id linked mkrn_id,district_id depended city_id street_id depended city_id mkrn_id depended district_id 8. Offtop С другой стороны, даже этот способ немного избыточен. Если Город является дочерним к Региону, а Регион к Стране, то хранение всех трех значений для объявления - это "лишние" данные, хотя при организации поиска они весьма кстати. Суть в том, что географические данные вполне возможно хранить в виде, схожем со структурой Скрытое содержимое и получать к ним доступ более "человечным" путем Но в этом случае остается так же много вопросов связанных с совместимостью с многими приложениями, принципом организации смой геоструктуры (ведь если заструктурить географию от страны до улиц - это может стать неподъемным грузом, а если закончить городом, то не совсем понятно, как вести связь дальше к улицам, которые должны таки быть привязаны к городам или чему-то наследному от них). В общем идея у нас полно, была бы возможность все реализовать) Скажите пожалуйста, в шаблоне real-spaces возможно сделать как в Реалии, что бы помимо прокрутки ещё было поле для ввода текста. А то при использовании связных элементов слишком много крутить приходиться А если при использовании автокомплита пропадает связь элементов Поэтому пока пришлось убрать связные элементы и и просто использовать автокомплит ((( Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TopRaN 235 Жалоба Опубликовано: February 25, 2018 Это возможно реализовать путем дополнения формирования selecta, добавлением параметра data-live-search="true" Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
banzai72 32 Жалоба Опубликовано: February 25, 2018 3 часа назад, TopRaN сказал: Это возможно реализовать путем дополнения формирования selecta, добавлением параметра data-live-search="true" Добавлением в таблицу data например в city_id в "Набор параметров точной настройки элементов"? (там где прописываем связи элементов, вместо автокомплита)? Попробовал сделать так и не помогло а "true" вообще после сохранения пропадает// А... понял не туда вставлял. Подскажите пожалуйста куда надо? (мне нужно не только в поиске но и при добавлении объявления такое, а то при подаче объявления огромный список выпадает) Напишите пожалуйста хоть немного подробнее. Спасибо Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
banzai72 32 Жалоба Опубликовано: February 25, 2018 Пожалуйста Пожалуйста Пожалуйста Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chernetskiy 469 Жалоба Опубликовано: February 25, 2018 5 часов назад, 72realty сказал: Пожалуйста Пожалуйста Пожалуйста Алексей, вот код от моего standard_search_form.tpl, похоже, что в начале файла то, что тебе нужно (кусок кода до var max_price...): <script> {literal} function refresher_linked_global_callback(connected_element){ //console.log(1); connected_element.trigger("liszt:updated"); /*connected_element.chosen({ disable_search_threshold: 10 });*/ //connected_element.trigger('change'); } $(document).ready(function(){ $('.property-filter select').chosen({ disable_search_threshold: 10 }); }); var max_price={/literal}{if $max_price ne ''}{$max_price}{else}0{/if}{literal}; var price_from=Number({/literal}{if isset($price_min)}{$price_min}{else}0{/if}{literal}); var price_for=Number({/literal}{if (isset($price)) && ($price ne '')}{$price}{else}{$max_price}{/if}{literal}); {/literal} </script> {$ajax_functions} {foreach from=$scripts item=script} {*$script*} {/foreach} <div class="property-filter pull-right"> <div class="content"> {if $mysearch_on==1} {if $mysearch_save_form_file ne ''} {include file=$mysearch_save_form_file} {/if} {/if} <form method="get" action="{$estate_folder}/"> <div class="type control-group"> <label class="control-label" for="inputType">{$L_TYPE}</label> <div class="controls">{$structure_box}</div> </div> {if $country_list != ''} <div class="type control-group"> <label class="control-label" for="inputType">{$L_COUNTRY}</label> <div class="controls">{$country_list}</div> </div> {/if} {if $region_list != ''} <div class="type control-group"> <label class="control-label" for="inputType">{$L_REGION}</label> <div class="controls">{$region_list}</div> </div> {/if} {if $raion_list != ''} <div class="type control-group"> <label class="control-label" for="inputType">{$L_RAION}</label> <div class="controls">{$raion_list}</div> </div> {/if} {if $city_list != ''} <div class="type control-group"> <label class="control-label" for="inputType">{$L_CITY}</label> <div class="controls">{$city_list}</div> </div> {/if} {if $district_list != ''} <div class="type control-group"> <label class="control-label" for="inputType">{$L_DISTRICT}</label> <div class="controls">{$district_list}</div> </div> {/if} {if $street_list != ''} <div class="type control-group"> <label class="control-label" for="inputType">{$L_STREET}</label> <div class="controls">{$street_list}</div> </div> {/if} {if $metro_list != ''} <div class="type control-group"> <label class="control-label" for="inputType">{$L_METRO}</label> <div class="controls">{$metro_list}</div> </div> {/if} <label class="control-label" for="inputType">{$L_PRICE}</label> <div class="beds control-group"> <div class="controls"> <input type="text" class="price_from price_field" name="price_min" value="{if isset($price_min)}{$price_min|number_format:0:'':' '}{else}0{/if}"/> </div> </div> <div class="baths control-group"> <div class="controls"> <input type="text" class="price_for price_field" name="price" value="{if isset($price) && $price!=0}{$price|number_format:0:'':' '}{else}{$max_price|number_format:0:'':' '}{/if}"/> </div> </div> <div class="price-value control-group"> <div class="controls"> <div class="slider"></div> </div> </div> <div class="type control-group"> <label class="control-label" for="inputType">{$L_ROOMS1}</label> <div class="controls"> {if isset($smarty.request.room_count) && is_array($smarty.request.room_count)} <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="1"{if in_array(1,$smarty.request.room_count)} checked="checked"{/if} /> <label class="ch">1</label></div> <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="2"{if in_array(2,$smarty.request.room_count)} checked="checked"{/if} /> <label class="ch">2</label></div> <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="3"{if in_array(3,$smarty.request.room_count)} checked="checked"{/if} /> <label class="ch">3</label></div> <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="4"{if in_array(4,$smarty.request.room_count)} checked="checked"{/if} /> <label class="ch">4+</label> </div> {else if isset($smarty.request.room_count)} <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="1"{if $smarty.request.room_count==1} checked="checked"{/if} /> <label class="ch">1</label></div> <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="2"{if $smarty.request.room_count==2} checked="checked"{/if} /> <label class="ch">2</label></div> <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="3"{if $smarty.request.room_count==3} checked="checked"{/if} /> <label class="ch">3</label></div> <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="4"{if $smarty.request.room_count>=4} checked="checked"{/if} /> <label class="ch">4+</label></div> {else} <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="1" /> <label class="ch">1</label></div> <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="2" /> <label class="ch">2</label></div> <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="3" /> <label class="ch">3</label></div> <div class="ch_small"><input class="checkbox" type="checkbox" name="room_count[]" value="4" /> <label class="ch">4+</label></div> {/if} </div> </div> <div class="form-actions"> <input type="submit" value="{$L_GOSEARCH}" class="btn btn-info btn-large"> </div> </form> </div> </div> Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах