Перейти к содержанию
  • Скрываем часть статьи для незарегистрированных




    Порой возникает необходимость скрыть часть статьи/новости/какой-либо записи для незарегистрированных пользователей, например чтобы привлечь пользователя зарегистрироваться для продолжения прочтения информации, или, если статья несёт в себе нерекомендуемый контент для гостей, дабы не занесли сайт в блокировку, причин множество. 

    Дано: статьи пишутся в приложении Страницы.

    Результат показан на изображении справа. 

    censored1.png

    Принцип работы таков. Мы создаём дополнительное поле - кнопку Да/Нет. Если администратор хочет ограничить контент статьи от гостей сообщества, то при добавлении статьи на сайт он переключает это поле в положение "Да". 

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

    Создание дополнительного поля - переключателя

    lock-content.pngПереходим в админцентр > Страницы > Базы данных > Поля > Создать новое поле. Заполняем следующие поля:

    1. Заголовок - Закрыть контент
    2. Тип - Да/Нет
    3. Обязательное поле - Нет
    4. Ключ шаблона - lockcontent
    5. Показать в списке записей - Нет
    6. Показать при отображении записи -Нет

    Остальные поля оставляем как есть. Сохраняем и указываем разрешения. В нашем случае управлять полем могут только администраторы. Готово! Приступаем к редактированию шаблонов.

    Редактирование шаблонов статьи

    Переходим в админцентр > Страницы > Шаблоны > Database Templates > Display > record

    Находим следующий код:

    <section class="ipsType_richText ipsType_normal" data-controller='core.front.core.lightboxedImages'>{$record->_content|raw}</section>

    Меняем на:

    <section class="ipsType_richText ipsType_normal" data-controller='core.front.core.lightboxedImages'>
              	{{if $record->fieldValues()['field_3'] && !\IPS\Member::loggedIn()->member_id}}
              	<div class='ipsType_reset ipsType_blendLinks' data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='4 lines'>{$record->_content|raw}<br><br></div><br><br>
              		<span style="color:red">Продолжение статьи доступно только для зарегистрированных пользователей.</span><br>
    				Пожалуйста, <a href="/login" target="_blank">войдите</a> или <a href="/register" target="_blank">зарегистрируйтесь</a>.
              	{{else}}
          			{$record->_content|raw}
              	{{endif}}
          	</section>

    Здесь вы можете указать количество отображаемых строк - data-ipsTruncate-size='4 lines'. Более подробно об этой конструкции читайте здесь - https://invisionbyte.ru/docs/custom/javascript/ipsuitruncate-r12/.

    Так же необходимо указать идентификатор созданного нами поля в проверочной конструкции - $record->fieldValues()['field_3']

    На этом всё, оставляйте комментарии, делитесь своим мнением, нам будет приятно!

     

     





    Обратная связь


    Комментариев нет



    Присоединяйтесь к обсуждению

    Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
    Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

    Гость
    Добавить комментарий...

    ×   Вставлено с форматированием.   Вставить как обычный текст

      Разрешено использовать не более 75 эмодзи.

    ×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

    ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

    ×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

    Загрузка...

×
×
  • Создать...

Важная информация

Используя наш сайт вы соглашаетесь с нашей Политикой конфиденциальности