Descubrí que hay veces que tengo un nodo que simplemente contiene contenido que se mostrará en otro lugar, pero que no debería verse directamente. Es decir, nadie debería ir al nodo / 1234, pero el contenido del nodo 1234 debería mostrarse en otro lugar. Por ejemplo, creo una página acerca de contenido con pestañas usando vistas. Así que hay páginas "Acerca de mí", "Acerca de nosotros" y "Acerca de ellos". Todos estos se muestran en una sola página con pestañas usando Vistas. Por lo tanto, no quiero que las personas accedan directamente al nodo "Acerca de nosotros" porque no verían las pestañas de las otras páginas. Al mismo tiempo, no quiero que Google proporcione a las personas un enlace directo a este nodo, quiero limitar el acceso para que los usuarios solo puedan acceder a él a través de la Vista (es decir, la pestaña).
Por lo tanto, necesito restringir el acceso al nodo, eliminarlo de los resultados de búsqueda de Drupal y asegurarme de que Google no lo detecte. ¿Alguna sugerencia?
Respuestas:
Esto me parece un buen caso de uso para el módulo Paneles porque puede crear paneles que anularán las páginas de nodo, y puede establecer el contexto para el panel de una manera que garantice a los usuarios ver la página que desea que vean, así como acceda a las reglas de las páginas del panel si las necesita. Para más detalles, vea esta publicación sobre do
fuente
El módulo Rabbit Hole proporciona esta característica.
fuente
Una opción puede ser nunca publicar el nodo pero hacer que la página del consumidor ignore su estado de publicación. Por lo tanto, en su ejemplo, su vista "Acerca de" puede ignorar el estado de publicación de sus nodos "Acerca de xxx". Como los nodos no se publican, los usuarios no autorizados no pueden acceder a ellos y el motor de búsqueda no debe indexarlos.
Otra solución es usar una
hook_nodeapi('view')
/hook_node_view()
implementación para emitir unadrupal_goto()
odrupal_access_denied()
cuando la página del nodo es visitada por un usuario no autorizado. Tenga en cuenta quehook_nodeapi()
/hook_node_view()
se utilizan en muchos casos y no solo al ver una página de nodo.hook_menu_alter()
también se puede usar para alterar la devolución de llamada de acceso de las páginas de nodos para negar el acceso a los nodos ocultos .Probablemente lo mejor sea no basar el filtrado en una ID de nodo codificada, sino usar un campo personalizado en el nodo (usando CCK / Field API o una tabla personalizada) o una lista de nodos ocultos almacenados en una variable .
fuente
Para Drupal 7, el Rabbit Hole ofrece esta función.
Cómo :
Habilite el submódulo de nodos Rabbit Hole Luego obtendremos la sección de configuración asociada con cada formulario en Drupal CODE
fuente
Resuelto Primero probé la respuesta de Pierre Buyle, pero si anula la publicación de un nodo, no se puede acceder correctamente y esos nodos se vuelven inútiles. En mi caso, tengo nodos primarios y secundarios, solo los nodos secundarios (para fines administrativos) son los que deben ocultarse y NO ser indexados por los rastreadores. Lo que hice con el administrador de páginas hizo una redirección de URL (ocultando estos nodos a todos los usuarios excepto al administrador) con una respuesta http de acuerdo con este tutorial de http://www.wunderkraut.com/ 1 y los nodos no indexados de los rastreadores se manejan por el módulo Node no-index . Esto funcionará incluso si no tiene una relación de nodo padre-hijo. Enlace al tutorial:
fuente
En Drupal 7, también debería ser posible usar hook_node_access () , este es un enlace normal en D7 que puede ser implementado por todos los módulos para todos los tipos de nodos. Entonces puede denegar el acceso si el usuario está intentando ver el nodo en su propio nodo / nid.
Probablemente también necesite implementar hook_query_node_access_alter () y agregar una marca allí para ocultar el nodo en los resultados de búsqueda. Esto incluso podría ser suficiente por sí solo y no necesita hook_node_access (). E incluso podría funcionar en D6 porque también puede modificar la consulta allí, pero es mucho más fácil en D7 debido al generador de consultas.
fuente
Simplemente configure esos nodos como 'no publicados', luego, en la vista, agregue el filtro 'nodo publicado: no'.
Como seo note, es una buena práctica crear un tipo de contenido personalizado para esos nodos 'fantasmas', y decirle a Pathauto que les dé URL específicas (yo uso
/dev/null/[title-raw]
;): incluso si el nodo no está publicado, tendrá su propio alias de URL, así que en su ejemplo, si crea primero el nodo fantasma 'sobre nosotros', y luego la página de vista 'sobre nosotros', la url del segundo seráexample.com/about-us-0
becoseexample.com/about-us
se ha tomado del fantasma (sin embargo, puede establecer las rutas manualmente)fuente
Puede usar cualquier tipo de sistema de acceso a nodos y usar vistas3. Allí no puede deshabilitar la reescritura de sql en la configuración de la consulta, por lo que puede deshabilitar el sistema de acceso a nodos en esta vista.
fuente
Puede hacerlo utilizando los módulos de reglas.
+ Crear nueva regla con el evento "Se ve contenido".
+ Agregue un par de condiciones, por ejemplo: el usuario tiene roles: anónimo, la ruta tiene un alias de URL: nodo / xyz (este es el nodo que desea limitar para el usuario anónimo). Recuerde agregar la condición "y" o "o" si es necesario.
+ Crear acción para redirigir a otra página o hacer otra cosa. Este es el código de muestra que exporté para ti
fuente
Creo que la forma más fácil de lograr lo que quiere es usar el Administrador de páginas (Ctools), es realmente simple de usar, todo lo que tiene que hacer es especificar qué nodo redirigir a dónde (en este caso, de un nodo a otro)
fuente
El módulo de acceso al contenido satisfará perfectamente sus requisitos.
También tiene una buena documentación para ayudarlo a comenzar.
fuente
Si los nodos de "contenido" se incluye la necesidad de permanecer inaccesible, y luego considerar el bloqueo / nodo / * en el servidor web "ubicación = / nodo / *" nivel . Denegar el acceso predeterminado a todos / nodos. De forma predeterminada, permite el acceso a los nodos que recibieron una ruta de ruta automática como / páginas.
(La contraseña básica .htaccess para subdirectorios también es una forma decente de bloquear la indexación de búsqueda accidental por parte de rastreadores externos).
Nunca puede garantizar que un nodo no sea accesible a través de un módulo contribuido que se instalará en el futuro, o uno que aún no comprende completamente. (Resultados de búsqueda, listados, vistas predeterminadas, descripción general de la categoría de taxonomía ...)
Para eso están los nodos.
¿Es la privacidad de su "contenido incluido" tan importante para usted? Si es así, entonces ...
Todo lo que tenga una URL eventualmente será afectado por Google.
Porque los motores de búsqueda no dependen solo de las arañas de enlace. También evalúan los comentarios del navegador, etc. Ningún módulo robot.txt o pathauto, globalredirect, rabbithole lo ayudará a dormir en paz. Si se puede acceder al nodo, se indexará. Tal vez por su propio navegador / complementos.
Reconsidere si "el contenido que debe incluirse" realmente debería ser un nodo , si nadie debería acceder a él como una página .
Si su "contenido incluido" se almacenaría dentro de un mini-panel / bloque / fragmento / bean / ..., entonces tiene un riesgo mucho menor de que aparezca en la lista o aparezca como una página con una URL automática que Aún no lo sé . (páginas de resumen de taxonomía, búsqueda, vistas ...)
fuente
El módulo Restrict Node Page View hace exactamente lo que desea.
De la descripción del módulo:
Con este módulo puede restringir el acceso al
full
modo de vista del nodo , por lo que no puede acceder al nodo activadonode/XXX
.fuente