Как в Drupal 7 сделать блок видимым на странице просмотра пользователя, но невидимым на странице редактирования пользователя?

В Drupal 7 я добавил блок в область содержимого страницы пользователя. Я сделал это, указав

user/*

в Настройках видимости -> Страницы -> Показать блок на определенных страницах -> Настройка только перечисленных страниц.

Однако, поскольку подстановочный знак принимает что угодно, теперь блок отображается на странице редактирования пользователя.

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

user/%integer

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

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


person Will    schedule 14.04.2012    source источник
comment
Я не понял, как удалить блоки программно из представления редактирования пользователя, но модуль Context позволяет мне добавлять блок на каждую страницу профиля пользователя. Мне также пришлось удалить исходные настройки Только перечисленные страницы для этого блока, чтобы эта работа работала. Я все еще хочу знать, какой хук вызвать, чтобы удалить блок Views, прежде чем он будет отображаться на странице редактирования пользователя.   -  person Will    schedule 15.04.2012


Ответы (2)


Вы можете попробовать включить модуль фильтра PHP, чтобы вы могли ввести php на странице настроек видимости блока. Там вы можете проверить аргумент, например

<?php 
if(arg(0) == 'user' && arg(2) != 'edit' )
return true;
else 
return false 
?> 
person niksmac    schedule 16.04.2012

В наши дни есть другая доступная альтернатива... которая не требует включения фильтра PHP (которого вы должны стараться избегать, когда это возможно)... Просто используйте модуль Правила блокируют видимость. Вот цитата со страницы проекта:

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

Общая идея заключается в том, что если вы можете сделать это с помощью правил, вы можете использовать их для управления видимостью блоков, поэтому возможности безграничны.

Нужно показывать блок только для пользователей, зарегистрированных более месяца назад?

Возможно, у вас есть блок, который нужно показывать только с 8:00 до 17:00 по будням?

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

Все это можно сделать с помощью видимости блока правил.

При этом, а также в соответствии с если вы можете сделать это с помощью правил, вы можете использовать его для управления видимостью блока выше, вы сократили свой вопрос до создания Правила перехватывают ситуацию, когда кто-то использует такой URL, как /user/*/edit (замените * здесь любым допустимым значением для uid). Если вы не знакомы с тем, как это сделать с помощью правил, посмотрите мой ответ на вопрос Как сделать разрешения модуля более детализированными? (и обратите внимание на регулярное выражение, включенное в образец правила, который я включил туда).

person Pierre.Vriens    schedule 08.02.2016