Olá pessoal.
Comecei à pouco tempo a utilizar o drupal e tenho alguns problemas e não estou a conseguir arranjar solução.
Neste momento estou a desenvolver um site em que tenho noticias públicas(utilizadores anónimos e registados) e privadas(utilizadores registados). Para isso estou a utilizar a taxonomia e o módulo Taxonomy Access Control para atribuir permissões aos roles. Até aqui funciona tudo como pretendo.
Mas eu na home quero uma view em que mostre o titulo e teaser das noticias(públicas e privadas). O que me está a acontecer é que as noticias privadas não aparecem para utilizadores anónimos, simplesmente o bloco desaparece. A ideia era aparecer as noticias e ao clicar no "Ler mais" ir para a página onde aparecia uma mensagem a dizer qq coisa tipo "conteúdo privado, necessário registo"(para utilizadores anónimos, para os registados vai para o detalhe da noticia).
Para as noticias públicas tudo funciona como quero.
Se alguém souber como resolver isto, agradecia
Sem mais...
sliderf
Comments
1) cria uma Block View para
1) cria uma Block View para os anonimos que contenha apenas as publicas, e outra para os registados, que contenha ambas. nomeia cada um com um nome diferente para poderes identificar mais facilmente.
podes definir as permissoes de acesso da View na UI das Views. uma View pode conter os dois block views.
2) adiciona os dois block views aos blocos, na homepage, como pretendido ( ), ou em mais páginas como desejares.
na block view anonima, restringe o acesso a anonymous users, e na block view registada, a authenticated users. podes fazer isso na configuração dos blocos, individualmente.
convem definires as restricoes de acesso em ambos os sitios, a config da view, e a config do block.
para fazeres o Ler mais é um pouco mais complicado. terias que criar uma Page View (com restrições de acesso) e liga-la de alguma maneira a um Block View.
Luís Pedro Algarvio
Drupal and DevOps Developer, Evangelist & Trainer
lp.algarvio.org
Já fiz isso e não funciona
Já fiz isso e não funciona como pretendo. Eu quero que todos os utilizadores(anónimos e registados) vejam a view e o seu conteúdo(teaser). Mas depois de carregar no titulo ou ler mais linka para o detalhe da noticia. Se um anónimo carregar no ler mais ou titulo de uma noticia para registados ir para uma página onde avisa que não tem permissões para ver a noticia completa. O que me está a acontecer é que um anónimo nem sequer vê a view - suponho que por a noticia completa estar com permissões para não ser vista por anónimos.
Espero ter-me explicado bem.
Mais alguma ideia?
Obrigada
Sem mais...
sliderf
O controlo do acesso ao
O controlo do acesso ao conteúdo pode fazer-se a vários níveis e com vários módulos: via panels, via views, via context, via cck field permissions e claro, nas próprias permissões do conteúdo Content access permissions, similar ao Taxonomy access permissions, mas aqui baseado no node.
Acho muito estranho o Taxonomy Access não vedar o acesso, visto estares a diferenciar os conteúdos baseado na taxonomia (termo privado e público).
Encontrei em pesquisa o Private module (http://drupal.org/project/private). Pela descrição, vem ao encotnro do teu objectivo: "If it's set, it can only be seen by the node author, or users with the 'see all private nodes' permission."
Experimenta e vê se obténs o resultado pretendido. Não te esqueças de dar notícia aqui da evolução.
Boa sorte
Se percebi bem, o problema aqui
Se percebi bem, o problema aqui é que se não dás permissões a utilizadores anónimos para ver esse tipo de conteúdo, a view não mostra qualquer campo desse conteudo a anónimos, logo como a view fica sem conteúdos não aparece.
A unica maneira que consigo imaginar para contornares isso é dares permissões para anónimos verem esse tipo de conteúdo e depois no template do tipo de conteúdo (node-contenttype.tpl.php) fazeres tu essa verificação, e ou mostras ou conteúdo ou a mensagem de acesso negado.
Para fazeres essa verificação podes usar:
<?phpglobal $user;
if (in_array('role', array_values($user->roles))) {
//utilizador do role "role" tem acesso
}
else {
//utilizador não tem acesso
}
?>
Olá pessoal. Obrigada pela
Olá pessoal.
Obrigada pela ajuda. Acabei por abdicar do taxonomy acess permissons e resolvi por dar as permissões nas views e nos cck. Com isso consegui resolver o problema dos anónimos verem um teaser e um titulo do conteúdo privado. Obrigou-me apenas de criar mais um campo (corpo da noticia) porque o que vem por defeito nos tipos de conteúdo (body) não me permite usar permissões a esse campo (pelo menos eu não sei).
Agora estou com outro problema. Como tenho uma view que me lista todas as noticias privadas(apenas para registados) e tenho no menu uma opçãp apontar para essa página, quando estou como anónimo essa opção não me aparece, apenas qd estou logado é que aparece. Penso que isso acontece por causa da view não ter permissões para ser vista por anónimos. Como posso fazer para me aparecer a opção no menu sendo registado ou não. Caso não esteja ele envia-me para o página a dizer que tenho de me registar. Eu quero que a opção do menu apareça sempre.
Sem mais...
sliderf
Olà, Podes experimentar o
Olà,
Podes experimentar o modulo viewphpfilter(http://drupal.org/project/viewsphpfilter), que pode ser usado para obter uma lista de nodes en uma view.
Com isso, "podes" fazer uma query (php+mysql) que vai a criar uma lista de nodes que ficais na taxonomy x, a view userà esta lista como um filtro.
Juntos com um modulo de access control mesmo que o node_access pode obter uma gestào por nodos o content type(geralmente ja tendes compativel com views en caso è so a query que serà mais dificil).
Com a mesma tecnica podes usar um campo extra do cck (o um taxonomy term) para aplicar um flag (rule1,rule2,etc..).
A views pode ser vista por tudas as pessoas(isso para resolver-nos o problema do menu), ma os nodes que a view lista son filtrados tambem para o viewphpfilter.
Uma otra maneira de fazer para resolver o problema do menu è usar uma embedded view dentro o template o dentro o contenudo do node(in esto caso o tipo de conteudo serà php), depois posicionas o node no menu.
<?php$view = 'test_lista';
print views_embed_view($view);
?>