Решение
Варианты решений
- Сниппет
- Использовать модуль Contemplate (http://drupal.org/project/contemplate)
- Фильтрация специального тега в шаблоне темы
- Модуль-фильтр hidden_text
- Модуль Hidden Content (http://drupal.org/project/hidden_content)
Сниппет
- Установить формат ввода статьи: РНР
- Вставлить код (сниппет):
<?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.
$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]
...
Скрытый текст
...
[/hidden]
title - можно оформить в виде ссылки на страницу регистрации.
Темизация
- "title" будет заключен в теги span с классом "hidden-text hidded"
- "Текст" будет заключен в теги span с классом "hidden-text"
Скачать
Модуль Hidden Content
- Страница модуля: http://drupal.org/project/hidden_content
- Этот модуль дает возможность смотреть части узла для определенных ролей или пользователей.
- Есть релиз для Д5 и Д4.7
- Porting to Drupal 6
- Модуль добавляет новый формат ввода.
Вывод
Полезные рецепты по этой теме
Использованные материалы
Как показывать часть ноды только зарегистрированным?
http://drupal.org/node/102145
Как сделать скрытый текст?
Полезные ссылки
Bookmark/Search this post with











Комментарии
Всё работает! Спасибо!
Вопрос по модулю hidden_text
Где прописать скрытый текст по умолчанию? Чтобы каждый раз не писать его в тег hidden?
Прописать нужно в ноде по умолчанию :)
Архитектура модуля этого не предусматривает.
Если вам нужна такая функциональность - придётся дописывать модуль.
Спасибо. Разобрался сам. Действительно пришлось поправить модуль. Заодно убрал лишнюю функциональность.
Код
if (is_object($user) and $user->uid>0) {
с равным успехом заменяется на
if ($user->uid) {
Там так и было. Или я чего-то не догоняю?
2 demimurych:
Замена не равнозначная, хотя и будет работать.
if (is_object($user) and $user->uid>0) {
- этот код не вывалится с ошибкой, если $user не является объектом или вообще не задан
А тот, что ниже такой проверки не имеет:
if ($user->uid) {
Если есть гарантия того, что этот объект всегда будет существовать в момент проверки, то можно её исключить.