Макс

кнопка "сохранить фото"

Recommended Posts

Здравствуйте, нужна кнопка , "сохранить все фото" она должна быть при просмотре объявления, при нажатии на которую можно было выбрать папку нажать сохранить и туда сохранились непосредственно все фото объекта. если у кого то есть другие варианты можете предлагать, обсудим.

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


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

Имеется ввиду возможность для пользователя скопировать фото объекта оптом на свой комп?

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


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

Имеется ввиду возможность для пользователя скопировать фото объекта оптом на свой комп?

да, только чтобы это была кнопка такая, а не приходилось нажимать на фото потом "сохранить картинку как", это должна кнопка такая вот быть

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


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

Просто сохранить фото не очень интересно по-моему.

Может лучше скачивать в виде pdf целую карточку объекта?

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


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

Просто сохранить фото не очень интересно по-моему.

Может лучше скачивать в виде pdf целую карточку объекта?

очень даже интересно, потому что кто работает с сайтом как агент, фотографии сохраняет для того чтобы разместить этот объект на потусторонний сайт (авито и так далее) пдф интересен если он хочет отправить объект клиенту или еще кому то, а такая функция как быстрое сохранение фото помогло бы ему меньше тратить времени на открытие каждой картинки и сохранении ее.

так что нет вариантов как это можно сделать?

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


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

Подскажу тег для скачивания быстрого картинок 

download

http://htmlbook.ru/html/a/download

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


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

разместить этот объект на потусторонний сайт (авито и так далее

 

Вот на месте авито я бы,наверное, обиделся))) Это описка по фрейду или автоподставляльщик текста так троллит?

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


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

... потому что кто работает с сайтом как агент, фотографии сохраняет для того чтобы разместить этот объект на потусторонний сайт (авито и так далее) ...

:blink: Нормальный агент, который размещает свои объявления и фото на сайте, сначала подготовит эти фото для загрузки на сайт...

Так нах### ему эти фото затем копировать с сайта, чтобы перекинуть их на "потусторонний" AVITO и т.д.? Они-же у него уже есть, а с сайта фото будут иного размера/качества, т.к. при их загрузке на сайт они автоматически обрабатываются.

И не понятно, зачем их вообще вручную грузить на "потусторонние" сайты, при наличии нескольких модулей выгрузки - Яндекс, ЦИАН, AFY... когда всё можно автоматизировать.

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


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

:blink: Нормальный агент, который размещает свои объявления и фото на сайте, сначала подготовит эти фото для загрузки на сайт...

Так нах### ему эти фото затем копировать с сайта, чтобы перекинуть их на "потусторонний" AVITO и т.д.? Они-же у него уже есть, а с сайта фото будут иного размера/качества, т.к. при их загрузке на сайт они автоматически обрабатываются.

И не понятно, зачем их вообще вручную грузить на "потусторонние" сайты, при наличии нескольких модулей выгрузки - Яндекс, ЦИАН, AFY... когда всё можно автоматизировать.

На нашем сайте мы размещаем объявления только от собственников (собираем из разных источников и выкладываем на сайт проверенные предложения от собственников квартир) агенты покупают у нас доступ на сайт, чтобы заполучить собственников. вот и все. потом они копируют эти фотографии и инфу всю, и размещают на циан и авито и тд. под свою комиссию. На нашем сайте агенты ничего не размещают.

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


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

На нашем сайте мы размещаем объявления только от собственников (собираем из разных источников и выкладываем на сайт проверенные предложения от собственников квартир) агенты покупают у нас доступ на сайт, чтобы заполучить собственников. вот и все. потом они копируют эти фотографии и инфу всю, и размещают на циан и авито и тд. под свою комиссию. На нашем сайте агенты ничего не размещают.

Так вот оно чё, Михалыч...! Так может быть есть смысл публиковать на своем сайте 1 фото, а все фото для объявления сжимать в архив и кидать на хостинг в папку /img/... или куда-нить на Гугл-Драйв, обзывая файлы по id объявления, пусть и качают. Соответственно и кнопку "Скачать фото" сделать с адресом с автоподстановкой {id}.zip ?

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


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

Так вот оно чё, Михалыч...! Так может быть есть смысл публиковать на своем сайте 1 фото, а все фото для объявления сжимать в архив и кидать на хостинг в папку /img/... или куда-нить на Гугл-Драйв, обзывая файлы по id объявления, пусть и качают. Соответственно и кнопку "Скачать фото" сделать с адресом с автоподстановкой {id}.zip ?

да,  но также на нашем сайте есть и простые пользователи которые просто хотят снять квартиру без помощи агентов и агентств , чтобы не платить бешеные комиссии 100-50 % и так далее. Поэтому этот функционал для скачивания фото это для отдельной категории наших пользователей хотим создать.

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


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

Что-то наугад натыкал:

в файл шаблона, в любом удобном месте, помещаем такую конструкцию:

<form name="zip" method="post">
	{section name=j loop=$photo
    	input type="hidden" name="photos[]" value="img/data/{$photo[j].normal}">
    	<input type="hidden" name="id" value="{$data.id.value}">
	{/section}
	<input type="submit" value="Скачать все фотографии" /> 
<form>

 

Тут мы формируем список всех фотографий через смарти и добавляем кнопку запроса на сервер.

 

Затем в файле шаблона в функции main добавляем этот ужас:

if(count($_POST['photos']) > 0){
	$zip = new ZipArchive();
	$zip_name = "photos_".$_POST['id'].'_'.time().".zip";
	$zip->open($zip_name, ZIPARCHIVE::CREATE);
	($_POST['photos'] as $photo){
		$zip->addFile($photo,basename($photo));
	}
	$zip->close();
	if(file_exists($zip_name)){
		("Pragma: public");
		header("Expires: 0");
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
		header("Cache-Control: private", false);
		header('Content-type: application/zip');
		('Content-Disposition: attachment; filename="'.$zip_name.'"');
		($zip_name);unlink($zip_name);
	}
}

 

Собственно вот и всё. Это всё конечно следует проверить на ошибки, ибо в PHP я не разбираюсь, плюс следует это всё улучшить, например переименовывать файлы в архиве в более читаемый формат. 

 

Два вопроса к разработчикам:

1. Как следует обрабатывать POST запрос?

2. Можно ли как-то использовать транслитерацию, что есть в движке, в данном случае?

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


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

На нашем сайте мы размещаем объявления только от собственников (собираем из разных источников и выкладываем на сайт проверенные предложения от собственников квартир) агенты покупают у нас доступ на сайт, чтобы заполучить собственников. вот и все. потом они копируют эти фотографии и инфу всю, и размещают на циан и авито и тд. под свою комиссию. На нашем сайте агенты ничего не размещают.

Нескромный вопрос, а выгрузка XML для Яши у вас на сайте есть? Я к тому, что зачем вашим пользователям подписываться, когда можно загрузить вашу выгрузку XML с полным описанием и ссылками на фото и удобно с ней работать в Экселе :)

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


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

Немного допилил концепцию http://pastebin.com/jMkheJjA

 

Отличия:

- чуть больше проверок

- не отдается гостям, только авторизированным

- не отдаст картинки неактивной записи

- не отдаст вообще никаких картинок, кроме тех, что приписаны к конкретному полю в объявлении (через пост-запрос с передачей имен картинок я могу зазиповать всю папку со всеми картинками)

 

Код ставится в /main/main.php в любом месте функции main(), но только после строки $REQUESTURIPATH=Sitebill::getClearRequestURI();

 

В вставляемом коде в строке 3 $image_field='image'; нужно казать систменое имя поля в модели, где лежат картинки под отдачу.

 

Код запускается запросом на адрес /get_zip_photo/NNN/ - где NNN - идешка записи

 

Соотв. в realty_view.tpl  в любом удобном месте нужно разместить ссылку вида

{if $photo|count>0 && intval($smarty.session.user_id)>0}<a href="{$estate_folder}/get_zip_photo/{$data_shared.id.value}">Скачай меня</a>{/if}

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


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

Два вопроса к разработчикам:

1. Как следует обрабатывать POST запрос?

2. Можно ли как-то использовать транслитерацию, что есть в движке, в данном случае?

 

1. В данном случае пост небезопасен. Я могу пропустить парсер по сайту, собрать все имена картинок, сформировать пост-форму с ними и пырнуть движек запросом на миллион картинок. Пост его протянет и, скорее всего сервак надолго станет)). В идеале подобные запросы должны выполняться только по двум параметрам - идешка интересуемой записи и ключ некоего набора данных, а код должен сам решить, что и в каких количествах кому выдать. Тут я думаю принцип понятен - чем меньше прав у пользователя, тем лучше всем.

2. Да. Но с какой целью? Там вроде нечего транслитерировать. Разве что повыдергивать еще пару полей вместе с ид, фото и активность и из них сформировать красивое название для архива и потом пропустить его через $this->transliteMe(тут_имечко).

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


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

Разве что повыдергивать еще пару полей вместе с ид, фото и активность и из них сформировать красивое название для архива и потом пропустить его через $this->transliteMe(тут_имечко).

Да, именно ради этого. Хотя это у меня нечто вроде суеверия, в 2015 году вроде как не должно быть проблем с кириллицей, тем более в PHP.

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


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

Да, именно ради этого. Хотя это у меня нечто вроде суеверия, в 2015 году вроде как не должно быть проблем с кириллицей, тем более в PHP.

 

ИМХО все хорошо к месту. а кириллице не место тут.))

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


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

Подскажу тег для скачивания быстрого картинок 

download

http://htmlbook.ru/html/a/download

Помогите реализовать эту функцию скачивания фото 

если в риелти view разместить код так:

 

           <div class="es-carousel-wrapper">
                    <div class="es-carousel">
                      <ul>
                      {section name=j loop=$photo}
                      <li>
                          <a href="#" data-nr="{$smarty.section.j.iteration}" ><img src="{$estate_folder}/img/data/{$photo[j].preview}" width="88" height="88" data-large="{$estate_folder}/img/data/{$photo[j].normal}" /></a>
 
<a href="{$estate_folder}/img/data/{$photo[j].normal}" download>Скачать </a>
                </li>
                      {/section}
то будет как на первом фото, так бы устроило все, но эта функция "скачать " как будто прилипает к этой всей превью фото и не срабатывает.
если так код прописать:
{section name=j loop=$photo}
                      <li>
                          <a href="#" data-nr="{$smarty.section.j.iteration}" ><img src="{$estate_folder}/img/data/{$photo[j].preview}" width="88" height="88" data-large="{$estate_folder}/img/data/{$photo[j].normal}" /></a>
 
                </li>
 
<a href="{$estate_folder}/img/data/{$photo[j].normal}" download>Скачать </a>
 {/section}
 То все пошло поехало (фото 2)  на форме НО срабатывает скачивание , КАК сделать чтобы на первом примере срабатывало? 

post-2088-0-11030800-1447756864_thumb.pn

post-2088-0-89002600-1447756864_thumb.pn

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


Ссылка на сообщение
Поделиться на других сайтах
В 14.11.2015 в 02:27, abushyk сказал:

Немного допилил концепцию http://pastebin.com/jMkheJjA

 

Отличия:

- чуть больше проверок

- не отдается гостям, только авторизированным

- не отдаст картинки неактивной записи

- не отдаст вообще никаких картинок, кроме тех, что приписаны к конкретному полю в объявлении (через пост-запрос с передачей имен картинок я могу зазиповать всю папку со всеми картинками)

 

Код ставится в /main/main.php в любом месте функции main(), но только после строки $REQUESTURIPATH=Sitebill::getClearRequestURI();

 

В вставляемом коде в строке 3 $image_field='image'; нужно казать систменое имя поля в модели, где лежат картинки под отдачу.

 

Код запускается запросом на адрес /get_zip_photo/NNN/ - где NNN - идешка записи

 

Соотв. в realty_view.tpl  в любом удобном месте нужно разместить ссылку вида


{if $photo|count>0 && intval($smarty.session.user_id)>0}<a href="{$estate_folder}/get_zip_photo/{$data_shared.id.value}">Скачай меня</a>{/if}

Спасибо!

Всё получилось отлично!

 

свф.jpg

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


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

Я пошел немного дальше

Сделав дополнительно загрузку личных фото (или фотографий документов по объекту)

И вставил ссылку для скачивания агентами, рядом с контактами собственника

Соответственно сделал, что видит данную ссылку, как и контакты собственника только агент разместивший данное объявление

 

В realty_view.tpl

<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>

 

А в main.php

if(intval($_SESSION['user_id'])>0 && preg_match('/^get_zip_owner_photo\/(\d+)$/', $REQUESTURIPATH, $matches)){
    $id=$matches[1];
    $image_field='owner_image'; //указываем системное имя поля с картинками в нашей модели
    require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php');
    $data_model = new Data_Model();
    $form_data_shared = $data_model->get_kvartira_model(false, true);
    $form_data_shared=$form_data_shared['data'];
    $fields=array('id', $image_field, 'active');
    foreach($form_data_shared as $k=>$v){
        if(!in_array($k, $fields)){
            unset($form_data_shared[$k]);
        }
    }
            
    $form_data_shared = $data_model->init_model_data_from_db ( 'data', 'id', $id, $form_data_shared, true );
    
    //Если такого объекта нет - отбрасываем        
    if(!$form_data_shared){
        exit();
    }

    //Если объект неактивен - отбрасываем        
    if($form_data_shared['active']['value']!=1){
        exit();
    }
    $images=array();
    if($form_data_shared[$image_field]['type']=='uploads' && is_array($form_data_shared[$image_field]['value']) && count($form_data_shared[$image_field]['value'])>0){
        $images=$form_data_shared[$image_field]['value'];
    }elseif($form_data_shared[$image_field]['type']=='uploadify_image' && is_array($form_data_shared[$image_field]['image_array']) && count($form_data_shared[$image_field]['image_array'])>0){
        $images=$form_data_shared[$image_field]['image_array'];
    }
    
    //Если картинок нет - отбрасываем            
    if(empty($images)){
        exit();
    }
            
    $zip = new ZipArchive();
    $zip_name = "photos_".$id.'_'.time().".zip";
    $zip->open($zip_name, ZIPARCHIVE::CREATE);
    foreach($images as $photo){
        $zip->addFile(SITEBILL_DOCUMENT_ROOT.'/img/data/'.$photo['normal'], $photo['normal']);
    }
    $zip->close();
    if(file_exists($zip_name)){
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Cache-Control: private", false);
        header('Content-type: application/zip');
        header('Content-Disposition: attachment; filename="'.$zip_name.'"');
        readfile($zip_name);
        unlink($zip_name);
    }
    exit();
}

СПАСИБО ЗА СОВЕТЫ!!! РАБОТАЕТ ОТЛИЧНО!

____________________________________________________________________

ЕСЛИ КТО СМОЖЕТ ПОМОЧЬ БУДУ БЛАГОДАРЕН

КАК СДЕЛАТЬ ТОЖЕ САМОЕ НЕ С ФОТО А С ДОКУМЕНТАМИ?

 

doc.jpg

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


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

Всем добрый день!

Подскажите, пожалуйста.... все изрыл, не пойму в чем дело...
С компьютера фотки скачиваются без проблем в zip-архив, все открывается, все хорошо!
С телефона архив тоже скачивается, но не распаковывается, пишет, что файл поврежден.
Отправляю этот файл на комп, все открывается.

Пробовал с андройда и iOS. С нескольких телефонов, везде одинаково :(
Сайт http://kv39.ru
Кнопка сразу под картинками...
Может, кто подскажет.... Спасибо огромное!

PS Просто создаю архив любой, скачиваю через телефон, все распаковывается.
Может, где-то какая-то библиотека не такая, которая архивы делает...

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


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

Всем добрый день!

Подскажите, пожалуйста.... все изрыл, не пойму в чем дело...
С компьютера фотки скачиваются без проблем в zip-архив, все открывается, все хорошо!
С телефона архив тоже скачивается, но не распаковывается, пишет, что файл поврежден.
Отправляю этот файл на комп, все открывается.

Пробовал с андройда и iOS. С нескольких телефонов, везде одинаково :(
Сайт http://kv39.ru
Кнопка сразу под картинками...
Может, кто подскажет.... Спасибо огромное!

PS Просто создаю архив любой, скачиваю через телефон, все распаковывается.
Может, где-то какая-то библиотека не такая, которая архивы делает...

Поставьте rar архиватор на телефон и попробуйте. 

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


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

Поставьте rar архиватор на телефон и попробуйте. 

Попробовал... Пишет: Поврежденный архив.

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


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

Странно, после переезда на другой хостинг (а, может, и не в том дело) перестала работать кнопка "Сохранить все фото" (kv39.ru:( Причем, иногда скачивается нормально и открывается, но очень редко! Все пересмотрел, не пойму, в чем дело = "Архив поврежден".

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


Ссылка на сообщение
Поделиться на других сайтах
В 14.11.2015 в 02:27, abushyk сказал:

Немного допилил концепцию http://pastebin.com/jMkheJjA

 

Отличия:

- чуть больше проверок

- не отдается гостям, только авторизированным

- не отдаст картинки неактивной записи

- не отдаст вообще никаких картинок, кроме тех, что приписаны к конкретному полю в объявлении (через пост-запрос с передачей имен картинок я могу зазиповать всю папку со всеми картинками)

 

Код ставится в /main/main.php в любом месте функции main(), но только после строки $REQUESTURIPATH=Sitebill::getClearRequestURI();

 

В вставляемом коде в строке 3 $image_field='image'; нужно казать систменое имя поля в модели, где лежат картинки под отдачу.

 

Код запускается запросом на адрес /get_zip_photo/NNN/ - где NNN - идешка записи

 

Соотв. в realty_view.tpl  в любом удобном месте нужно разместить ссылку вида


{if $photo|count>0 && intval($smarty.session.user_id)>0}<a href="{$estate_folder}/get_zip_photo/{$data_shared.id.value}">Скачай меня</a>{/if}

 

Можно вопрос:

Возможно ли , что то изменить в данном коде, что бы фотографии, которые архивируются и скачиваются брались из:

public_html/img/data/nowatermark

?

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


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


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

    • Автор: 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>  
    • Автор: kkkv39
      Добрый день!
      подскажите пожалуйста, как создать копию страницы realty_view.tpl, чтобы она отображалась  по ссылке.
      Например, сама realty_view.tpl на сайте отображается www.domen.ru/realty001
      Как создать realty_view_copy.tpl, чтобы она работала по адресу, напр, www.domen.ru/realty_copy001 или подобно?
      Где это прописать?
      Спасибо!
    • Автор: yurijp
      Здравствуйте. Не получается правильно отредактировать дату окончания Vip и premium статуса объявления в разделе "кратко". См.фото.

    • Автор: kkkv39
      Всем привет!
      Скажите, может, кто-то видоизменял эти блоки?! Может, посоветуйте свой вариант. Хочется чего-то другого немного. Шаблон - Realia


    • Автор: Chernetskiy
      Озадачился вопросом создания дополнительного текстового поля (дополнительного описания к объекту), которое не будет включаться в выгрузку, т.к. будут проблемы с принимающей стороной (требуют описание одного объекта а надо например дополнить описание вариантами объектов а не разводить кучу одинаковых только с разной ценой). Шаблон Realia.
       
      В этих целях создал в data дополнительное текстовое поле extended и прописал в realty_view.tpl дополнительно к описанию следующее:
      <div class="noverview-full"> {if $data.text.value != ''} <p align="justify">{$data.text.value}</p> <hr> <p align="justify">{$data.extended.value}</p> {/if}</div> В результате, при просмотре объявления, дополнительное описание показывается под текстом основного описания и дублируется в колонке слева, вместе с параметрами объявления. Как-бы его убрать из колонки слева? 
       
      Посмотреть можно здесь
       
      И попутная хотелка, позиции с чекбоксами хотелось-бы перенести под основной текст описания (домофон, паркинг, кондиционер и т.п.), как-бы этот вопрос решить, без дублирования в колонке слева?