Рейтинг:0

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

флаг in

Я новичок в Drupal и начал изучать хуки. я пытаюсь использовать hook_views_query_alter чтобы показать связанный контент пользователю в соответствии с его предпочтительными тегами.

function related_content_views_query_alter (ViewExecutable $ view, QueryPluginBase $ запрос) {
  если ($view->id() == 'filtered_content') {
    $user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
    $getPrefTags = $user->get('field_user_tags')->getValue();
    если (пусто($getPrefTags)) вернуть;
    
    $prefTags = $getPrefTags[0]['target_id'];
    $nodeid = "node__field_tags.field_tags_target_id";
    $query->addWhere('',$nodeid,$prefTags,'=');
   }
}

Эта функция получает значение предпочтительных тегов пользователя из своего профиля, а затем использует добавитьГде() изменить запрос. Проблема в том, что эта функция работает нормально, если пользователь вводит один тег, но как я могу это сделать, если пользователь вводит несколько тегов. я пытался использовать запрос-> добавитьГде в цикле, чтобы увеличить значение $getPrefTags[0] но это не сработало. как я могу достичь этого.

флаг cn
Может быть так же просто, как изменить `$prefTags` на массив, а `=` на `IN`

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

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