banzai72

Отправка избранного на почту (шаблон real-spaces)

Recommended Posts

Нужна форма отправки объектов на почту.

Примерно как на скрине

Что бы посетитель сайта просто добавлял объекты в "Избранное", потом со вкладки "Избранное" вписал нужный Email, и на указанную почту отправилось письмо с выбранными объектами, как на скрине (номер объекта-ссылка на объект, адрес, цена)

А если это будет не только в разделе "Избранное" но и в карточке каждого объекта, что бы можно было просто открыть объект, вставить Email, и он отправился на почту, то будет вообще хорошо.

Шаблон real-spaces

ФОРМА ВВОДА ПОЧТЫ

1.jpg.a35e671a8878d596c30411ac30899603.jpg

ЧТО БЫ ПРИХОДИЛО НА ПОЧТУ ТАК

3.jpg.01524fda31ceb9bc2aaab823f530f538.jpg

ИЛИ ТАК

2.thumb.jpg.14dfe183432e165e49deb9034634c224.jpg

Если кто знает как помочь буду очень благодарен

 

избранное.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Алексей, для этого есть отдельное приложение MySearch. Есть приложение Экспорт в PDF, результат которого можно сохранить/отправить/распечатать. Как вариант, можно в кнопки "Поделиться в соцсетях" добавить кнопку отправки на email. У вас предполагается всё в одном, а это скорее всего потребует разработки отдельного модуля. При этом мало понятно как себя поведет выгрузка кучи объектов одним письмом, может кому-то захочется выгружать 20-50-100 объектов... К тому-же клиентам понадобятся нормальные фото а не миниатюры в письме, а это вложения, там будет много сторонних ссылок и т.п.... Тут вопрос может упереться в технические возможности хостинга/почтовой программы, да и сообщения с высокой вероятностью могут попадать в СПАМ, а следом за этим снижение рейтинга сайта... В общем надо понять, стоит-ли овчинка выделки? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Chernetskiy сказал:

Алексей, для этого есть отдельное приложение MySearch. Есть приложение Экспорт в PDF, результат которого можно сохранить/отправить/распечатать. Как вариант, можно в кнопки "Поделиться в соцсетях" добавить кнопку отправки на email. У вас предполагается всё в одном, а это скорее всего потребует разработки отдельного модуля. При этом мало понятно как себя поведет выгрузка кучи объектов одним письмом, может кому-то захочется выгружать 20-50-100 объектов... К тому-же клиентам понадобятся нормальные фото а не миниатюры в письме, а это вложения, там будет много сторонних ссылок и т.п.... Тут вопрос может упереться в технические возможности хостинга/почтовой программы, да и сообщения с высокой вероятностью могут попадать в СПАМ, а следом за этим снижение рейтинга сайта... В общем надо понять, стоит-ли овчинка выделки? 

У меня установлены все приложения. Но  MySearch это подписка, подписка будет отправлять всё, что нужно и что не нужно. А Экспорт в PDF не подходит потому, что нужно либо скачивать PDF в каждом объекте отдельно либо добавлять в список с личного кабинета, а это не удобно. Да и привыкли уже все просто добавлять в избранное.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, Chernetskiy сказал:

Алексей, для этого есть отдельное приложение MySearch. Есть приложение Экспорт в PDF, результат которого можно сохранить/отправить/распечатать. Как вариант, можно в кнопки "Поделиться в соцсетях" добавить кнопку отправки на email. У вас предполагается всё в одном, а это скорее всего потребует разработки отдельного модуля. При этом мало понятно как себя поведет выгрузка кучи объектов одним письмом, может кому-то захочется выгружать 20-50-100 объектов... К тому-же клиентам понадобятся нормальные фото а не миниатюры в письме, а это вложения, там будет много сторонних ссылок и т.п.... Тут вопрос может упереться в технические возможности хостинга/почтовой программы, да и сообщения с высокой вероятностью могут попадать в СПАМ, а следом за этим снижение рейтинга сайта... В общем надо понять, стоит-ли овчинка выделки? 

Ну думаю кнопка "Отправить на почту" спасла бы положение

Константин, скажите пожалуйста. А разве есть кнопка ОТПРАВИТЬ НА Email ?

Никак не могу найти

А из кнопок "поделиться" отправляет не на почту а на странице "Мой мир" 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Данная тема находится в разделе фриланс. Тут заказчик ищет исполнителя. Флудить здесь не надо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, 72realty сказал:

Ну думаю кнопка "Отправить на почту" спасла бы положение

Константин, скажите пожалуйста. А разве есть кнопка ОТПРАВИТЬ НА Email ?

Никак не могу найти

А из кнопок "поделиться" отправляет не на почту а на странице "Мой мир" 

Алексей, как вариант - конструкторы кнопок Usocial или Pluso . Там есть и печать, и вывод в PDF и отправка на почту, в т.ч. в мессенджеры.

Недостаток - будет тянуть скрипт со стороннего ресурса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, TopRaN сказал:

Данная тема находится в разделе фриланс. Тут заказчик ищет исполнителя. Флудить здесь не надо!

Почему сразу флуд. Зато я теперь знаю как это сложно.

Да и приятно будет если кто то подскажет как хотя бы в карточке объекта поставить кнопку "Отправить на Email"

СПАСИБО ИГОРЬ БУДУ ПРОБОВАТЬ ОТПИШУСЬ

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, 72realty сказал:

Почему сразу флуд. Зато я теперь знаю как это сложно.

Да и приятно будет если кто то подскажет как хотя бы в карточке объекта поставить кнопку "Отправить на Email"

Алексей, в вышеуказанном генераторе, пожалуй лечше в 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 (не знаю как в вашем шаблоне называется шаблон просмотра объявления)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Chernetskiy сказал:

Алексей, в вышеуказанном генераторе, пожалуй лечше в 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 (не знаю как в вашем шаблоне называется шаблон просмотра объявления)

Спасибо

Я сделал так

{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="big,square,line,horizontal,nocounter,theme=03" data-services="bookmark,print,email"></div>
   {/literal} 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В Usocial, в отличие от Pluso, долго подгружается скрипт, однако в их скрипте вывод на печать и отправка на почту происходят через генерацию файла PDF. Если сайт открывается на мобильнике, там еще мессенджеры в выгрузку подключаются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, Chernetskiy сказал:

В Usocial, в отличие от Pluso, долго подгружается скрипт, однако в их скрипте вывод на печать и отправка на почту происходят через генерацию файла PDF. Если сайт открывается на мобильнике, там еще мессенджеры в выгрузку подключаются.

Спасибо. Сейчас всё испытаю!)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Chernetskiy сказал:

В Usocial, в отличие от Pluso, долго подгружается скрипт, однако в их скрипте вывод на печать и отправка на почту происходят через генерацию файла PDF. Если сайт открывается на мобильнике, там еще мессенджеры в выгрузку подключаются.

Спасибо. Агентам стало удобнее. Не надо копировать ссылку и вставлять на почту!;);):)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо Игорь, что разъяснили, что сделать задуманное мною не так просто.

Я если честно думал не так сложно будет сделать. 

Ведь в карточке объявления есть кнопка "Написать" которая отправляет Тему(Категория, адрес, цена, идентификатор), Сообщение, телефон и Email отправителя сообщения на почту хозяина объявления.

Я думал, что не так сложно будет сделать хотя бы в карточке объявления примерно тоже самое.

Только, что бы отправляло c почтового адреса агентства, на указанный посетителем сайта в поле Email, Тему(Категория, адрес, цена, идентификатор) в тему письма, ссылку на объявление вместо сообщения

Я уже и пробовал так:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Тема письма</title> </head> <body> <p><a href="mailto:?subject=Вопрос по HTML">Отправить по почте</a></p> </body> </html>

И так

<a href="mailto:?subject=От%20агентства%20недвижимости&amp;body=Здравствуйте!">Отправить письмо</a>

Но так и не смог никак не вставить ссылку страницы в письмо, не указать email, не вставить в тему письма Категория, адрес, цена, идентификатор

Я уже пробовал переделывать код отправки сообщения в public_html/apps/mailbox/site/template/form.tpl

Но так ни к чему и не пришел :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 12.03.2018 в 00:58, 72realty сказал:

Нужна форма отправки объектов на почту.

Примерно как на скрине

Что бы посетитель сайта просто добавлял объекты в "Избранное", потом со вкладки "Избранное" вписал нужный Email, и на указанную почту отправилось письмо с выбранными объектами, как на скрине (номер объекта-ссылка на объект, адрес, цена)

А если это будет не только в разделе "Избранное" но и в карточке каждого объекта, что бы можно было просто открыть объект, вставить Email, и он отправился на почту, то будет вообще хорошо.

Шаблон real-spaces

ФОРМА ВВОДА ПОЧТЫ

1.jpg.a35e671a8878d596c30411ac30899603.jpg

ЧТО БЫ ПРИХОДИЛО НА ПОЧТУ ТАК

3.jpg.01524fda31ceb9bc2aaab823f530f538.jpg

ИЛИ ТАК

2.thumb.jpg.14dfe183432e165e49deb9034634c224.jpg

Если кто знает как помочь буду очень благодарен

 

избранное.jpg

Закажите Костянтину в фриланс. Мы заказывали ему, что то похожее на Ваш запрос.  Он если сейчас более менее свободен,  нам качественно и в срок все решил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 13.03.2018 в 14:05, Chernetskiy сказал:

Алексей, в вышеуказанном генераторе, пожалуй лечше в 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 (не знаю как в вашем шаблоне называется шаблон просмотра объявления)

я заметила, что у меня в объектах нет кнопочек поделиться. может код какой снесла. подскажите плиз, они у нас автоматом должны быть или надо все таки самостоятельно код вставлять?:) я бы тоже не против сделать кнопочку через поделиться отправить на емейл:rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Helenblondi сказал:

я заметила, что у меня в объектах нет кнопочек поделиться. может код какой снесла. подскажите плиз, они у нас автоматом должны быть или надо все таки самостоятельно код вставлять?:) я бы тоже не против сделать кнопочку через поделиться отправить на емейл:rolleyes:

Елена, чтобы увидеть эти кнопочки, надо выйти из авторизации на сайте. Кнопки можно изменить в mailbox'е

fazenda.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 13.03.2018 в 20:45, 72realty сказал:

Спасибо Игорь, что разъяснили, что сделать задуманное мною не так просто.

Я если честно думал не так сложно будет сделать. 

Ведь в карточке объявления есть кнопка "Написать" которая отправляет Тему(Категория, адрес, цена, идентификатор), Сообщение, телефон и Email отправителя сообщения на почту хозяина объявления.

Я думал, что не так сложно будет сделать хотя бы в карточке объявления примерно тоже самое.

Только, что бы отправляло c почтового адреса агентства, на указанный посетителем сайта в поле Email, Тему(Категория, адрес, цена, идентификатор) в тему письма, ссылку на объявление вместо сообщения

Я уже и пробовал так:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Тема письма</title> </head> <body> <p><a href="mailto:?subject=Вопрос по HTML">Отправить по почте</a></p> </body> </html>

И так

<a href="mailto:?subject=От%20агентства%20недвижимости&amp;body=Здравствуйте!">Отправить письмо</a>

Но так и не смог никак не вставить ссылку страницы в письмо, не указать email, не вставить в тему письма Категория, адрес, цена, идентификатор

Я уже пробовал переделывать код отправки сообщения в public_html/apps/mailbox/site/template/form.tpl

Но так ни к чему и не пришел :)

 

За все эти отправки отвечает модуль mailbox. К стати, кнопки шары можно тоже добавить туда-же, к кнопе "Поделиться" - редактируем последние строки кода в apps/mailbox/site/template/form.tpl , там немного подправленный код кнопок Яндекса "Поделиться в соцсетях", вот его и переписываем на свой.

Эта-же форма и другие файлы в модуле mailbox отвечают и за отправку писем. Можно конечно самому ставить эксперименты, но лучше обратиться к Константину, он лучше знает свою кухню и поможет сделать эту отправку с минимальными проблемами для хостинга и с защитой от дураков (чтобы хостинг не лег, рассылка не попала в СПАМ и т.п.)... Если у вас не сервер, то в большинстве тарифов хостинга действуют ограничения на рассылку - не более 120 писем в час. Это тоже стоит учесть. Да и своему почтовому ящику в настройках домена стоит прикрутить запись DKIM или сертификат безопасности, чтобы выглядел благонадежным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 час назад, Chernetskiy сказал:

За все эти отправки отвечает модуль mailbox. К стати, кнопки шары можно тоже добавить туда-же, к кнопе "Поделиться" - редактируем последние строки кода в apps/mailbox/site/template/form.tpl , там немного подправленный код кнопок Яндекса "Поделиться в соцсетях", вот его и переписываем на свой.

Эта-же форма и другие файлы в модуле mailbox отвечают и за отправку писем. Можно конечно самому ставить эксперименты, но лучше обратиться к Константину, он лучше знает свою кухню и поможет сделать эту отправку с минимальными проблемами для хостинга и с защитой от дураков (чтобы хостинг не лег, рассылка не попала в СПАМ и т.п.)... Если у вас не сервер, то в большинстве тарифов хостинга действуют ограничения на рассылку - не более 120 писем в час. Это тоже стоит учесть. Да и своему почтовому ящику в настройках домена стоит прикрутить запись DKIM или сертификат безопасности, чтобы выглядел благонадежным.

Спасибо Игорь!

Мне Ваши советы очень помогают!

Кстати в предложенном Вами способе есть свои преимущества.

Отправляется непосредственно с почты агента! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
50 минут назад, 72realty сказал:

Спасибо Игорь!

Мне Ваши советы очень помогают!

Кстати в предложенном Вами способе есть свои преимущества.

Отправляется непосредственно с почты агента! :)

Не совсем так. Тут ситуация будет выглядеть так:

  • Клиент инициирует отправку почтового сообщения с вашего сайта но со своим именем отправителя и своим 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
и далее бла-бла-бла

Таким образом, Ваш почтовый сервер будет задействован в почтовой пересылке и к нему надо будет относить вопросы безопасности, качества и количества рассылаемых сообщений. Будет много СПАМа или мошеннических/вирусных сообщений с вашего сервера, будут проблемы с блокировкой отправляемых сообщений, внесением вашего сайта как источника рассылки в черный список и понижением рейтинга вашего сайта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
19 часов назад, Chernetskiy сказал:

Не совсем так. Тут ситуация будет выглядеть так:

  • Клиент инициирует отправку почтового сообщения с вашего сайта но со своим именем отправителя и своим 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
и далее бла-бла-бла

Таким образом, Ваш почтовый сервер будет задействован в почтовой пересылке и к нему надо будет относить вопросы безопасности, качества и количества рассылаемых сообщений. Будет много СПАМа или мошеннических/вирусных сообщений с вашего сервера, будут проблемы с блокировкой отправляемых сообщений, внесением вашего сайта как источника рассылки в черный список и понижением рейтинга вашего сайта.

О как. Ничего себе!

Я думал, что просто ссылка вставляется)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: metrpro
      Добрый день! Шаблон realia, стоит необходимость изменить оформление добавления/убавления из списка "Избранное".
      Нынешнее решение выглядит следующим образом:
      {if isset($smarty.session.favorites)} {if in_array($data.id.value, $smarty.session.favorites)}<a class="fav-rem" alt="{$data.id.value}" title="{$L_DELETEFROMFAVORITES}" href="#remove_from_favorites"></a> {else}<a class="fav-add" alt="{$data.id.value}" title="{$L_ADDTOFAVORITES}" href="#add_to_favorites"></a> {/if} {else}<a class="fav-add" alt="{$data.id.value}" title="{$L_ADDTOFAVORITES}" href="#add_to_favorites"></a> {/if} А мне бы хотелось уйти от картинок, предусмотренных стилем, чтобы выглядеть это стало как обычная кнопка, типа тех, что вызывают в шаблоне модальные окна.
      Буду рад, если кто сможет поделиться подобными наработками (у меня не вышло)
       
    • Автор: banzai72
      Это так должно быть?
      Или это у меня так?
      Может это в шаблоне дело?
      Использовать умную подгонку превьюшек было включено ещё до загрузки изображений. Не помогает.

    • Автор: banzai72
      В избранном не все отмеченные объекты
      Где то есть ограничение или это техническая ошибка и нужно писать Дмитрию?

    • Автор: banzai72
      <script type="text/javascript" src="{$estate_folder}/js/gallery.js"></script> {assign var=this_item_key_mode value='hide'} {if $smarty.session.Accessor.mode=='free'}     {assign var=this_item_key_mode value='open'} {elseif $smarty.session.Accessor.key!=''}     {if $smarty.session.Accessor.is_key_ranged==1}         {if in_array($data_shared.id.value, $smarty.session.Accessor.items)}             {assign var=this_item_key_mode value='open'}         {/if}     {elseif $smarty.session.Accessor.mode=='opened'}         {assign var=this_item_key_mode value='open'}     {elseif $smarty.session.Accessor.mode=='semiopened'}         {if in_array($data_shared[$smarty.session.Accessor.limitedby].value, $smarty.session.Accessor[$smarty.session.Accessor.limitedby])}             {assign var=this_item_key_mode value='open'}         {/if}     {/if} {else}     {assign var=this_item_key_mode value='have_no_keys'} {/if} {literal} <script> $(document).ready(function(){     var ul=$('ul.realty-options');     var ul_length=ul.find('li').length;     var middle=Math.ceil(ul_length/2);     var parent=ul.parents().eq(0);     var new_ul=ul.clone();     li=ul.find('li');     //li_new=ul.find('li');     var p1=li.slice(0,middle);     var p2=li.slice(middle,ul_length);     ul.find('li').remove();     ul.append(p1);     new_ul.find('li').remove();     new_ul.append(p2);     parent.append(new_ul); }); </script> {/literal} {if $map_type eq 'google'}     {literal}     <script type="text/javascript">     function initialize() {         {/literal}         {if $data.geo.value.lat!='' && $data.geo.value.lng!=''}             var obj_lat={$data.geo.value.lat};             var obj_lng={$data.geo.value.lng};         {else}         var obj_lat='';         var obj_lng='';         {/if}         var address='{if $data.city_id.value_string eq ''}{$city_by_default}{else}{$data.city_id.value_string|trim}{/if}{if $data.street_id.value_string != ''}, {$data.street_id.value_string|trim}{/if}{if $data.number.value != '' }, {$data.number.value|trim}{/if}';         {literal}         if(obj_lat!='' && obj_lng!=''){             var lat=obj_lat;             var lng=obj_lng;             var latlng = new google.maps.LatLng(lat, lng);             var myOptions = {               zoom: 16,               center: latlng,               mapTypeId: google.maps.MapTypeId.ROADMAP             };             var map = new google.maps.Map(document.getElementById("YMapsID"), myOptions);             var marker = new google.maps.Marker({                 position: latlng,                 map: map,                 animation: google.maps.Animation.DROP,                 title:address             });         }else{             var geocoder = new google.maps.Geocoder();             geocoder.geocode({'address':address},function(data){                 var lat=data[0].geometry.location.lat();                 var lng=data[0].geometry.location.lng();                 var latlng = new google.maps.LatLng(lat, lng);                 var myOptions = {                   zoom: 16,                   center: latlng,                   mapTypeId: google.maps.MapTypeId.ROADMAP                 };                 var map = new google.maps.Map(document.getElementById("YMapsID"), myOptions);                 var marker = new google.maps.Marker({                     position: latlng,                     map: map,                     draggable:true,                     animation: google.maps.Animation.DROP,                     title:address                 });             });         }     };     jQuery(document).ready(function(){         if(typeof google == 'object'){             initialize();         }     });     {/literal}     </script> {else}     {literal}     <script type="text/javascript">     ymaps.ready(init);     var map;     function init(){         // создаем экземпляр карты и привязываем его к контейнеру         map = new ymaps.Map('YMapsID',{             zoom: 16,             center: [55.76, 37.64],             behaviors: ["scrollZoom", "drag", "dblClickZoom"],             type : 'yandex#map'             });         map.controls.add(new ymaps.control.TypeSelector(['yandex#map', 'yandex#publicMap', 'yandex#satellite', 'yandex#hybrid']));         map.controls.add('scaleLine');         map.controls.add(new ymaps.control.MiniMap(             { type: 'yandex#satellite' },             { size: [90, 90] }         ));         map.controls.add('zoomControl', { top: 75, left: 5 });         {/literal}         {if $data.geo.value.lat!='' && $data.geo.value.lng!=''}             var obj_lat={$data.geo.value.lat};             var obj_lng={$data.geo.value.lng};         {else}         var obj_lat='';         var obj_lng='';         {/if}         if(obj_lat!='' && obj_lng!=''){             map.setCenter(new Array(obj_lat,obj_lng));             var myPlacemark = new ymaps.Placemark(                 new Array(obj_lat,obj_lng),                 {                 },                 {                     /*preset: "twirl#yellowStretchyIcon",*/                     draggable: false,                     hideIconOnBalloonOpen: false                 }             );               map.geoObjects.add(myPlacemark);         }else{             var myGeocoder = ymaps.geocode(                 "{if $data.city_id.value_string eq ''}{$city_by_default}{else}{$data.city_id.value_string}{/if}, {if $data.street_id.value_string != ''} {$data.street_id.value_string}, {/if} {if $data.number.value != '' } {$data.number.value}{/if}", {                     results: 1                 }             );             myGeocoder.then(                 function (res) {                    map.geoObjects.add(res.geoObjects);                    map.setCenter(res.geoObjects.get(0).geometry.getCoordinates());                  }             );         }         {literal}     }     </script>     {/literal} {/if} <!-- newww -->   <div class="single-property">     <div class="row">     <div class="copyrights-col-right col-md-6 col-sm-6">                 <script src="//yastatic.net/es5-shims/0.0.2/es5-shims.min.js"></script> <script src="//yastatic.net/share2/share.js" async="async"></script> <div class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,moimir,gplus,twitter,viber,whatsapp,skype,telegram,linkedin,collections,pinterest,blogger,evernote,lj,tumblr" data-image="https://realty-centrum.com/template/frontend/realia/img/logo.png" data-limit="8"></div>              </div> </div>     <h3></h3>     <div class="row">              <div class="col-md-4 col-sm-6 col-xs-6">             <div class="price"><span>{$data.price.value|number_format:0:",":" "} {if $data.currency_id.value_string != ''}{$data.currency_id.value_string}{else}{$L_RUR_SHORT}{/if}</span></div>       <h3 class="widgettitle"></h3>           <h3 class="widgettitle"></h3>       </div>           <div class="col-md-8 col-sm-6 col-xs-6" style="text-align: right;">             <div class="realtyview-service-bar-block favblock">             {if isset($smarty.session.favorites) && in_array({$data.id.value}, $smarty.session.favorites)}                 <a rel="nofollow" class="removefromfavorites btn" data-id="{$data.id.value}" title="Удалить из избранных" href="#remove_from_favorites"><i class="fa fa-star"></i> В Избранном</a>                 <a rel="nofollow" class="addtofavorites btn btn btn-danger" style="display: none;" data-id="{$data.id.value}" title="Добавить в избранное" href="#add_to_favorites"><i class="fa fa-star"></i> Добавить в избранное</a>             {else}                 <a rel="nofollow" class="removefromfavorites btn" style="display: none;" data-id="{$data.id.value}" title="Удалить из избранных" href="#remove_from_favorites"><i class="fa fa-star"></i> В Избранном</a>                 <a rel="nofollow" class="addtofavorites btn btn btn-danger" data-id="{$data.id.value}" title="Добавить в избранное" href="#add_to_favorites"><i class="fa fa-star"></i> Добавить в избранное</a>             {/if}             </div>             <h3 class="widgettitle"></h3>             {if $apps_pdfreport_enabled==1}             <div class="realtyview-service-bar-block pdfblock"><a href="?format=pdf" class="btn btn btn-primary"><i class="icon-download-alt"></i> Скачать объявление</a></div>            {/if}       {if $apps_pdfreport_enabled==1}             <div class="realtyview-service-bar-block pdfblock"><a href="?format=pdf" class="btn btn btn-primary"><i class="icon icon-print"></i> Печать объявления</a></div>            {/if}         </div>         </div> <h3></h3>     <div class="row">         <div class="col-md-12">                      {if $photo|count>0 && intval($smarty.session.user_id)>0}<a href="{$estate_folder}/get_zip_photo/{$data_shared.id.value}" class="btn btn btn-primary" type="button">Скачать все фото</a>{/if}                                           <div class="row">                     <div id="gallery">                     {section name=j loop=$photo}                         <div class="col-md-3">                             <div class="gitem"><a href="{$estate_folder}/img/data/{$photo[j].normal}" title="<a target='_blank' href='{$estate_folder}/img/data/{$photo[j].normal}' download>Скачать фотографию</a>"><img src="{$estate_folder}/img/data/{$photo[j].preview}" /></a></div>                         </div>                     {/section}                     </div>                     </div>                 </div>             </div>             <hr>               <div class="tabs">                 <ul class="nav nav-tabs">                   <li class="active"> <a data-toggle="tab" href="#description"> {$LT_DESCRIPTION} </a> </li>                   <li> <a data-toggle="tab" href="#amenities"> {$LT_CHARACTERISTICS} </a> </li>                 </ul>                 <div class="tab-content">                   <div id="description" class="tab-pane active">                     {if isset($data.text) && $data.text.value != ''}                         <p>{$data.text.value}</p>                         {/if}                   </div>                   <div id="amenities" class="tab-pane">                         <div class="additional-amenities">                         <ul class="realty-options">                                     {foreach from=$hvd_tabbed item=tab key=tabname}             {if $tab|count>0}                 {foreach from=$tab item=data_item}                     {if $data_item.value eq "0" or $data_item.value eq "" or $data_item.name eq "currency_id" or $data_item.name eq "export_cian" or $data_item.name eq "user_id" or $data_item.name eq "price"  or $data_item.name eq "youtube" or $data_item.type eq "hidden" or $data_item.name eq "text" or $data_item.type eq "geodata" or $data_item.name eq "meta_keywords"  or $data_item.name eq "meta_description" or $data_item.name eq "meta_title" or $data_item.type eq "uploads" or $data_item.name eq "owner_phone" or $data_item.name eq "owner_fio" or $data_item.name eq "private_text"}                                          {elseif $data_item.name eq "uniq_id" or $data_item.name eq "address"} {elseif $data_item.name eq "fio"} {assign var="agent_fio" value=$data_item.value} {elseif $data_item.name eq "phone"} {assign var="agent_phone" value=$data_item.value} {elseif $data_item.name eq "email"} {assign var="agent_email" value=$data_item.value}                     {elseif $data_item.type eq "select_by_query"}                         {if $data_item.value_string!=''}                             {include file="wg_viewport_selectbyquery.tpl" wg_item=$data_item}                         {/if}                     {elseif $data_item.type eq "select_box_structure"}                         {if $data_item.value_string!=''}                             {include file="wg_viewport_selectbyquery.tpl" wg_item=$data_item}                         {/if}                     {elseif $data_item.type eq "checkbox"}                         {if $data_item.name ne 'hot' and $data_item.name ne 'active'}                             {if $data_item.value eq 1}                                 {include file="wg_viewport_checkbox.tpl" wg_item=$data_item}                             {/if}                         {/if}                     {elseif $data_item.type eq "select_box"}                         {if $data_item.value_string!=''}                             {include file="wg_viewport_selectbox.tpl" wg_item=$data_item}                         {/if}                     {elseif $data_item.type eq "tlocation"}                         <li><label>{$data_item.title}</label><span>{$data_item.tlocation_string}</span></li>                     {else}                         {if $data_item.value!=''}                             {if $data_item.name eq "text"}                                 {include file="wg_viewport_text.tpl" wg_item=$data_item}                             {else}                                 {include file="wg_viewport_common.tpl" wg_item=$data_item}                             {/if}                         {/if}                     {/if}                 {/foreach}         {/if}         {/foreach}         {if $data_shared.address.value != ''}         <li><label>Адрес</label><span>{$data_shared.address.value}</span></li>         {/if}         </ul>                                            </div>                                                  <div class="owner_data" style="clear: both; display: block;">                                               </div>                                          <div class="private_data">                         <ul>                             {if $smarty.session.user_id eq $data.user_id.value}                             <li>Телефон собственника: {$data.owner_phone.value}</li>                             {/if}                             {if $smarty.session.user_id eq $data.user_id.value}                             <li>ФИО Собственника: {$data.owner_fio.value}</li>                             {/if}                             {if $smarty.session.user_id eq $data.user_id.value}                             <li>Личный текст: {$data.private_text.value}</li>                             {/if}                                                {if $data.user_id.value eq $smarty.session.user_id}       {if $photo|count>0 && intval($smarty.session.user_id)>0}<a href="{$estate_folder}/get_zip_owner_photo/{$data_shared.id.value}" >Скачать личные фото (или фото документов)</a>{/if}       {/if}           </ul>                     </div>                   </div>                 </div>               </div>                            {if $data.youtube.value != ''}                            <hr>                             <div class="property_video clearfix">                                  <h3 class="big_title">Видео<small>видео ролик о недвижимости</small></h3>                                  <script type="text/javascript" src="{$estate_folder}/js/swfobject.js"></script>                                       <div class="video"><div id="youtube_0">                                           Для просмотра этого видео необходим проигрыватель Flash версии 9 или выше, а также разрешение на выполнение JavaScript.                                           <script type="text/javascript">                                         var params = { allowScriptAccess: "always", bgcolor: "#cccccc", wmode:"opaque", allowfullscreen:true };                                           var atts = { id: "aVideo_0" };                                           var flashvars = {};                                           swfobject.embedSWF("http://www.youtube.com/v/{$data.youtube.value}?enablejsapi=1&playerapiid=aVideo_0", "youtube_0", "425", "349", "9", null, flashvars, params, atts);                                   </script>                                       </div>                                   </div>                             </div>                            {/if}                             <hr>               <div class="property_map clearfix">                     <h3 class="big_title">{$LT_ADVONMAP}</small></h3>                         <div class="map">                             <div id="YMapsID" style="border: 1px solid #e6e6e6; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; width: 100%; height: 400px;"></div>                         </div>                </div>                <hr>               <h6>{$user_data.group_id.value_string}</h6> <h3>Связаться(предложить свою цену):</h3>               <div class="agent">                       <div class="row">                         <div class="col-md-4">                         {if $user_data.imgfile.value != ''}                             <img src="{$estate_folder}/img/data/user/{$user_data.imgfile.value}" alt="{if isset($data.fio.value) && $data.fio.value!=''}{$data.fio.value}{else}{$user_data.fio.value}{/if}">                         {else}                             <img src="{$estate_folder}/template/frontend/{$current_theme_name}/img/no_photo.png" alt="{if isset($data.fio.value) && $data.fio.value!=''}{$data.fio.value}{else}{$user_data.fio.value}{/if}"/>                         {/if}                          </div>                         <div class="col-md-8">                           <h2><a href="#">{if $data.user_id.value==46 || $data.user_id.value==120} {else}{if $data_shared.fio.value != ''}{$data_shared.fio.value}{else}{$user_data.fio.value}{/if}{/if}</a></h2>                          <!--<p>Описание</p>-->                           <div class="agent-contacts clearfix">                                 {if $show_upper == 'true'}                                                                     {/if}                                 {if $smarty.session.user_id!=$user_data.user_id.value && $mailbox_on==1}                                     {include file=$apps_mailbox_block title_data=[$data.topic_id.value_string,$data.city_id.value_string,$data.street_id.value_string] to=$user_data.user_id.value message_to_author_title='Написать'}                                    {/if}                                                             {if $data.user_id.value eq $smarty.session.user_id}       <a href="{$estate_folder}/account/data/?do=delete&id={$data.id.value}" id="recallMeButton" role="button" class="btn btn-danger btn-block btn-mini recallMe-top" data-toggle="modal" rel="nofollow"><i class="icon-white"></i> Удалить</a>       {/if}                                                          {if $data.user_id.value eq $smarty.session.user_id}     <a href="{$estate_folder}/account/data/?do=edit&id={$data.id.value}" id="recallMeButton" role="button" class="btn btn-info btn-block" data-toggle="modal" rel="nofollow"><i class="icon-white"></i> Редактировать</a>       {/if}              {if $data.user_id.value eq $smarty.session.user_id}     <a style="margin-bottom:3px;" class="btn btn-block btn-primary" href="{$estate_folder}/upper/realty{$data.id.value}"><i class="icon-black icon-chevron-up"></i>Поднять (обновить)</a>       {/if}                                                              <h3>                                <ul>                                                              {if $data.user_id.value==46 || $data.user_id.value==120}                                     {if $smarty.session.user_id eq ''}                                          Сотрудник агентства: {if $user_data.phone.value != ''}<i class="fa fa-phone"></i> {$user_data.phone.value}<br>{/if}                             {else}                               <div class="alert alert-error"> {$data_shared.fio.value} Собственник: {if $data_shared.owner_phone.value != ''}<br><i class="fa fa-phone"></i> {$data_shared.owner_phone.value}<br>{/if}</div>                              {/if}                                {else}                                                              {if $data_shared.phone.value != ''}                                 <i class="fa fa-phone"></i> {$data_shared.phone.value}<br>                               {else}                                 {if $user_data.phone.value != ''}<i class="fa fa-phone"></i> {$user_data.phone.value}<br>{/if}                                 {if $user_data.mobile.value != ''}<i class="fa fa-phone"></i> {$user_data.mobile.value}<br>{/if}                                 {if $user_data.email.value != ''}                                 <i class="fa fa-envelope"></i><a href="mailto:{$user_data.email.value}"> {$user_data.email.value}<br></a>                                 {/if}                               {/if}                               {/if} <li class="divider"></li>                               {if $smarty.session.user_id eq ''}                               {if $data.user_id.value==120}                                     {if $this_item_key_mode=='open'}                                         {if $data_shared.phone.value != ''}<br><i class="fa fa-phone"></i> {$data_shared.phone.value}<br>{/if}                             {include file=$accessor_infoblock}                                       {else}                               <div class="alert alert-error"> {include file=$accessor_infoblock} <h4>Внимание!</h4> <h4>Собственник проверен автоматически!</h4> </div> {/if}                                {else}                                                              {if $data_shared.phone.value != ''}                                 <i class="fa fa-phone"></i> {$data_shared.phone.value}<br>                               {else}                                 {/if}                               {/if}                              {else}                     <li></li>                     {/if}                                                              <div class="alert alert-error">                         <ul>                             {if $smarty.session.user_id eq $data.user_id.value}                             <li>Телефон собственника: {$data.owner_phone.value}</li>                             {/if}                             {if $smarty.session.user_id eq $data.user_id.value}                             <li>ФИО Собственника: {$data.owner_fio.value}</li>                             {/if}                             {if $smarty.session.user_id eq $data.user_id.value}                             <li>Личный текст: {$data.private_text.value}</li>                             {/if}                                                {if $data.user_id.value eq $smarty.session.user_id}       {if $photo|count>0 && intval($smarty.session.user_id)>0}<a href="{$estate_folder}/get_zip_owner_photo/{$data_shared.id.value}" >Скачать личные фото (или фото документов)</a>{/if}       {/if}           </ul>                     </div>                               <abbr title="Подтвердим законность собственника и поможем грамотно оформить сделку"><a href="{$estate_filder}/o_nas/" target="_blank" class="btn btn btn-primary" type="button"> Безопасная сделка</a></abbr>                               <abbr title="Оставить заявку на ипотеку"><a href="{$estate_filder}/client/order/ipoteka/" target="_blank" class="btn btn btn-primary" type="button"> Купить по ипотеке</a></abbr>                           <abbr title="Запросить выписку ЕГРН"><a href="https://vupiska.ru/widget/" target="_blank" rel="noopener noreferrer" class="btn btn btn-primary" type="button"> Выписка ЕГРН</a></abbr>                               </div>                       </div>                       </div>                   </div>                {literal} <!-- Put this script tag to the <head> of your page --> <script type="text/javascript" src="//vk.com/js/api/openapi.js?152"></script> <script type="text/javascript">   VK.init({apiId: 6360007, onlyWidgets: true}); </script> <!-- Put this div tag to the place, where the Comments block will be --> <div id="vk_comments"></div> <script type="text/javascript"> VK.Widgets.Comments("vk_comments", {limit: 10, attach: "*"}); </script> {/literal}             </div>             <hr>             <h3>{$LT_SIMILAR_OBJS}</h3>             <div class="property-grid">               <ul class="grid-holder col-3">               {section name=x loop=$similar_data}                 <li class="grid-item type-rent">                   <div class="property-block">                   <a href="{$similar_data[x].href}" target="_blank" class="property-featured-image">                   {if $similar_data[x].image.image_array|count ne 0}                        <img class="previewi" src="{$estate_folder}/img/data/{$similar_data[x].image.image_array[0].preview}" alt="">                   {else}                       <img class="previewi" src="{$estate_folder}/img/no_foto.png" alt="">                   {/if}                   </a>                   <div class="favblock realtygrid-service-bar-block">                     {if isset($smarty.session.favorites)}                         {if in_array($similar_data[x].id.value, $smarty.session.favorites)}                             <a rel="nofollow" class="removefromfavorites" data-id="{$similar_data[x].id.value}" title="Удалить из избранных" href="#remove_from_favorites"><i class="fa fa-star"></i></a>                             <a rel="nofollow" class="addtofavorites" style="display: none;" data-id="{$similar_data[x].id.value}" title="Добавить в избранное" href="#add_to_favorites"><i class="fa fa-star"></i></a>                         {else}                             <a rel="nofollow" class="removefromfavorites" style="display: none;" data-id="{$similar_data[x].id.value}" title="Удалить из избранных" href="#remove_from_favorites"><i class="fa fa-star"></i></a>                         <a rel="nofollow" class="addtofavorites" data-id="{$similar_data[x].id.value}" title="Добавить в избранное" href="#add_to_favorites"><i class="fa fa-star"></i></a>                         {/if}                     {else}                         <a rel="nofollow" class="removefromfavorites" style="display: none;" data-id="{$similar_data[x].id.value}" title="Удалить из избранных" href="#remove_from_favorites"><i class="fa fa-star"></i></a>                         <a rel="nofollow" class="addtofavorites" data-id="{$similar_data[x].id.value}" title="Добавить в избранное" href="#add_to_favorites"><i class="fa fa-star"></i></a>                     {/if}                     </div>                     <div class="property-info">                       <h4><a href="{$similar_data[x].href}" target="_blank">{$similar_data[x].topic_id.value_string}</a></h4>                       <span class="location">{$similar_data[x].city_id.value_string}, {$similar_data[x].street_id.value_string} {$similar_data[x].number.value}</span>                       <div class="price"><span>{$similar_data[x].price.value|number_format:0:",":" "} {if $similar_data[x].currency_id.value_string != ''}{$similar_data[x].currency_id.value_string}{else}{$L_RUR_SHORT}{/if}</span></div>                     </div>                     <div class="property-amenities clearfix">                         {if $similar_data[x].square_all.value ne ''}<span class="area"><strong>{$similar_data[x].square_all.value} {$LT_METER_AB}.<sup><small>2</small></sup></strong>{$LT_SQUARE}</span>{/if}                           {if $similar_data[x].square_kitchen.value ne ''}<span class="baths"><strong>{$similar_data[x].square_kitchen.value} {$LT_METER_AB}.<sup><small>2</small></sup></strong>{$LT_KITCHEN}</span>{/if}                           {if $similar_data[x].room_count.value ne ''}<span class="beds"><strong>{$similar_data[x].room_count.value}</strong>{$LT_ROOMS}</span>{/if}                           {if $similar_data[x].floor.value ne ''}<span class="parking"><strong>{$similar_data[x].floor.value}</strong>{$LT_FLOOR}</span>{/if}                     </div>                   </div>                 </li>                  {/section}               </ul>             </div>             <div class="clearfix"></div>  
    • Автор: banzai72
      Есть ли какая либо возможность отправлять избранные варианты на почту?
      Модуль PDF есть. Но нужно не с личного кабинета отправлять списки и не с отдельно взятого объекта брать PDF, а добавить понравившиеся объекты в избранное и уже из этой вкладки отправить на почту (себе или клиенту). не зависимо от того, зарегистрирован ли пользователь на данном сайте.
      Хоть как отправить. Хоть письмом с ссылками на данные объекты, хоть PDF.......... Главное, что бы из избранного и без регистрации.
      Подскажите пожалуйста, если кто знает