Очередная шпаргалка по Drupal, рассматриваем функции API модуля flag, для вызова их из кода программы PHP.
Вы можете найти много материалов, посвященных настройке плагина flag, работе с ним из админки, но совсем мало — описанию функций API.
Примеры кода даны для Drupal 7, версия плагина Flag 3.7, версия API — 3.
Получить флаги установленные пользователем
Ищем флаги конкретного пользователя, для конкретного объекта или группы объектов.
1 |
flag_get_user_flags($entity_type, $entity_id = NULL, $uid = NULL, $sid = NULL); |
Пример выбора флагов для конкретной публикации, установленных текущим пользователем:
1 2 |
//$NID - код публикации $flags = flag_get_user_flags('node', $NID); |
Если пользователь не авторизирован, то drupal различает их по коду сессии, т.е. разные анонимы могут выставлять свои флаги.
Вывод флага в шаблон
Так как вывод флага сопряжен с учетом разных нюансов (сменой его статуса, проверками прав и т.п.), то рендерить вручную флаги довольно тяжко. Для этой цели в API есть функция:
1 |
flag_create_link($flag_name, $entity_id, $variables = array()); |
Указывать тип сущности не требуется, т.к. флаг привязывается к конкретному типу, достаточно указать только entity_id.
1 2 |
//пример вывода флага с именем "marker" в шаблон публикации echo flag_create_link('marker', $node->nid); |
Установить/сбросить флаг
Если логика вашей программы требует установить или сбросить флаг, то воспользуйтесь функцией:
1 |
flag($action, $flag_name, $entity_id, $account = NULL, $permissions_check = FALSE); |
Параметр $action может принимать два значения — ‘flag’ или ‘unflag’. Если учетка (account) не указана, то будет использован текущий пользователь.
Устанавливаем некий флаг «marker» от лица текущего пользователя:
1 2 |
//$NID - код какой публикации flag('flag', 'marker', $NID); |
и сбрасываем этот флаг:
1 |
flag('unflag', 'marker', $NID); |