Вывод юзерпика в зависимости от страницы

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

Аватар пользователя romantaran romantaran 24 марта 2007 в 17:00

Мне не нравится особенность Друпала либо выводить юзерпики везде, в том числе в персональном дневнике пользователя, либо не выводить их вообще. Первый вариант смоторится дико, когда открываешь пользовательский блог и в каждом сообщении (20 раз на странице) видишь один и тот же юзерпик. Второй вариант — это вообще не вариант.

Задача: выводить юзерпики только на заглавной странице (node), в разделе "Дневники" (blog) и в профиле пользователя (user/*).

Вариант решения:

Открываем user.module, находим function theme_user_picture и меняем:

<?php if (variable_get('user_pictures', 0)) { ?>

на:

<?php if (variable_get('user_pictures', 0) && ($_GET['q'] == 'blog' || $_GET['q'] == 'node' || strpos($_GET['q'], 'user') !== false)) { ?>

Я не программист, поэтому уверен, что есть более удачные решения. Буду рад, если кто-то подскажет свой вариант. Неплохо было бы задать массив с url нужных страниц.

Комментарии

Аватар пользователя romantaran romantaran 24 марта 2007 в 17:26

Сейчас обнаружил, что в комментах тоже юзерпики пропадают... Sad
Нужно добавить условие, отличающее коммент от ноды.

Нет, наверное вообще нужно делать по-другому...

Аватар пользователя romantaran romantaran 24 марта 2007 в 20:52

Продолжаем пляски с бубном.

В node.tpl.php заменяем <?php print $submitted ?> на <?php $_GET['userpic'] = 'n'; print $submitted ?>

В user.module меняем

<?php if (variable_get('user_pictures', 0)) { ?>

на

<?php if($_GET['userpic'] == 'n') {
if($_GET['q'] == 'blog' || $_GET['q'] == 'node' || strpos($_GET['q'], 'user') !== false) {
$showuserpic = true;
unset($_GET['userpic']);
}
else {
$showuserpic = false;
unset($_GET['userpic']);
}
}
else {
$showuserpic = true;
}
if (variable_get('user_pictures', 0) && $showuserpic == true) {
?>

Этот вариант работает, но со странностями.