Como exibir um sinalizador para usuários anônimos?

8

Estou usando o módulo Sinalizador , mas tenho um problema ao exibir um sinalizador para usuários anônimos.

Eu tenho 2 sinalizadores chamados "make feature" e "add to Favorites". Também quero exibir esse sinalizador para usuários anônimos. Atualmente, ele é exibido apenas para os usuários que estão conectados (usuário autenticado).

Quero que esses sinalizadores sejam exibidos para todos os usuários (logados ou não). Mas quando um usuário anônimo clica no sinalizador, esse usuário deve ser redirecionado para a página de login. Após o login, o usuário deve poder definir o sinalizador.

Isso é possível?

Pranav Gandhi
fonte
O que é uma bandeira no seu contexto? Uma entrada de menu?
BetaRide
@BetaRide: Eu acho que OP está falando sobre bandeiras de Bandeira módulo
AjitS
Sim, eu estou usando o módulo flag.
Pranav Gandhi

Respostas:

10

Você pode fazer isso no seu 'node.tpl.php' da seguinte forma: se o usuário estiver logado, exibir o sinalizador normalmente e se não estiver logado, redirecione o usuário para a página de logon com o destinationparâmetro

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']);
}
Mohammad Ali Akbari
fonte
Thanx está funcionando.
Pranav Gandhi
4

Para exibir um sinalizador para usuários anônimos , consulte o que está escrito na documentação da comunidade do módulo Sinalizador , ou seja:

Sinalização para usuários anônimos (mesmo com o cache da página ativado). Requer API de sessão .

Algo semelhante no README.txt :

Instalação opcional

1) A capacidade de usuários anônimos sinalizarem o conteúdo é fornecida pelo módulo Session API, disponível em http://drupal.org/project/session_api .

Esteja ciente também de que a API da sessão também não é mencionada como uma dependência no módulo Sinalizador .

Pierre.Vriens
fonte