Рейтинг:0

Скрыть и показать пользовательский блок программно drupal 9

флаг cn

Здравствуйте, я создал модуль для отображения блока. Я хотел бы установить видимость блока видимой и скрытой на домашней странице в зависимости от условия.

как это:

редактировать:


// получаем статус из базы данных, затем проверяем условие
если ($статус = 1){
// делаем блок видимым
}еще{
// скрыть блок
}

Я искал по всему Интернету и не мог найти, как заставить его работать.

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

Поэтому я бы получил статус (видимый/скрытый) блока из базы данных, а затем сделал блок видимым.

Kevin avatar
флаг in
Почему бы не создать новый контекст видимости вместо этого?
флаг cn
привет @Kevin спасибо за ваш комментарий. Не могли бы вы дать мне больше информации об этом, на самом деле я новичок в drupal.
NicklasF avatar
флаг us
Нам нужно больше информации об условии, чтобы дать вам лучшее решение, как в Drupal, вы можете сделать это несколькими способами: в конфигурации блока, хуках и/или шаблонах веток
флаг cn
@NicklasMandrupFrederiksen Я только что обновил вопрос, проверьте его, пожалуйста
Kevin avatar
флаг in
https://www.jaypan.com/tutorial/custom-drupal-block-visibility-plugins-and-condition-plugin-api
Рейтинг:3
флаг cn

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

  защищенная функция blockAccess(AccountInterface $account) {
    $access = $this->languageManager->isMultilingual()? AccessResult::allowed() : AccessResult::forbidden();
    return $access->addCacheTags(['config:configurable_language_list']);
  }

Пример из ядра LanguageBlock::blockAccess().

флаг cn
Спасибо, это сработало

Ответить или комментировать

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