Как отобразить флаг анонимным пользователям?

8

Я использую модуль Флаг , но у меня проблема с отображением флага анонимным пользователям.

У меня есть 2 флага под названием «сделать функцию» и «добавить в избранное». Я хочу показать этот флаг и анонимным пользователям. В настоящее время он отображается только для пользователей, которые вошли в систему (аутентифицированный пользователь).

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

Это возможно?

Пранав Ганди
источник
Какой флаг в вашем контексте? Пункт меню?
BetaRide
@BetaRide: Я думаю, что OP говорит о флагах с помощью модуля Flag
AjitS
да, я использую модуль флага.
Пранав Ганди

Ответы:

10

Вы можете сделать это в вашем 'node.tpl.php', как показано ниже, если пользователь вошел в систему как флаг отображения как обычно, и если он не вошел в систему, перенаправьте пользователя на страницу регистрации с destinationпараметром

global $user;
if(!$user->uid) {
    // $flag: bookmark or make_feature, $action: flag, $content_id: $nid.....
    $flag_link = flag_flag_link($flag, $action, $content_id);
    $flag_url = $flag_link['href'];
    if(isset($flag_link['query']['token'])) {
        $flag_url .= '?'.$flag_link['query']['token'];
    }
    print l(t('bookmark'), 'user/login' , array('query'=> array('destination' => $flag_url)));
} else {
    print render($content['links']['flag']);
}
Мохаммед Али Акбари
источник
Спасибо, что работает.
Пранав Ганди
4

Чтобы отобразить флаг для анонимных пользователей , обратитесь к тому, что написано в документации сообщества модуля Flag , то есть:

Пометка для анонимных пользователей (даже с включенным кэшированием страниц). Требуется Session API .

Нечто подобное из README.txt :

Дополнительная установка

1) Возможность для анонимных пользователей отмечать контент обеспечивается модулем API сеанса, доступным по адресу http://drupal.org/project/session_api .

Также следует помнить, что Session API также не упоминается как зависимость в модуле Flag .

Pierre.Vriens
источник