Скрыть часть текста статьи от гостей

10 Сен 2008
Опубликовано VladSavitsky

Решение

Варианты решений

Сниппет

  • Установить формат ввода статьи: РНР
  • Вставлить код (сниппет):
    <?php
    global $user;
    if (is_object($user) and $user->uid>0) {
      ?>
      Это видят только зарегистрированные пользователи
      <?php
    } else {
      ?>
      <a href="http://example.com/user">Представьтесь</a> или <a href="http://example.com/user/register">зарегистрируйтесь</a>, чтобы читать скрытый текст.
      <?php
    }
    ?>

Фильтрация специального тега в шаблоне темы

Автор: zigazou.

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

$node=node_load($nid);.
$node=node_prepare($node); //will allow you to generate the filtered content.

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

Модуль-фильтр hidden_text

Автор: olk

Фильтр hidden text - скрывает контент для анонимусов.
Формат ввода с этим фильтром будет не кешируемый, как и PHP filter.

При заключении текста между тегами [hidden=Текст] и [/hidden], он будет виден только для зарегистрированных пользователей.

Если установлен атрибут "Текст", то вместо текста будет показано заданный текст "Текст" .
Кроме того, для тега [hidden] допустима запись вида[hidden title=Текст].
пример:

[hidden title=Зарегистрируйтесь, чтобы увидеть скрытый текст]
...
Скрытый текст
...
[/hidden]

title - можно оформить в виде ссылки на страницу регистрации.

Темизация

  • "title" будет заключен в теги span с классом "hidden-text hidded"
  • "Текст" будет заключен в теги span с классом "hidden-text"

Скачать

Скачать модуль hidden_text

Модуль Hidden Content

  • Страница модуля: http://drupal.org/project/hidden_content
  • Этот модуль дает возможность смотреть части узла для определенных ролей или пользователей.
  • Есть релиз для Д5 и Д4.7
  • Porting to Drupal 6
  • Модуль добавляет новый формат ввода.

Вывод

Полезные рецепты по этой теме

Использованные материалы

Как показывать часть ноды только зарегистрированным?
http://drupal.org/node/102145
Как сделать скрытый текст?

Полезные ссылки

Комментарии

Всё работает! Спасибо!

Гость | Май 19th, 2009 в 7:06 после полудня

Вопрос по модулю hidden_text

Где прописать скрытый текст по умолчанию? Чтобы каждый раз не писать его в тег hidden?

cor | Авг 19th, 2009 в 11:32 утра

Прописать нужно в ноде по умолчанию :)
Архитектура модуля этого не предусматривает.
Если вам нужна такая функциональность - придётся дописывать модуль.

VladSavitsky | Авг 20th, 2009 в 8:28 утра

Спасибо. Разобрался сам. Действительно пришлось поправить модуль. Заодно убрал лишнюю функциональность.

cor | Авг 20th, 2009 в 10:13 утра

Код
if (is_object($user) and $user->uid>0) {

с равным успехом заменяется на
if ($user->uid) {

demimurych | Авг 20th, 2009 в 6:26 после полудня

Там так и было. Или я чего-то не догоняю?

cor | Авг 20th, 2009 в 6:38 после полудня

2 demimurych:
Замена не равнозначная, хотя и будет работать.

if (is_object($user) and $user->uid>0) {
- этот код не вывалится с ошибкой, если $user не является объектом или вообще не задан
А тот, что ниже такой проверки не имеет:
if ($user->uid) {

Если есть гарантия того, что этот объект всегда будет существовать в момент проверки, то можно её исключить.

VladSavitsky | Авг 20th, 2009 в 10:36 после полудня
 
 
 

RSS-лента новостей

Dries Buytaert по-русски
]]>Русский поиск Drupal]]>

Перенос сайта из Joomla в Drupal
Перенос сайта из WordPress в Drupal

]]> Drupal - это бесплатная система управления контентом с открытым исходным кодом ]]>