Descobri que às vezes tenho um nó que simplesmente contém conteúdo que será exibido em outro lugar, mas não deve ser visualizado diretamente. Ou seja, ninguém nunca deve ir para o nó / 1234, mas o conteúdo no nó 1234 deve ser exibido em outro lugar. Por exemplo, eu crio uma página sobre com conteúdo com guias usando visualizações. Portanto, existem páginas "Sobre mim", "Sobre nós" e "Sobre eles". Tudo isso é exibido em uma única página com guias usando Exibições. Portanto, não quero que as pessoas acessem diretamente o nó "Sobre nós", porque não verão as guias das outras páginas. Ao mesmo tempo, não quero que o Google forneça às pessoas um link direto para esse nó, quero limitar o acesso para que os usuários possam acessá-lo apenas através da exibição (por exemplo, a guia).
Portanto, preciso restringir o acesso ao nó, removê-lo dos resultados da pesquisa do Drupal e garantir que o Google não o atenda. Alguma sugestão?
Respostas:
Isso me parece um bom caso de uso para o módulo Painéis, porque você pode criar painéis que substituirão as páginas dos nós e definir o contexto do painel de forma a garantir que os usuários vejam a página que deseja que eles vejam, bem como regras de acesso para as páginas do painel, se você precisar delas. Para mais detalhes, consulte esta postagem em do
fonte
O módulo Rabbit Hole fornece esse recurso.
fonte
Uma opção pode ser nunca publicar o nó, mas fazer com que a página do consumidor ignore seu status de publicação. Portanto, no seu exemplo, a visualização "Sobre" pode ignorar o status de publicação dos nós "Sobre xxx". Como os nós não são publicados, o usuário não autorizado não pode acessá-los e não deve ser indexado pelo mecanismo de pesquisa.
Outra solução é usar uma
hook_nodeapi('view')
/hook_node_view()
implementação para emitir umadrupal_goto()
oudrupal_access_denied()
quando a página do nó for visitada por um usuário não autorizado. Esteja ciente de quehook_nodeapi()
/hook_node_view()
são usados em muitos casos e não apenas ao visualizar uma página de nó.hook_menu_alter()
também pode ser usado para alterar o retorno de chamada de acesso das páginas do nó para negar o acesso aos nós ocultos .Provavelmente, o melhor é não basear a filtragem no ID do nó codificado, mas usar um campo personalizado no nó (usando a API CCK / Field ou uma tabela personalizada) ou uma lista de nós ocultos armazenados em uma variável .
fonte
Para o Drupal 7, a toca do coelho fornece esse recurso.
Como :
Ativar o submódulo de nós Rabbit Hole Então obteremos a seção de configuração associada a todos os formulários no Drupal CODE
fonte
Resolvido. Primeiro, tentei a resposta de Pierre Buyle, mas se você cancelar a publicação de um nó, ele não poderá ser acessado adequadamente e esses nós se tornarão inúteis. No meu caso, eu tenho nós pais e filhos, apenas os nós filhos (para fins de administração) são os que devem ser ocultados e NÃO ser indexados pelos rastreadores. O que fiz com o gerenciador de páginas fez um redirecionamento de URL (ocultando esses nós para todos os usuários, exceto o administrador) com uma resposta http de acordo com este tutorial de http://www.wunderkraut.com/ 1 e os nós sem índice dos rastreadores são manipulados à mão pelo módulo no-index do Node . Isso funcionará mesmo se você não tiver uma relação de nó pareto-filho. Link para o tutorial:
fonte
No Drupal 7, também deve ser possível usar hook_node_access () , este é um gancho normal no D7 que pode ser implementado por todos os módulos para todos os tipos de nós. Em seguida, você pode negar o acesso se o usuário estiver tentando visualizar o nó em seu próprio nó / nid.
Você provavelmente também precisará implementar hook_query_node_access_alter () e adicionar uma verificação lá para ocultar o nó nos resultados da pesquisa. Isso pode até ser suficiente por si só e você não precisa de hook_node_access (). E pode até funcionar no D6, porque você também pode alterar a consulta, mas é muito mais fácil no D7, devido ao construtor de consultas.
fonte
Simplesmente defina esses nós como 'não publicados' e, na visualização, adicione o filtro 'nó publicado: não'.
Como seo, é uma boa prática criar um tipo de conteúdo personalizado para esses nós 'fantasmas' e dizer ao pathauto para fornecer URLs específicos (eu uso
/dev/null/[title-raw]
;): mesmo que o nó não seja publicado, ele terá seu próprio alias de URL, portanto, no seu exemplo, se você criar primeiro o nó fantasma 'sobre nós' e, em seguida, a página de exibição 'sobre nós', o URL do segundo seráexample.com/about-us-0
porque o URL fantasmaexample.com/about-us
foi retirado do nó fantasma (no entanto, você pode definir os caminhos manualmente)fonte
Você pode usar qualquer tipo de sistema de acesso ao nó e usar views3. Lá, você não pode desativar a reescrita do sql nas configurações da consulta e, portanto, pode desativar o sistema de acesso ao nó nesta exibição.
fonte
Você pode fazer isso usando os módulos de regras.
+ Crie uma nova regra com o evento "O conteúdo é visualizado".
+ Adicione algumas condições, por exemplo: O usuário tem papéis: anônimo, o caminho possui o alias da URL: node / xyz (este é o nó que você deseja limitar para o usuário anônimo). Lembre-se de adicionar as condições "e" ou "ou", se necessário.
+ Crie uma ação para redirecionar para outra página ou faça outra coisa. Este é o código de amostra que eu exportei para você
fonte
Eu acho que a maneira mais fácil de realizar o que você deseja é usar o Gerenciador de páginas (Ctools), é realmente simples de usar, tudo o que você precisa fazer é especificar qual nó redirecionar para onde (neste caso, de um nó para outro)
fonte
O módulo Content Access atenderá perfeitamente às suas necessidades.
Ele também possui uma boa documentação para ajudá-lo a começar.
fonte
Se os nós de "conteúdo incluído" precisa ficar inacessível, então considerar o bloqueio * no / node / webserver "location = / node / *" nível . O padrão nega acesso a todos / nós. O padrão permite o acesso aos nós que receberam um caminho auto-caminho como / páginas.
(A senha .htaccess básica para subdiretórios é uma maneira decente de bloquear a indexação acidental de pesquisa por rastreadores externos também.)
Você nunca pode garantir que um nó não ficará acessível por meio de um módulo contribuído que será instalado no futuro ou de um que você ainda não entenda completamente. (Resultados da pesquisa, listagens, visualizações padrão, visão geral da categoria de taxonomia ...)
É para isso que servem os nós.
A privacidade do seu "conteúdo incluído" é importante para você? Se sim, então ...
Tudo o que tiver um URL será atingido pelo Google.
Porque os mecanismos de pesquisa não contam apenas com aranhas de link. Eles também avaliam o feedback do navegador etc. Nenhum robô.txt, ou módulo pathauto, globalredirect, rabbithole ajudará você a dormir em paz. Se o nó puder ser acessado, ele será indexado. Talvez pelo seu próprio navegador / addons.
Reconsidere se "o conteúdo a ser incluído" deve realmente ser um nó , se ninguém deve acessá-lo como uma página ?
Se o seu "conteúdo incluído" for armazenado dentro de um minipainel / bloco / snippet / bean / ..., você corre um risco muito menor de ser listado ou de aparecer como uma página com um URL automático ainda não conhece . (páginas de visão geral da taxonomia, pesquisa, visualizações ...)
fonte
O módulo Restringir exibição de página de nó faz exatamente o que você deseja.
Na descrição do módulo:
Com este módulo, você pode restringir o acesso ao
full
modo de visualização do nó , para que não possa acessar o nónode/XXX
.fonte