Chernetskiy

Участники
  • Публикации

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

  • Посещение

  • Days Won

    191

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

  1. Не совсем так. Тут ситуация будет выглядеть так: Клиент инициирует отправку почтового сообщения с вашего сайта но со своим именем отправителя и своим email. Почтовый сервер видит, что письмо уходит с вашего сервера, например mailer-daemon@server75.hosting.reg.ru, а не с сервера почтового ящика отправителя и начинает проверять его на благонадежность - проверять содержание письма, вложенные ссылки, файлы и т.п. на соответствие своим политикам безопасности, например политике DMARC. Она направлена на борьбу с мошенниками, подробности о ней можно почитать здесь. И если у почтового сервера возникают какие-то подозрения, и к вашему почтовому ящику не прикручена цифровая запись DKIM или сертификат безопасности, подтверждающие благонадежность, то письмо может быть отправлено в СПАМ или не доставлено вовсе. А вам на почту прийдет привет типа: 15.03.2018, 06:31, "Mail Delivery System" <mailer-daemon@server75.hosting.reg.ru>: This message was created automatically by mail delivery software. A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: mail@ваш-домен.ru ... SMTP error from remote mail server after end of data: 550 5.7.1 Email rejected per DMARC policy for mail.ru 1521084692-SK9BoBw2lg-VVsOEPfI , Reporting-MTA: dns; server75.hosting.reg.ru и далее бла-бла-бла Таким образом, Ваш почтовый сервер будет задействован в почтовой пересылке и к нему надо будет относить вопросы безопасности, качества и количества рассылаемых сообщений. Будет много СПАМа или мошеннических/вирусных сообщений с вашего сервера, будут проблемы с блокировкой отправляемых сообщений, внесением вашего сайта как источника рассылки в черный список и понижением рейтинга вашего сайта.
  2. Краса, ненавязчиво завесила рекламу и растворилась, а народ тут в комментах бьется... Учитесь... Основное, что вам необходимо для работы уже есть в Sitebill. Вы можете скачать и установить себе полнофункциональную демо-версию и сами оцените все за и против. Лицензия покупается разово и на всегда. Из модулей выгрузки, для публикации на полсотни порталов вам и штатной выгрузки формата XML Яндекс.Недвижимость хватит. Сейчас только ленивый этот формат не принимает. Приобретение других модулей - вопрос специфики и надобности. Да и затраты на них у вас отобьются с первой же сделки, что не сравнимо со сторонними вариантами, где вы будете платить практически столько-же но ежемесячно.
  3. Елена, когда вы прикручиваете ссылочку к текстику и тыкаете на кнопочку со скрепочкой, то в открывшемся диалоговом окошке, где вы указываете ссылочку, есть соседняя вкладочка "Цель", в ней есть списочек целей, среди которых пунктик "Новое окно (_blank)", в него и тыкаем. Скриншотик в помощь Есть еще альтернативный вариантик - в верхней группе кнопочек редактора есть у вас последняя кнопочка "Источник". Тыкаем в неё и переходим в редактор кода, где вы сможете вручную прописать свою ссылочку, с припиской target="_blank"
  4. За все эти отправки отвечает модуль mailbox. К стати, кнопки шары можно тоже добавить туда-же, к кнопе "Поделиться" - редактируем последние строки кода в apps/mailbox/site/template/form.tpl , там немного подправленный код кнопок Яндекса "Поделиться в соцсетях", вот его и переписываем на свой. Эта-же форма и другие файлы в модуле mailbox отвечают и за отправку писем. Можно конечно самому ставить эксперименты, но лучше обратиться к Константину, он лучше знает свою кухню и поможет сделать эту отправку с минимальными проблемами для хостинга и с защитой от дураков (чтобы хостинг не лег, рассылка не попала в СПАМ и т.п.)... Если у вас не сервер, то в большинстве тарифов хостинга действуют ограничения на рассылку - не более 120 писем в час. Это тоже стоит учесть. Да и своему почтовому ящику в настройках домена стоит прикрутить запись DKIM или сертификат безопасности, чтобы выглядел благонадежным.
  5. Елена, чтобы увидеть эти кнопочки, надо выйти из авторизации на сайте. Кнопки можно изменить в mailbox'е
  6. Озадачился вопросом пристроить название района в заголовок объекта для realty_grid_list.tpl с учетом вариаций вывода: для Москвы выводим: Город, улица, дом для остальных выводим: Регион, район (областной), город, улица, дом для зарубежки выводим: Страна, регион, город Колхозный код заголовка: {if intval($grid_items[i].country_id)==1} {if intval($grid_items[i].region_id)==1} {else} {$grid_items[i].region},{/if} {if $grid_items[i].raion ne ''}{$grid_items[i].raion},{/if} {if $grid_items[i].city ne ''}{$grid_items[i].city},{/if} {if $grid_items[i].street ne ''}{$grid_items[i].street},{/if} {if $grid_items[i].number ne ''}{$grid_items[i].number}{/if} {else} {$grid_items[i].country}, {if $grid_items[i].region ne ''}{$grid_items[i].region},{/if} {if $grid_items[i].city ne ''}{$grid_items[i].city}{/if} {/if} всё замечательно, но районы области сука не выводит... Куда копать, или районы области не обрабатываются в принципе? PS: Упреждаю совет прописать параметры заголовка в настройках - не канает... Наверное шаблон старый
  7. В Usocial, в отличие от Pluso, долго подгружается скрипт, однако в их скрипте вывод на печать и отправка на почту происходят через генерацию файла PDF. Если сайт открывается на мобильнике, там еще мессенджеры в выгрузку подключаются.
  8. Алексей, в вышеуказанном генераторе, пожалуй лечше в Pluso, конструируешь список нужных кнопок, копируешь готовый код для вставки на сайт, в админке сайта заходишь в Редактор шаблонов и создаешь новый шаблон, например pluso.tpl в новый шаблон вставляешь код кнопок, например: {literal} <script type="text/javascript">(function() { if (window.pluso)if (typeof window.pluso.start == "function") return; if (window.ifpluso==undefined) { window.ifpluso = 1; var d = document, s = d.createElement('script'), g = 'getElementsByTagName'; s.type = 'text/javascript'; s.charset='UTF-8'; s.async = true; s.src = ('https:' == window.location.protocol ? 'https' : 'http') + '://share.pluso.ru/pluso-like.js'; var h=d[g]('body')[0]; h.appendChild(s); }})();</script> <div class="pluso" data-background="transparent" data-options="medium,round,line,horizontal,nocounter,theme=06" data-services="vkontakte,odnoklassniki,facebook,moimir,google,email,print"></div> {/literal} затем вставляем созданный шаблон в нужное место сайта командой {include file='pluso.tpl'}, например под заголовок объявления в realty-view.tpl (не знаю как в вашем шаблоне называется шаблон просмотра объявления)
  9. Алексей, как вариант - конструкторы кнопок Usocial или Pluso . Там есть и печать, и вывод в PDF и отправка на почту, в т.ч. в мессенджеры. Недостаток - будет тянуть скрипт со стороннего ресурса.
  10. Алексей, для этого есть отдельное приложение MySearch. Есть приложение Экспорт в PDF, результат которого можно сохранить/отправить/распечатать. Как вариант, можно в кнопки "Поделиться в соцсетях" добавить кнопку отправки на email. У вас предполагается всё в одном, а это скорее всего потребует разработки отдельного модуля. При этом мало понятно как себя поведет выгрузка кучи объектов одним письмом, может кому-то захочется выгружать 20-50-100 объектов... К тому-же клиентам понадобятся нормальные фото а не миниатюры в письме, а это вложения, там будет много сторонних ссылок и т.п.... Тут вопрос может упереться в технические возможности хостинга/почтовой программы, да и сообщения с высокой вероятностью могут попадать в СПАМ, а следом за этим снижение рейтинга сайта... В общем надо понять, стоит-ли овчинка выделки?
  11. У меня Константин поправил, всё грузится. Похоже проблема если не у всех, то у большинства. Обновление модуля будет логичным решением.
  12. А почему не использовать в поиске раздел Новостройки? Чего колхоз городить?
  13. Для этих целей в Afy сравнивают фото, если они 100% идентичны с другими объявлениями, объект к публикации не принимается. Яндекс и некоторые крупные порталы в этих целях делают акцент на кадастровый номер и отдают предпочтение таким объявлениям, у копирующих его как правило его нет.
  14. Может попробовать так: $rs.='<description>'.$data_item['id'].$text.'</description>'."\n"; Вторая строка в вышеуказанном коде закомментировнаа и не работает. Вроде как самый простой вариант. Не уверен, что между $data_item['id'] и $text должна быть одна точка, может две, или запятая... Проверить пока не могу, т.к. выгрузка отвалилась после того как я в базе поковырялся Сейчас над ней и работаю...
  15. Алексей, кнопка "Удалить" по сути и выполняет функцию архивирования, есть еще в Настройках->Дополнительно ряд параметров: Использовать предудаление для объявлений (apps.realty.use_predeleting) - полное удаление через модерацию Архивированные объявления полностью не доступны (apps.realty.archived_notactive) - закрыть пользователю доступ к архивным объектам Открыть доступ к неактивным объектам по прямой ссылке (apps.realty.allow_notactive_direct) - архивные объекты на сайте не показываются но доступны по прямым ссылкам, чтобы не плодить кучу битых ссылок из соцсетей, сторонних сайтов и т.п., куда могли быть дополнительно размещены объекты со ссылками на них.
  16. Добавь в apps/yandexrealty/admin/admin.php, примерно 300 строка (район для позиции Районы в Настройки - Выгрузка Яндекс.недвижимость, это не обязательно, но позволит настраивать системное имя района и устанавливать единое название района по умолчанию, если район один и он основной): ... if ( !$config_admin->check_config_item('apps.yandexrealty.region_global') ) { $config_admin->addParamToConfig('apps.yandexrealty.region_global','','Единое название региона'); } if ( !$config_admin->check_config_item('apps.yandexrealty.raion_from') ) { $config_admin->addParamToConfig('apps.yandexrealty.raion_from','','Системное имя поля с именем района'); } if ( !$config_admin->check_config_item('apps.yandexrealty.raion_global') ) { $config_admin->addParamToConfig('apps.yandexrealty.raion_global','','Единое название района'); } if ( !$config_admin->check_config_item('apps.yandexrealty.street_from') ) { $config_admin->addParamToConfig('apps.yandexrealty.street_from','','Системное имя поля с именем улицы'); } ... Далее, примерно в 1610 строке, организуем выгрузку (между регионом и городом): ... if($region!=''){ $rs.='<region>'.self::symbolsClear($region).'</region>'."\n"; } $raion=trim($this->getConfigValue('apps.yandexrealty.raion_global')); if($raion==''){ if(''!=trim($this->getConfigValue('apps.yandexrealty.raion_from'))){ $raion_from=trim($this->getConfigValue('apps.yandexrealty.raion_from')); }else{ $raion_from=''; } if($raion_from!='' && isset($data_item[$raion_from])){ $raion=$data_item[$raion_from]; }else{ $raion=$data_item['raion']; } } if($raion!=''){ $rs.='<district>'.self::symbolsClear($raion).'</district>'."\n"; } $city=trim($this->getConfigValue('apps.yandexrealty.city_global')); if($city==''){ ... Забыл добавить, у меня в базе системное имя районов области - raion, он и присутствует в коде. Если название другое - поменяй. Далее, примерно в строке 2784, между обработчиком региона и города вставляем район: ... if(isset($form_data_shared['region_id'])){ $select[]='re.name AS region'; $leftjoin[]='LEFT JOIN '.DB_PREFIX.'_region re USING(region_id)'; } if(isset($form_data_shared['raion_id'])){ $select[]='rn.name AS raion'; $leftjoin[]='LEFT JOIN '.DB_PREFIX.'_raion rn USING(raion_id)'; } if(isset($form_data_shared['city_id'])){ $select[]='ct.name AS city'; $leftjoin[]='LEFT JOIN '.DB_PREFIX.'_city ct ON dt.city_id=ct.city_id'; } ... После этого, районы должны появиться в выгрузке... В принципе, всё делается по аналогии с соседними позициями.
  17. 1. Не одно и то-же. lot-number показывается клиенту а offer internal-id - внутренняя заморочка для загрузки, по id Яндекс понимает что это объявление уже есть в базе и обновляет его или добавляет, если такого id в базе нет. Этот параметр никому не показывается. Соответственно, в выгрузке лучше иметь оба параметра. 2. Увидеть можно в фиде выгрузки и на странице объявления в Яндексе (см. скриншот) 3. Если сторонний сайт обрабатывает этот параметр, то вероятно он будет показан клиенту Бывает, хотя наверное можно и в текст выгрузки его пристроить...
  18. Алексей, вот код от моего 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>
  19. Что-то от сервера стали приходить приветы по заданию в Cron - ежедневное обновление курса валют: Заголовок: Cron <u1234567@server123> https://realty-centrum.com/apps/currency/cron.php?from=cbrf&pass=блаблабла Сообщение: /bin/sh: https://realty-centrum.com/apps/currency/cron.php?from=cbrf: No such file or directory Что-бы это значило?
  20. Стандартно, в CMS Sitebill нет справочника областных районов. Это было как раз продиктовано "необязательностью". Но у меня, например такая ситуация, что только в одном районе есть по 2 одноименных населенных пункта, а сколько их наберется в рамках Московской области? По ходу выгрузки на сторонние порталы стали возникать проблемы с адресацией - портал принимал название населенного пункта и в отсутствии района адресовал его в первый попавшийся ему в списке район, а иногда и на противоположный конец страны. Поскольку ежедневно править кучу объявлений на сторонних порталах - еще то удовольстве, многие стали делать кастомные справочники Районов (области), для последующей выгрузки в составе адреса. А поскольку прикрутка Районов к Областям и Городам (Населенным пунктам) напрямую была не возможна, да и есть ряд вариантов адресации, когда населенные пункты в рамках одного региона имеют федеральную, областную и районную подчиненность, как раз и потребовались Связанные элементы, которые позволяют делать зависимости или использовать справочники как дополнительные (конечные) а не промежуточные. Можно организовать универсальные схемы привязки, например: Страна-Город-Улица Страна-Регион-Город-Улица Страна-Регион-Район-Город-Улица Страна-Регион-Шоссе Страна-Регион-Город-Шоссе Страна-Регион-Город-ж/д станции Страна-Регион-Район-Ж/Д станции Страна-Регион-Город-Район города-Метро Страна-Регион-Город-Улица-Метро или Страна-Регион-Город-Метро-Улица Страна-Регион-Район-Застройщик Страна-Регион-Город-Район города-Нотариус Страна-Регион-Район-Нотариус Город-Метро-Нотариус и т.д., хоть одновременно в разных вариантах. Чтобы не обобщать районы и области в один справочник, как раз и удобно использовать связанные элементы, создавая такую структуру подчиненности справочников, которая нужна вам.
  21. По началу в Realia была такая-же фигня, Константин покопался и доработал. На тот момент был автокомплит, но многим понадобились дополнительные справочники, которые надо было как-то увязать в зависимость к имеющимся. Следующей разработкой стал функционал связанных элементов и его обкатывали на Реалии - наиболее ходовом шаблоне на тот момент.
  22. У связанных элементов больше преимуществ, лучше использовать их. Относительно огромного списка, я-бы не сказал, может это особенности отображения в вашем шаблоне? Список не обязательно прокручивать до нужной позиции, по ходу набора текста в строке выборки список сокращается до нужных вариантов. Посмотри у меня в поиске, там всё на связанных элементах. Так-же в ЛК и в админке работает.
  23. Алексей, для выгрузки номера лота (объявления) в Яндекс и на сторонние сайты фидом YML Яндекса существует параметр lot-number, добавьте его в выгрузку (/apps/yandexrealty/admin/admin.php), а в качестве значения для него подставьте значение id из data, соответственно посетители на сторонних сайтах будут видеть номер объявления в вашей базе. То есть, в районе 1547 строки, после длинного кода формирования категории, можно вставить такой код: if(isset($form_data_shared['id']) && isset($data_item['id']) && (int)$data_item['id']!=''){ $rs.='<lot-number>'.$data_item['id'].'</lot-number>'."\n"; } Должно сработать...
  24. Связанные элементы имеют свой механизм, схожий с автокомплитом. По этому автокомплит надо отключить и больше его не упоминать.