есть решение?
номер телефона предлагается вводить в специальное поле созданное с помощью конструктора форм. КТо вводит не туда, при модерации объявления исправляю это.
в com_board_item.tpl
вместо {$form.field}
это
{if $user_id}{$form.field} {else} <a href="/login">показать номер</a>
соответственно что бы посмотреть номер человеку нужно зарегистрироваться или авторизоваться. номер скрыт от индексации. в моем случае это подходит
Для второй ветки будет как то так:
<?php if (cmsUser::getInstance()->isLogged()) { ?> <span><?php $field['phone_number'] ?></span> <!-- понятно что тут должен быть ваш код --> <?php } ?>
Теперь в новом файле можно вносить изменения, они коснуться только объявлений.
Открываем файл и видим, что вывод полей осуществляется с 20 по 51-ую строку:
<?php foreach($fields as $name=>$field){ ?> <?php if (!$field['is_in_item']) { continue; } ?> <?php if ($field['is_system']) { continue; } ?> <?php if ($field['groups_read'] && !$user->isInGroups($field['groups_read'])) { continue; } ?> <?php $label_pos = 'none'; } else { $label_pos = $field['options']['label_in_item']; } ?> <div class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?>"> <?php if ($label_pos != 'none'){ ?> <div class="title_<?php echo $label_pos; ?>"><?php html($field['title']); ?>: </div> <?php } ?> <div class="value"> <?php echo $field['html']; ?> </div> </div> <?php } ?>
... <?php if ($field['name'] == 'phone') { ?> <!-- здесь 'phone' это системное имя поля с телефоном --> <?php if (cmsUser::getInstance()->isLogged()) { ?> <div class="value"> <?php echo $field['html']; ?> </div> <?php } else { ?> <a href="<?php href_to('auth', 'login') ?>">Показать номер</a> <?php } ?> <?php } else { ?> <div class="value"> <?php echo $field['html']; ?> </div> <?php } ?> ...
<div class="value" <?php if ($field['name'] == 'content'){ ?>id="boardcontent"<?php } ?>> <!-- скрыть номер телефона--> <?php if ($field['name'] == 'phone') { ?> <!-- здесь 'phone' это системное имя поля с телефоном --> <?php if (cmsUser::getInstance()->isLogged()) { ?> <div class="value"> <?php echo $field['html']; ?> </div> <?php } else { ?> <div class=""> <a href="<?php echo href_to('auth', 'register') ?>">Показать (требуется регистрация)</a> </div> <?php } ?> <?php } else { ?> <div class="value"> <?php echo $field['html']; ?> </div> <?php } ?> <!-- скрыть номер телефона--> </div>
<div class="value" <?php if ($field['name'] == 'content'){ ?>id="boardcontent"<?php } ?>> <!-- скрыть номер телефона--> <?php if ($field['name'] == 'phone') { ?> <!-- здесь 'phone' это системное имя поля с телефоном --> <?php if (cmsUser::getInstance()->isLogged()) { ?> <div class="value"> <?php echo $field['html']; ?> </div> <?php } else { ?> <div class="value"> <a href="<?php echo href_to('auth', 'register') ?>">Показать (требуется регистрация)</a> </div> <?php } ?> <!-- скрыть ссылку на сайт--> <?php } else { ?> <?php if ($field['name'] == 'site') { ?><!-- скрыть ссылку на сайт--> <?php if (cmsUser::getInstance()->isLogged()) { ?> <div class="value"> <?php echo $field['html']; ?> </div> <?php } else { ?> <div class="value"> <a href="<?php echo href_to('auth', 'register') ?>">Посетить (требуется регистрация)</a> </div> <?php } ?> <!-- ******* --> <?php } else { ?> <div class="value"> <?php echo $field['html']; ?> </div> <!-- ********* --> <?php } ?><!-- скрыть номер телефона--> <?php } ?><!-- скрыть ссылку на сайт--> <!-- ******** --> </div>
Зачем делать то, что уже сделано и отлично работает?)
InstantCMS 2.7.1