Как спрятать ссылки от анонимов

Главные вкладки

Аватар пользователя Venice@drupal.org Venice@drupal.org 18 августа 2009 в 2:58

Имеется магазин электронных товаров. Часть товаров - бесплатные. И ссылка для их скачивания вставлена непосредственно в ноду товара.
Нужно сделать, чтобы эта ссылка была видна только зарегистрированным пользователям. В принципе, проблема решаема вставкой в ноду примерно
такого кода PHP:
<?php if(user_is_logged_in()) {
echo "
Ссылка на скачивание файла";
}
else {
echo "
Ссылка для скачивания станет доступна только после входа в систему. Если вы еще не зарегистрировались на нашем сайте, можете сделать это вот здесь.";
} ?>

Но это затратно по времени и неудобно. Можно ли сделать это как-то одноразово, и чтобы при этом передавался номер ноды конкретного товара?
Можно ли на класс css этой ссылки навесить исполнение php кода?

Комментарии

Аватар пользователя HIgor1968 HIgor1968 18 августа 2009 в 6:56

Собственно сам же и ответил на свой вопрос. Этот код в шаблон конкретного типа ноды, можно дополнительно что-нибудь проверять, например, значение поля указывающего что товар платный.

Аватар пользователя VladSavitsky VladSavitsky 18 августа 2009 в 9:31

Вам нужно сделать модуль, который будет работать как формат ввода (фильтр) и при показе ноды искать в тексте специально оформленную ссылку (класс css) и заменять ещё чем-то другим.
За основу можно взять, например, модуль http://drupal.org/project/noindex_external_links
Там есть сам фильтр и поиск ссылок.
Ещё более простой модуль (только фильтр и без доп. наворотов): http://drupal.org/project/ext_link_page