abushyk

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

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

  • Посещение

  • Days Won

    269

Изменения репутации

  1. Like
    abushyk получил репутацию от Helenblondi в RSS новостей сайта - выгрузка новостей и объявлений в rss-потоки для рсс-читалок   
    Самое главное в выгрузке рсс-потока, да и любой другой выгрузки, состоит в том, что бы куда-то ссылку на свой поток дать. Это как секс - должно быть два участника))
    Другими словами ваша выгрузка доступна по адресу вашш_сайт/rss/data и эту ссылку нужно скормить агрегатору. А сам поток обновляется динамически, никаких галочек на объявлениях ставить для их попадания туда не нужно.
  2. Like
    abushyk получил репутацию от centr.dn.ua в Шаблон Realia   
    Взаимно)
  3. Like
    abushyk получил репутацию от centr.dn.ua в Шаблон Realia   
    А вот теперь раздорожье))
     
    Поскольку рефреш подчиненных селектов делается в системной части движка, а прилепление красоты от Chosen в части шаблона, то нет красивого способа объединить оба этих действия, особенно учитывая то, что дозагрузка нового списка подчиненного селектбокса проходит асинхронно.
    Путь первый - забить на стилизованные элементы в форме поиска.
    Путь второй - ставить возвращатель красивого вида селекта на таймер. Т.е. изменили регион, пошла дозагрузка. Но оторванно от него стоит обработчик, который запустится через н-ное количество милисекунд и вернет красоту. Баг в том, что красота может навестись и в момент дозагрузки, и раньше чем она произойдет и после - этот момент (окончания дозагрузки) невозможно поймать.
     
    Либо во время праздников меня осенит на более удачное решение))
  4. Like
    abushyk получил репутацию от centr.dn.ua в Шаблон Realia   
    /template/frontend/realia/search_form.tpl
    перед
    {foreach from=$scripts item=script}{$script}{/foreach} добавьте строку с
    {$ajax_functions}
  5. Like
    abushyk получил репутацию от centr.dn.ua в Шаблон Realia   
    Форма рукотворная.
    Сам ее шаблон лежит в /template/frontend/realia/search_form.tpl
     
    Регион, район и метро можно добавить вставляя куски
     
    <div class="type control-group"> <label class="control-label" for="inputType"> {*NAME*} </label> <div class="controls"> {*HTML*} </div></div> где *NAME* = $L_REGION   $L_DISTRICT  $L_METRO
     
    *HTML* = $region_list   $district_list  $metro_list
    соответственно
     
    Расставить там уже по соображению регион перед городом, район после и т.д.
  6. Like
    abushyk получил репутацию от makssk80 в объявления на сайте   
    Сорри. я не глядя написал
    не
    <a href="{$grid_items[i].href} target="_blank"">... а
    <a href="{$grid_items[i].href}" target="_blank">... target="_blank" вне href=""
  7. Like
    abushyk получил репутацию от Realtor в Шаблон генерации PDF‏   
    Для вставки ссылки или кнопки на создание PDF нужно в этом шаблоне, в требуемом месте, поставить разметку
    {if isset($complex_pdf_link)} <a href="{$complex_pdf_link}">Скачать PDF</a> {/if}  
  8. Like
    abushyk получил репутацию от metrpro в В шаблоне не отображается вывод переменной   
    Права на группу лучше вернуть - иначе это поле может стать доступным для установки другим пользователям.
    Используйте для полей, скрытых правами видимости на группы, переменную {$data_shared.date_added.value} вместо {$data.date_added.value}. Во второй содержатся доступные для данной группы поля, а в первой все поля, без учета прав по группам.
  9. Like
    abushyk получил репутацию от metrpro в Дата и время в "list"   
    Либо более гибкий вариант
     
    {$grid_items.date_added|date_format:"тут свой формат вывода даты"}
     
    А свой формат можно подобрать ключиками из руководства
  10. Like
    abushyk получил репутацию от Taras001 в Вывод варианта select_box   
    В шаблоне карточки
    $data.FIELD_NAME.value - вернет 2
    $data.FIELD_NAME.value_string - вернет Жилое помещение
     
    в шаблоне списка
    $grid_items.FIELD_NAME - вернет Жилое помещение
    $grid_items._FIELD_NAME_ - вернет 2
     
     
  11. Like
    abushyk получил репутацию от Realtor в карта с кластеризацией+выбор маркеров под категорию   
    Скажу так. Нет абсолютно никакой проблемы в том, что бы прицепить к странице списка карту, которая покажет все объявления по данному запросу. Не делается это только лишь потому, что обычный страничный запрос на выборку для страницы нужно будет дополнить еще одним таким же запросом, только не ограниченным страницей и с дополнительной фильтрацией по наличию координат. Поскольку по запросу может быть в результате много страниц, то выборка для карты тоже может стать огроменной. Закешировать как-то результаты этих выборок для фильтрующих запросов я не вижу нормального пути. В результате мы получим карту со всеми объектами + бонусом вполне вероятные пинки от хостера + тормоза, так как этот запрос будет дергаться при каждом ф5. Только по этим причинам я до сих пор не сделал такую карту.
  12. Like
    abushyk получил репутацию от mykvartira в Модуль статьи для сайта   
    Для информации, например. Или для сео, когда идет слив веса снизу вверх - от статей, через разделы на главную страницу всех статей. Была бы фантазия, а применение найдется.)))
    Действительно, там со ссылками на разделы был косяк. Я его поправил у вас и теперь ссылки в блочках статей в списке выводятся корректно.
  13. Like
    abushyk получил репутацию от metrpro в $Region_list не передаёт список регионов   
    Что влияет из настроек на показ\формирование этого поля:
    1. наличие поля region_id и его доступность смотрящему в модели объекта - поле должно быть
    2. Настройки - Общее - Выбор региона в форме объявления(region_in_form) - должно быть включено
  14. Like
    abushyk получил репутацию от Helenblondi в замена карты в ЖК   
    Я сейчас просто для узких экранов сделал карту меньше по высоте. Что бы оставалось место где уцепиться пальцем и потянуть. Попробуйте.
  15. Like
    abushyk получил репутацию от doma в Шаблон realia - пожалуйста, помогите с меню категорий [Решено]   
    Итак, если у нас осталось место в навигаторе где изначально выводятся разделы структуры, у нас может возникнуть желание добавить туда что-то от себя.
     
    Для формирования этого блока служит функция шаблона реалия getTemplateMenu, которая пользуется услугами декоратора меню. Логи этого декоратора довольно сложна, именно поэтому мы не стали выдавать его в виде шаблона, а свели до $navmenu.
     
    Суть задачи - позволить нехитрым набором опций сообщать декоратору меню, что у куда вставить нам в нашу менюху. Я предусмотрел вставку двух типов:
    1) вставка простой ссылки
    2) вставка блока с выпадающими подпунктами, которые формируются на базе одного из меню из раздела Контент - Меню.
     
    А) Для начала улучшим функцию getTemplateMenu.
     
    Находим ее в /template/frontend/realia/main/main.php и заменяем на http://pastebin.com/NpibVwer
     
    Главное отличие, что она теперь умеет понимать переданные нами параметры и пытается кешировать в сессию некоторые данные. Т.е. если вы укажете ей строить дополнительный пункт на базе какой-то менюшки, то она не будет на всех переходах требовать его от бд, а возьмет один раз и запомнит на всю вашу сессию.
     
    Б) Параметры функции.
    Что бы указать чем и где дополнить нам меню нужно указать функции параметры. Параметры указываются в виде массива
    $menues=array( array( 'id'=>25, /*ID меню из Контент - Меню. Если указать ID не существующего в данный момент Меню, то получится просто пункт с меню, без выпадающего блока, тогда данный пункт даже не буде. Если нужно навставлять ссылок, то просто ставьте там 10000 и дальше*/ 'title'=>'О нас', /*Выводимая надпись на пункте*/ 'position'=>'behind',/*Расположение относительно пунктов Структуры. Если не указано или не behind, то after - в конце*/ 'href'=>'/somelink/'/*Ccылка на корневом пункте. Если не указать, то будет якорь (#), те неактивная ссылка чисто для группировки*/ ), array('id'=>23,'title'=>'О вас','position'=>'after','href'=>'http://dadada.ru')); Например, нам нужно поставить в верхнее меню следующее:
    - в самом начале ссылку на главную
    - после нее ссылку на отзывы /review
    - в конце подключить выпадающий список из Меню - Полезная информация с ид в БД 215.
     
    Сотв. наша конфигурация буде иметь вид
    $menues=array(array('id'=>0, /*0-хитрое значение. Оно может быть только в одном пунке и на него автоматом ставится ссылка на корень сайта*/ 'title'=>'Главная','position'=>'behind'),array('id'=>1000, /*поставили 1000 так как такого пункта у нас в меню нет*/ 'title'=>'Отзывы','position'=>'behind','href'=>'review'),array('id'=>215, /*а такое меню есть и мы его запросили*/ 'title'=>'Полезно','position'=>'after')); В) Как это все включить.
     
    В файле /template/frontend/realia/main/main.php находим вызов
     
    $this->template->assert('navmenu', $this->getTemplateMenu());
     
    И меняем его на
    $menues=array(array('id'=>0,'title'=>'Главная','position'=>'behind'), array('id'=>1000,'title'=>'Отзывы','position'=>'behind','href'=>'review'), array('id'=>215,'title'=>'Полезно','position'=>'after')); /*наш набор пунктов*/ $this->template->assert('navmenu', $this->getTemplateMenu($menues)); /*тут мы его передали в декоратор*/ В результате получаем

  16. Like
    abushyk получил репутацию от doma в маяки на карте   
    /apps/system/js/realtymap.js
     
    1. Находим 
    this.setDefaultIconSize=function(size){ this.markersVariants._default.size=size; }; добавляем после нее
     
    this.setDefaultIconOffset=function(offset){ this.markersVariants._default.offset=offset; };  
     
    2. Далее находим
     initJSON: function(el, datalisting, type, options){ ... if(options.marker_size !== undefined){ self.setDefaultIconSize(options.marker_size); } ...} После if(options.marker_size !== undefined){...}
    добавляем
    if(options.marker_offset !== undefined){self.setDefaultIconOffset(options.marker_offset);} 3. Там где мы передавали параметры кастомного маркера
    RM.initJSON('map', loc_objects, map_type, {marker_icon: estate_folder+'/template/frontend/realia/img/my_marker.png', marker_size: [15, 20], yandexMapType: 'yandex#map' }); добавляем еще один параметр - оффсет нашего маркера marker_offset: [-7, -20] (смещение "ножки" или точки указания маркера относительно верхнего левого угла картинки).
    RM.initJSON('map', loc_objects, map_type, {marker_icon: estate_folder+'/template/frontend/realia/img/my_marker.png', marker_size: [15, 20], yandexMapType: 'yandex#map', marker_offset: [-7, -20] }); Обычно, для маркеров у которых "ножка" по центру нижней грани картинки, это половина ширины картинки и высота картинки со знаками минус.
  17. Like
    abushyk получил репутацию от doma в маяки на карте   
    В realty_grid.tpl есть кусочек запуска карты
    $(document).ready(function(){var RM=new RealtyMap();RM.initJSON('map', loc_objects, map_type);}); Рисуем свою иконку в нужный размер. Грузим ее в шаблон в папку с картинками, например в /template/frontend/realia/img/my_marker.png
    Делаем загрузку маркера дополнив существующую строку
    RM.initJSON('map', loc_objects, map_type, {marker_icon: estate_folder+'/template/frontend/realia/img/my_marker.png', marker_size: [42, 57]}); вместо [42, 57] указываем размеры нового маркера в пикселях [ширина, высота]
     
     
    Аналогично можно поступить в любом шаблоне, где есть запуск карты через интерфейс var RM=new RealtyMap();
  18. Like
    abushyk получил репутацию от Даниэль в вывод блока наши агенты на главную в Realia в типе classic   
    Мимо. Это вы выковырнули блок агента, который разместил объявление.
     
    Блок списка агентов гнездится в файле /template/frontend/realia/agents_list.tpl
     
    Если его нужно переместить окончательно, что бі он нигде больше не выводился кроме как на главной, то можно взять его и вставить в /template/frontend/realia/main.tpl внутрь условия 
    {if $REQUESTURIPATH == '' }
    ...
    {/if}
    или в центральную часть в /template/frontend/realia/layout_basic.tpl в виде {include file="agents_list.tpl"}
     
    При этом нужно будет удалить все включения этого блока в остальных файлах. И, скорее всего понадобится правка стилей, так как этот блок рассчитан на вывод в вертикальную узкую колонку.
     
    Если же его нужно продублировать, тогда лучше сделать отдельный файл под то место, где он будет стоять и аналогично описанному выше вставить его в нужный шаблон
  19. Like
    abushyk получил репутацию от doma в Выгрузка Yandex.Realty   
    Если брать смый общий случай, то я иногда делаю в шаблоне вот так: {if $some_phone_number != '' && $some_phone_number|strlen==12}{$some_phone_number|regex_replace:'/(\d{3,3})(\d{2,2})(\d{3,3})(\d{2,2})(\d{2,2})$/':'+${1} (${2}) ${3}-${4}-${5}'}{/if} Самая примитивная регулярка которая раздирает исходных набор цифр на куски и форматирует из кусочков нужное отображение.
    Для mobilephone, которые однотипны и имеют равную длину и числовую составляющую, работает на ура.
     
    Для прочих номеров возможно больше вариантов из-за необходимости очистки исходного номера от мусора и разной длины номеров из-за свободной формы записи.
  20. Like
    abushyk получил репутацию от doma в [Песочница] Пользовательские сущности и Связанные элементы   
    Продолжаю отдельными постами, так как исчерпал лимит на картинки в одном сообщении ))
     
    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   С другой стороны, даже этот способ немного избыточен. Если Город является дочерним к Региону, а Регион к Стране, то хранение всех трех значений для объявления - это "лишние" данные, хотя при организации поиска они весьма кстати.   Суть в том, что географические данные вполне возможно хранить в виде, схожем со структурой
      и получать к ним доступ более "человечным" путем Но в этом случае остается так же много вопросов связанных с совместимостью с многими приложениями, принципом организации смой геоструктуры (ведь если заструктурить географию от страны до улиц - это может стать неподъемным грузом, а если закончить городом, то не совсем понятно, как вести связь дальше к улицам, которые должны таки быть привязаны к городам или чему-то наследному от них).   В общем идея у нас полно, была бы возможность все реализовать)
  21. Like
    abushyk получил репутацию от doma в Оптимизация JavaScript и CSS при загрузке сайта   
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,300&subset=latin,cyrillic' rel='stylesheet' type='text/css'> Эту строку, раз уж взялись за оптимизацию, так же было бы неплохо убрать из наружной cdn в ссылки на копии файлов шрифтов на сервере. Тут нужно поискать в гугле как правильно локализовать шрифтики из общедоступных cdn гугля.
     
  22. Like
    abushyk получил репутацию от doma в Оптимизация JavaScript и CSS при загрузке сайта   
    Этот спокойно:
    <script type="text/javascript" src="{$estate_folder}/template/frontend/{$current_theme_name}/js/retina.js"></scri Этот кажется тоже. Он присутствовал в исходной реалии, но как-то применить его в связке с сайтбиллем н вышло:
    <script type="text/javascript" src="{$estate_folder}/template/frontend/{$current_theme_name}/js/jquery.currency.js"></script> Этот скорее всего тоже. И выше его брат в виде включения файла стилей
    <script type="text/javascript" src="{$estate_folder}/template/frontend/{$current_theme_name}/libraries/bootstrap-fileupload/bootstrap-fileupload.js"></scrip В зависимости от исполнения шаблона так же могут быть убраны (есть более старый вариант на этой библиотеке и более новый, которому они не нужны) (этот скрипт обслуживает верхнее навигационное меню разделов которое с выпадашками подразделов)
    <link rel="stylesheet" href="{$estate_folder}/template/frontend/{$current_theme_name}/css/jqueryslidemenu.css" type="text/css"> <script type="text/javascript" src="{$estate_folder}/template/frontend/{$current_theme_name}/js/jqueryslidemenu.js"></script>
  23. Thanks
    abushyk получил репутацию от DoobBY в Верхнее меню   
    В агенси это тоже top_fixed_menu.tpl.html но меню там не прописано явно а в виде цикла
    <ul class="nav"> <li><a href="{$estate_folder}/">Главная</a></li> <!--А ВОТ ЭТУ СТРОКУ НУЖНО ВСТАВИТЬ--> {section name=i loop=$right_menu} <li><a href="{$right_menu[i].url}">{$right_menu[i].name}</a></li> {/section} <li></li> </ul>  
  24. Thanks
    abushyk получил репутацию от Realtor в Приложение новости   
    Сказачйте заново архив с ckeditor, удалите старую папку с ним и залейте наново. Он битый у вас сечас, или при распаковке или при закачке попортило файлы.
  25. Like
    abushyk получил репутацию от doma в Как добавить картинку в поиск   
    нет. это разметка по конкретный просмотрщик фоток и не факт, что в другом он будет поддержан вообще как явление и если будет поддержан, то в таком именно виде разметки.
    alt="{$data.topic_id.value_string}, {$data.city_id.value_string}, {$data.street_id.value} {$data.number.value} фото {$smarty.section.j.iteration}"
    Что бы у всех фоток не вышел один и тот же альт, мы доваляем в конце автостроку вида "... фото 1", "... фото 2" итд