Папоротниковый Пингвин

Ограничить отображение полей в информации об объекте

Recommended Posts

Здравствуйте. Ситуация следующая. На моём сайте есть 2 типа людей. 1: администраторы 2. все остальные пользователи. 2-я группа делится на арендодателей и арендаторов. Не первые не вторые не проходят регистрацию и могут как зарегистрировать свой объект для подачи на аренду, так и заполнить заявку на аренду какого-нибудь объекта. Мне необходимо, что бы те, кто регистрирует свои объекты - видели все поля формы (адрес объекта, контактный номер телефона и т.д.), НО мне так же нужно скрыть эти поля формы при показе общей информации о данном объекте на сайте. Подскажите пожалуйста, как это реализовать именно в такой пользовательской структуре? где есть только админы и только незарегистрированные пользователи.

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


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

Если пользователи не регистрируются на сайте, то как они могут различаться для сайта на арендодателей и арендаторов?

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


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

Есть два пути открытия полей данных объявления в карточке объекта:

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

2. Для умных. Вы верстаете шаблон карточки объекта с учетом вывода именно тех параметров объявления, которые вы хотите показать, вне зависимости от того, какие права видимости вы выставили на поля модели для формы.

 

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

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


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

Первый вариант себя не оправдывает и требованиям не подходит, я именно по этому и попросил помощи. Вот второй вариант - именно то, что нужно. То есть, мне необходимо править realty_view.tpl в шаблоне agency? Нужны ли какие-либо особые формы кода для вывода одних данных и скрытия других? или это возможно реализовать закомментировав "ненужный" код?

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


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

Если пользователи не регистрируются на сайте, то как они могут различаться для сайта на арендодателей и арендаторов?

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

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


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

Конструкция вывода выглядит так

            <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.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" or $data_item.type eq "uploads"}            {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}        </ul>

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


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

1) Я старался по разному повлиять на вывод информационных полей, но ничего толкового не вышло. вы не могли бы привести какой-нибудь код в пример? Ну например в ситуации если я создал в форме date новую строку для регистрации (distance - расстояние до моря) и эти данные выводятся автоматически, генерируются самим кодом, как я могу повлиять с этого .tpl на данный процесс?

2) Может быть есть какой-нибудь код отвечающий за вывод отдельной строки из формы date(из базы)? Удалить весь код генерации и автоматического вывода и сделать вывод в ручную только тех полей, которые необходимы, возможен ли такой подход? как может выглядеть подобный код? По сути таблица больше меняться не будет. А если и потребуется изменить вывод полей, то я думаю по образцу такое будет сделать достаточно просто.

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


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

Удалить весь код генерации и автоматического вывода и сделать вывод в ручную только тех полей, которые необходимы, возможен ли такой подход?

 

Запросто. Это и есть "умный" вариант. Выглядит это примерно так http://pastebin.com/SSRc7w9P

{$data_shared...} используется вместо {$data...} для того, что бы обойти ограничения по видимости для групп.

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


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

))) Эта простыня навевает ужас, но, для сайтов, которые прошли этап утряски набора данных, такой вывод куда более удобен и разумен. Будут вопросы, спрашивайте.

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


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

))) Эта простыня навевает ужас, но, для сайтов, которые прошли этап утряски набора данных, такой вывод куда более удобен и разумен. Будут вопросы, спрашивайте.

Действительно получается))) это круто, но почему-то дублируются данные и в информации об объекте он описывается 2 раза, 1 раз полностью и второй раз полностью, пытался методом тыка исправить, результат не очень. Подскажите пожалуйста, как пофиксить?

 

P.S.

 

В коде для вывода содержимого используются value и value_string, для числового значения и строки - соответственно. Возникла проблема с выводом данных из формы, если они были заполнены(созданы) с помощью safe_string, textarea_editor и textarea. То есть, делая по образцу, логично предположить что value_string выведет значения запрашиваемых данных, однако на практике этого не происходит. Нужно ли использовать специальные "операторы вывода", либо где-то у меня косяк?

 

РЕШЕНО. Удивительно, но сработал value. Вывел все поля которые были созданы с помощью safe_stringtextarea_editor и textarea, забавно конечно и очень странно для меня - как человека мало разбирающегося в области веб-девелопмента, однако был уверен в назначении "операторов" value и value_string.

Изменено пользователем Папоротниковый Пингвин

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


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

описывается 2 раза, 1 раз полностью и второй раз полностью, пытался методом тыка исправить, результат не очень

 

Без "посмотреть в шаблон" и "посмотреть на сайт" практически даже не знаю на что намекнуть.

 

однако был уверен в назначении "операторов" value и value_string.

 

 

Что бы легче было запомнить, в данный момент:

-value - присуще для не ссылочных значений, т.е. тех, которые не представляются списком выбора в каком-либо виде. Стандартно это НЕ категории, НЕ select_by_query и НЕ select_box

-value_string - является добавочным к value . Например для ссылочных значений (селектбокс города) нам могут быть интересны как название города, так и его ИД внутри БД. Поэтому в value - ИД, а в value_string - текстовое представление (название города).

 

В принципе value - это as is в базе данных в таблице объявлений (грубо говоря), а value_string - уже приведенное значение.

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


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

Без "посмотреть в шаблон" и "посмотреть на сайт" практически даже не знаю на что намекнуть.

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

 

С value и value_string понял. И если не ошибаюсь подводя итог, value - позволяет выводить единственное значение связки "ключ - значение", а value_string позволяет определить ключ и подобрать значение под конкретный ID объекта, или нет? Типа если это 6й объекта, то для него select_by_query = 4(key) = (string/value)300 метров до метро ...

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

П.С.

Код был полностью переписан мной и большая часть образца (http://pastebin.com/SSRc7w9P)была удалена, код был сокращён на 2/3. Не знаю на сколько это хорошо. Определил "операторы" которые служили для вывода информации в нужном виде, разместил в необходимом мне порядке, подправил CSS и вуа-ля! Всё работает как часы. Но до сих пор "терзают смутные сомнения" по поводу того кода, что я удалил. В образце было много дублированного кода который не был виден мне - как пользователю. Я так подозреваю  ВАШ код в примере был адресован даже для тех - кто хотел бы показывать определённые поля ОПРЕДЕЛЁННЫМ типам пользователей... и поэтому код троекратно был дублирован типа для НЕЗАРЕГИСТРИРОВАННЫХ - АДМИНИСТРАТОРОВ - РИЭЛТОРОВ. - может опять я не прав, пытаюсь найти рациональное зерно))

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


Ссылка на сообщение
Поделиться на других сайтах
Но до сих пор "терзают смутные сомнения" по поводу того кода, что я удалил.

 

 

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

1. Типа недвижимости (этого не видно, так как разделение шло выше этого шаблона)

2. Группы смотрящего карточку

3. Является ли владельцем этого объявления просматривающий

4. Является ли просматривающий членом некоторой определенной группы.

5. частичное деление отображения полей в зависимости от типа контракта (продажа\аренда)

 

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

 

а value_string позволяет определить ключ и подобрать значение под конкретный ID объекта

 

 

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

 

 

был какой-то дефект с блоком <ul>

 

 

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

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


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

Догадывался близко к правде, это хорошо.

В шаблоне агенси в карточку внедрен скрипт, который из сплошного ul строит два ul для двухколоночного отобрражения.

 

Да кстати, сейчас по вашим словам вспомнил, что ещё до перекройки шаблона при просмотре кода через браузер было ясно видно 2 колонки, за отсутствием необходимости в такой структуре правил CSS и сделал вывод обеих колонок друг за другом. В .tpl ещё не хотел лезть, думал не понадобится, да и наобум переписывать - себе дороже. Когда поправил .tpl и увидел дубляж, начал искать откуда ноги растут, заметил что в коде примера не было <ul> структур, решил и из своего кода их убрать. В результате удаления дубляж пропал, однако и все CSS были скинуты. Назначил свои классы, восстановил красоту и теперь всё чётко, ещё раз спасибо!)

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас