Мне не нравится особенность Друпала либо выводить юзерпики везде, в том числе в персональном дневнике пользователя, либо не выводить их вообще. Первый вариант смоторится дико, когда открываешь пользовательский блог и в каждом сообщении (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 нужных страниц.
Комментарии
Сейчас обнаружил, что в комментах тоже юзерпики пропадают...
Нужно добавить условие, отличающее коммент от ноды.
Нет, наверное вообще нужно делать по-другому...
Продолжаем пляски с бубном.
В 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) {
?>
Этот вариант работает, но со странностями.