abushyk

Модераторы
  • Публикации

    4036
  • Зарегистрирован

  • Посещение

  • Days Won

    269

Все публикации пользователя abushyk

  1. <div class="vk"> <script type="text/javascript" src="http://userapi.com/js/api/openapi.js?22"></script><div id="vk_groups"></div><script type="text/javascript">{literal}VK.Widgets.Group("vk_groups", {mode: 0, width: "229", height: "190"}, ХХХХХХХХ);{/literal}</script></div>где ХХХХХХХХ - номер вашей группы цифрами (кажется группа должна быть публичной) width: "229", height: "190" - размерчики виджета.
  2. Оно вроде и логично, что бы человек получил какой-то минимум инфы об объекте, на который собирается кликать, чем просто тыкал в маркер и уходил в неизвестность.
  3. "Мы в контакте" - это такая штука, где лица членов группы в контаке как тут ?
  4. А вот там, во всплывающем окне, есть и ссылка для перехода))) А если переход сразу с балуна, то надо подумать. Там по сути повесить листенер на балун. Но сейчас готового варианта пока не напишу.
  5. Для того, что сейчас, при регистрации, у вас доступна возможность выбора группы, в том числе и группа Администратор. Вам нужно 100 администраторов на сайте, про которых вы слыхом не слыхивали?)
  6. /template/frontend/agency/realty_grid.tpl 1. Добавляем вверху, после уже подключенных скриптов: {if $geodata_show_grid_map==1}<script src="{$estate_folder}/apps/system/js/realtymap.js" type="text/javascript"></script><script>var loc_objects={$geoobjects_collection_clustered};var map_type='{$map_type}';{literal}$(document).ready(function(){var RM=new RealtyMap();RM.initJSON('grid_realty_map', loc_objects, map_type);});{/literal}</script>{/if}2. Ниже находим строку {if $geodata_show_grid_map==1} и внутри нее здоровенная простыня непонятного яваскрипта и чуть-чуть разметки, который идет до самого последнего {/if} в этом файле. Трем изнутри этого блока все, кроме <div class="bigmap"><div id="grid_realty_map" style="border: 1px solid #e6e6e6; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; width: 100%; height: 400px;"></div></div>и охватывающих {if $geodata_show_grid_map==1} и {/if} 3. В /template/frontend/agency/css/bootstrap.corrections.css добавляем стиль #grid_realty_map img {max-width: none;}4. Стили .cluster-listing {width: 310px;max-height: 150px;}.cluster-listing.scrollable {overflow-y: scroll;}добавить по вкусу в один из файлов стилей. Либо добавить свои, что бы нормально отображались всплывающие окошки. 5. Доверстать остальные стили согласно дизайну.
  7. /dom/template/frontend/agency.pay/watchlistgrid.tpl строка 8 <a href="/account/mywatchlists/?do=new" class="btn btn-primary">Новый доступ</a>заменить на <a href="{$estate_folder}/account/mywatchlists/?do=new" class="btn btn-primary">Новый доступ</a>ПС. В Редакторе форм в модели user поставьте поле Группа видимость только для Администратор
  8. Агенси ставится без вариантов при инсталяции. В следующем обновлении будет.
  9. В realty_grid_account.tpl сделать в выводе строк объявлений замену с {$estate_folder}/realty{$grid_items.id}.html на {$grid_items.href}
  10. Лечим. 1. Кнопка должна быть. Но должна быть при условии, что приложение Upper включено, количество поднятий разрешенных тарифом пользователя не равно нулю (тарифы созданы и присвоены пользователям), количество дополнительных пакетов поднятий, сверх тарифной нормы, так же не равно нулю. 2. /template/frontend/agency/main/main.php в блоке if ( !$has_result && preg_match('/^account/', $REQUESTURIPATH) ) {} после строки $Account = new Account; добавляем if(1==$this->getConfigValue('apps.upper.enable')){$user_id = $Account->get_user_id();require_once(SITEBILL_DOCUMENT_ROOT.'/apps/upper/admin/admin.php');require_once(SITEBILL_DOCUMENT_ROOT.'/apps/upper/site/site.php');$upper_site = new upper_site();$upps_left = $upper_site->checkUserLimits($user_id);$packs_left = $upper_site->checkUserPacks($user_id);$this->template->assert('apps_upper_enable', 1);$this->template->assert('upps_left', $upps_left);$this->template->assert('packs_left', $packs_left);}Эта штука подсчитает остатки по поднятиям и отправит данные в шаблон. 3. /template/frontend/agency/realty_grid_account.tpl это {if $upps_left!=0 || $packs_left!=0}превращаем в это {if $apps_upper_enable==1 && ($upps_left!=0 || $packs_left!=0)}что бы при выключенном приложении Upper зря кнопка не маячила. 4. http://pastebin.com/GMW4nZQ5 примерное содержимое файла remember.tpl из шаблона - там размещена информация о текущих остатках поднятий и ссылка на покупку доппакета.
  11. /dom/template/frontend/agency.pay/standart_search_form.tpl строка 240 ...<img src="{$estate_folde}/template/fronte...$estate_folde замените на $estate_folder
  12. Ссылку на сайт, пожалуйста.
  13. Взять свою картинку, переименовать ее в watermark.gif и положить в папку /img/watermark/
  14. Вот это пример использования "сферически в вакууме" )))
  15. Как примерно собираетесь им пользоваться? Он будет сферически в вакууме висеть на каком-то адресе или более оригинально?
  16. Если сможете накидать хотя бы описательное ТЗ - какими свойствами должна обладать недвига, что планируется искать на сайте, какие-то еще необходимые фишки, то, как минимум, советом поможем.
  17. Экспорт или Импорт? Если "Выберите файл..." то импорт - внутрь сайта. Для импорта, строка каждого объявления должна иметь колонку image, ну или другую, но не имеющую аналогичной среди других полей, в которой должны быть перечислены картинки через точку с запятой. Сами картинки должны быть предзагружены в /cache/upl/xls_uploads/. При расстановке ассоциаций этому полю надо поставить в соответствие спецколонку с именем image
  18. А какие особенности у вилл в сравнении с другой недвигой?
  19. 1. Принято. 2. $show_up_icon это из другой оперы. Для поднятий служит блок {if $upps_left!=0 || $packs_left!=0}<a class="btn btn-small go_up" href="{$estate_folder}/upper/realty{$grid_items[i].id}/">Поднять</a>{/if}
  20. 1. Добавляем логотипы банков. 1.1. Создаем папку /template/frontend/имя_шаблона/main/form 1.2. В ней файл local_ipoteka.php 1.3. В файле содержимое <?phpclass Local_Ipoteka_Order_Form extends Ipoteka_Order_Form {function main () {$rs='<div class="row-fluid">';$rs.='<div class="span6">';$rs.=parent::main();$rs.='</div>';$rs.='<div class="span6">';$rs.='тут логотипы';$rs.='</div>';$rs.='</div>';return $rs;}}1.4. В /template/frontend/имя_шаблона/main/main.php ищем блок if ( !$has_result && preg_match('/^ipotekaorder/', $REQUESTURIPATH) ) {...}1.5. В этом блоке ищем $ipoteka_order = new Ipoteka_Order_Form(); и заменяем на require_once(SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/main/form/local_ipoteka.php');$ipoteka_order = new Local_Ipoteka_Order_Form();1.6. PROFIT ПС. Разметка в 1.3 - условная. Вы можете ее перепилить как надо, главное помнить, что $rs.=parent::main(); выводит форму и результат ее обработки на страницах заявки на ипотеку. Т.е. должно быть. Все остальное - дело вашей фантазии. 2. Убираем форму поиска недвижимости на странице ипотеки 2.1. В блоке из пункта 1.4 добавляем строку $this->template->assert('hide_realty_serach_form', '1');. Другими словами ставим метку, что мы в "ипотеке". 2.2. В шаблоне, там где у нас выводится форма поиска проверяем условие {if isset($hide_realty_serach_form) && $hide_realty_serach_form==1} <!--тут не делаем подключения файла с формой поиска--> {else} <!--тут делаем подключение файла с формой поиска--> {/if} 3. Добавить поле под доки. В принципе можно было бы прилепить с помощью uploadify_file, но в данный момент обработчик заявок не способен прнять загруженные файлы и адекватно их разместить-переслать. так что, в целом, попытки решить эту задачу не имеют смысла.
  21. Тут разные продавцы поступают по разному. Некоторые просто группируют типаж квартиры. например в корпусе1-секции2 доступны однокомнатные, двухкомнатные и трехкомнатные. И они не оперируют отдельно квартирой, а сразу типом. Т.е. "однокомнатная квартира доступная на 2-25 этажах". При чем, в разрезе этажа, далеко не всегда есть возможность определить, есть ли нужная квартира без звонка продавцу.
  22. Продолжаю отдельными постами, так как исчерпал лимит на картинки в одном сообщении )) 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 С другой стороны, даже этот способ немного избыточен. Если Город является дочерним к Региону, а Регион к Стране, то хранение всех трех значений для объявления - это "лишние" данные, хотя при организации поиска они весьма кстати. Суть в том, что географические данные вполне возможно хранить в виде, схожем со структурой и получать к ним доступ более "человечным" путемНо в этом случае остается так же много вопросов связанных с совместимостью с многими приложениями, принципом организации смой геоструктуры (ведь если заструктурить географию от страны до улиц - это может стать неподъемным грузом, а если закончить городом, то не совсем понятно, как вести связь дальше к улицам, которые должны таки быть привязаны к городам или чему-то наследному от них). В общем идея у нас полно, была бы возможность все реализовать)
  23. 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 Простыня под спойлером Дальше все по алгоритму - создали таблицу в Редакторе форм, наполнили полями, создали физическую таблицу, зарегистрировали обработчик. Из Пользовательских переходим в Корпуса добавляем Названия сущностей рекомендую давать расширенные - с включением родительского описания. Так как обработчик весьма прост, то особых способов отличить Корпус А от ЖК Элитный и Корпус А от ЖК Морской у вас не будет. В результате мы получаем нечто похожее на