Как запретить гостям показ подписей и ссылки на сайт из профиля?

Автор Roman, 14 ноября 2009, 14:40:16

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Roman

Не силен в php, поэтому такой вопрос:

Требуется скрыть подписи пользователей для гостей форума (и соответственно, поисковых систем). Но при этом, отображать их для тех, кто зарегистрирован.

Аналогичное действие требуется для сайта в профиле пользователя. Доступ в профиль пользователя закрыт для гостей стандартной настройкой форума. Но в сообщениях ссылка на сайт все равно отображается, вот ее и хочется скрыть от гостей, и показывать только тем кто залогинен.

Итак, есть файл display.template.php
со строчкой

$message['member']['website']['url']

которая отвечает за вывод ссылки на сайт из профиля пользователя,

и строчкой
$message['member']['signature']
которая, отвечает за вывод подписи.

Еще есть файл Source/Profile.php
со строчкой

preparsecode($_POST['signature']);

также отвечающей за подпись.


Как именно нужно изменить эти строчки чтобы не показывать ссылки и подписи гостям?

p.s. частично подходящее решение для подписи есть здесь(там основано на карме) И здесь (ломающее ссылки в подписи), основанное на количестве постов пользователя.
Но это немного не то, т.к. требуется именно разделение показа для юзеров/гостей, а не показ или скрытие в зависимости от "показателей" пользователя, которому принадлежит подпись/ссылка в профиле.

BIOHAZARD

проверять условие
if(context['member']['is_guest'])
проверьте только, я по памяти переменную указал, может где ошибся
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman

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

В display.template.php заменил это:
if ($message['member']['website']['url'] != '')
echo '
<a href="', $message['member']['website']['url'], '" title="' .
$message['member']['website']['title'] . '" target="_blank">', ($settings['use_image_buttons'] ? '<img src="' .
$settings['images_url'] . '/www_sm.gif" alt="' . $txt[515] . '" border="0" />' : $txt[515]), '</a>';


на это:
if ($context['user']['is_logged'])
{
if ($message['member']['website']['url'] != '')
echo '
<a href="', $message['member']['website']['url'], '" title="' .
$message['member']['website']['title'] . '" target="_blank">', ($settings['use_image_buttons'] ? '<img src="' .
$settings['images_url'] . '/www_sm.gif" alt="' . $txt[515] . '" border="0" />' : $txt[515]), '</a>';
}


Т.е. добавлено новое условие if ($context['user']['is_logged']), а изначальное условие (показывать ссылку, если указан сайт в профиле), заключено в кавычки {}.

Поскольку все работает, то скорее всего, все правильно)
Но на всякий случай вопрос к тем, кто знает php - корректно ли прописано условие?


p.s. для $message['member']['signature'] все то же самое. Работает.

alesander

У меня почему-то не работает...
Изначальный код был немного другой
if ($message['member']['website']['url'] != '' && !isset($context['disabled_fields']['website']))
echo '
<li><a href="', $message['member']['website']['url'], '" title="' . $message['member']['website']['title'] . '" target="_blank" class="new_win">', ($settings['use_image_buttons'] ? '<img src="' . $settings['images_url'] . '/www_sm.gif" alt="' . $message['member']['website']['title'] . '" border="0" />' : $txt['www']), '</a></li>';


Заменил на
if ($context['user']['is_logged'])
{
if ($message['member']['website']['url'] != '' && !isset($context['disabled_fields']['website']))
echo '
<li><a href="', $message['member']['website']['url'], '" title="' . $message['member']['website']['title'] . '" target="_blank" class="new_win">', ($settings['use_image_buttons'] ? '<img src="' . $settings['images_url'] . '/www_sm.gif" alt="' . $message['member']['website']['title'] . '" border="0" />' : $txt['www']), '</a></li>';
}


Что не так?

alesander

Разобрался сам )
Оказалось тотал коммандер во время заливки файла переименовывал Display.template.php в display.template.php. В итоге файл не перезаливался, создавался еще один.

Метод оч.клевый!! Намного проще, чем редирект, всякие плагины и тп...
Спасибо автору!!