Дмитрий Кондин

Вывод полей в просмотре объявления

Recommended Posts

В realty_view.tpl есть вот такая конструкция:

{foreach from=$hvd_tabbed item=tab key=tabname}   {if $tab|count>0}      {foreach from=$tab item=data_item}                         {if $data_item.type eq "primary_key" or $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"}....

В первом условии в цикле формируется список полей, которые не должны выводиться в таблице свойств. Сюда нужно добавить еще вот это условие, чтобы не выводились ключевые слова и мета-описание:

{if $data_item.type eq "primary_key" or $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"}

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


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

спасибо. а подскажите как задать правило , чтобы поле отображалось только если пользователь залогинился и это его объявление?

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


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

спасибо. а подскажите как задать правило , чтобы поле отображалось только если пользователь залогинился и это его объявление?

 

Если при просмотре нужно вывести что-либо по такому условию, то в шаблоне проставьие условие

 

Это для вывода в шаблоне просмотра объявления.

{if $smarty.session.user_id>0 && $smarty.session.user_id==$data.user_id.value}

а тут уже вставьте то, что нужно выводить по этому условию

{/if}

 

Если вывод нужен в шаблоне сетки тогда почти так же

{if $smarty.session.user_id>0 && $smarty.session.user_id==$grid_items.user_id}

а тут уже вставьте то, что нужно выводить по этому условию

{/if}

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


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

А как для группы пользователей поставить то-же условие?

 

 

В шаблоне должна быть доступна переменная $smarty.session.current_user_group_name , которая содержит системное имя группы пользователей (то, которое значится в поле "Системное название (только латинские буквы)",когда вы редактируете группу пользователей) в которой находится текущий пользователь.

Т.е. можете проверять залогинен ли пользователь и значение этой переменной

{if $smarty.session.user_id>0 && $smarty.session.current_user_group_name eq 'special_users'}

...

{/if}

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


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

Совершенно верно подмечено. Есть некоторая разница при логировании пользователя со статусом администратора в административной части и во фронтальной. Они не идентичны.

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


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

abushyk а вообще это безопасно? Можно ли зная системное имя группы или id пользователя или системное имя поля получить без авторизации его данные(скрытого поля)?

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


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

Возможно добавить кнопку редактирования  для realty_view.tpl как в личном кабинете  realty_grid_account.tpl ?

 

{section name=i loop=$grid_items}

<a href="{$estate_folder_control}?do=edit&id={$grid_items.id}"><img src="{$estate_folder}/img/edit.gif" border="0" width="16" height="16" /></a>

{/section}

 

Спасибо за помощь!!

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


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

Возможно добавить кнопку редактирования  для realty_view.tpl как в личном кабинете  realty_grid_account.tpl ?

 

 

Добавить можно, но из-за различий в системе авторизации с фронта и с админки, эта ссылка кинет не на форму редактирования,, а на форму входа в админку. Т.е. если админ авторизирован в админке, то он, в какой-то мере авторизирован и во фронте, но если он авторизирован во фронте, то он НЕ авторизирован в админке.

Не совсем логично, но так пока есть.

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


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

abushyk а вообще это безопасно? Можно ли зная системное имя группы или id пользователя или системное имя поля получить без авторизации его данные(скрытого поля)?

 

Знание системного имени группы ничего не дает - это больше справочный параметр.

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

Разве что злоумышленнику удастся получить доступ к выполнению запросов к базе данных, тогда эти значения могут быть полезными, но при такой ситуации, они ему будут не нужны. Или кража сессии. Поэтому обязательно производите выход из аккаунта после его использования на чужом компьютере + очистка coockie браузера. Но это уже относится к универсальным правилам безопасности.

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


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

abushyk  кнопка редактирования есть и в фронтальной части сайта. в личном кабинете фронтальной части.  

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


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

abushyk  кнопка редактирования есть и в фронтальной части сайта. в личном кабинете фронтальной части.  

 

Если стоит задача при просмотре владельцем своего объявления показать ссылку на Редактировать, то можно просто продублировать аналогичную ссылку из личного кабинета - тут проблемы не будет.

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

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


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

Знание системного имени группы ничего не дает - это больше справочный параметр.

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

Разве что злоумышленнику удастся получить доступ к выполнению запросов к базе данных, тогда эти значения могут быть полезными, но при такой ситуации, они ему будут не нужны. Или кража сессии. Поэтому обязательно производите выход из аккаунта после его использования на чужом компьютере + очистка coockie браузера. Но это уже относится к универсальным правилам безопасности.

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

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


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

ссылка из личного кабинета пользователя выглядит так.

{section name=i loop=$grid_items}

<a href="{$estate_folder_control}?do=edit&id={$grid_items.id}"><img src="{$estate_folder}/img/edit.gif" border="0" width="16" height="16" /></a>

{/section}

 

Такой вариант не подходит для realty_view.tpl

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


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

Все разобрался!!!

Вот очень полезный код для добавления кнопки  редактирования обявления в само объявление (realty_view.tpl)

Кнопка будет доступна если только вы авторизованы и находитесь на своем объявлении.

 

 

{if $smarty.session.user_id>0 && $smarty.session.user_id==$data.user_id.value}
<a href="/account/data/?do=edit&id={$data.id.value}"><i class="glyphicon glyphicon-pencil"></i></a>
{/if}

 

Код вставить в нужное место шаблона объявления realty_view.tpl

Код для bootstrap 3

У кого bootstrap 2.3 то нужно заменить <i class="glyphicon glyphicon-pencil"></i>  на  <img src="{$estate_folder}/img/edit.gif" border="0" width="16" height="16" />

Прошу добавить кнопку в будующих версиях, а также кнопку удаления.

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


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

ссылка из личного кабинета пользователя выглядит так.

{section name=i loop=$grid_items}

<a href="{$estate_folder_control}?do=edit&id={$grid_items.id}"><img src="{$estate_folder}/img/edit.gif" border="0" width="16" height="16" /></a>

{/section}

 

Такой вариант не подходит для realty_view.tpl

Для этого нужно использовать вот этот код:

<a href="{$estate_folder_control}/account/data/?do=edit&id={$data.id.value}"><img src="{$estate_folder}/img/edit.gif" border="0" width="16" height="16" /></a>

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


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

rumantic я тоже так думал - но этот код не работет.работает тот что я написал  <a href="/account/data/?do=edit&id={$data.id.value}">

 

{$estate_folder_control}    формирует ссылку текущего местоположения,  и получаеться например /arenda-kvartir/2-komn/realty30?do=edit&id=30     

 а должно быть     /account/data/?do=edit&id=30.так работает

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


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

rumantic я тоже так думал - но этот код не работет.работает тот что я написал  <a href="/account/data/?do=edit&id={$data.id.value}">

 

{$estate_folder_control}    формирует ссылку текущего местоположения,  и получаеться например /arenda-kvartir/2-komn/realty30?do=edit&id=30     

 а должно быть     /account/data/?do=edit&id=30.так работает

Точно, забыл поправку сделать на адрес ЛК.

Поправил.

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


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

 

<a href="/account/data/?do=edit&id={$data.id.value}"><i class="glyphicon glyphicon-pencil"></i></a>

 

 

Верно. Только измените 

href="/account/data/?do=edit&id={$data.id.value}"

на 

href="{$estate_folder}/account/data/?do=edit&id={$data.id.value}"

Именно переменная {$estate_folder} (а не {$estate_folder_control}) доступна во всей фронтальной части и она сохранит правильность ссылок, если сайт будет перенесен из корня в подпапку.

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


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

 

В realty_view.tpl есть вот такая конструкция:

В первом условии в цикле формируется список полей, которые не должны выводиться в таблице свойств. Сюда нужно добавить еще вот это условие, чтобы не выводились ключевые слова и мета-описание:

{if $data_item.type eq "primary_key" or $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"}

Мне надо чтоб не выводились все поля вкладки. Все поля которые я не хочу показывать я разместил новых вкладках. Можно как от просто прописать что вкладку не показывать?

 

ps.Есть другой вариант - у поля есть крыжик "Колонка активна" можно добавить "Выводить поле в просмотре объявления". т.е. она будет доступна только в ЛК, там можно хранить например телефоны собственника, дату рождения чтобы потом сделать рассылку.

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


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

Мне надо чтоб не выводились все поля вкладки. Все поля которые я не хочу показывать я разместил новых вкладках. Можно как от просто прописать что вкладку не показывать?

 

ps.Есть другой вариант - у поля есть крыжик "Колонка активна" можно добавить "Выводить поле в просмотре объявления". т.е. она будет доступна только в ЛК, там можно хранить например телефоны собственника, дату рождения чтобы потом сделать рассылку.

Для этого нужно сделать доступно для групп - и выбираем группы - админов, риэлторов. В результате при просмотре обычным посетителем он не включен ни в какую группу, и в результате не увидит этих полей.

А из ЛК нужные группы будут видеть это поле.

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


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

Для этого нужно сделать доступно для групп - и выбираем группы - админов, риэлторов. В результате при просмотре обычным посетителем он не включен ни в какую группу, и в результате не увидит этих полей.

А из ЛК нужные группы будут видеть это поле.

Я риелтор в обьявлении записал ФИО и тел собственника. (для себя как клиентская база) у этого поля стоит группа только для риелторов.

Заходит другой риелтор на сайт открывает мое объявление и видит там моего собственника :rolleyes:

При просмотре обьявлений  чтоб вообще не выводить как теги.

 

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

Есть вкладка Мега-теги там 3 поля. Надо каждое поле исключаеть из показа итого 3 раза. А я ленивый хотел один раз, всю вкладку оптом.

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


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

Я риелтор в обьявлении записал ФИО и тел собственника. (для себя как клиентская база) у этого поля стоит группа только для риелторов.

Заходит другой риелтор на сайт открывает мое объявление и видит там моего собственника :rolleyes:

При просмотре обьявлений  чтоб вообще не выводить как теги.

 

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

Есть вкладка Мега-теги там 3 поля. Надо каждое поле исключаеть из показа итого 3 раза. А я ленивый хотел один раз, всю вкладку оптом.

Понял, подумаем в будущей версии как это можно реализовать.

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


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

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

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

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

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

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

Войти

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

Войти сейчас