¿Cómo cambiar a un usuario a un rol diferente en función del número de sus publicaciones?

7

¿Existe alguna técnica por ahí que pueda poner a un usuario en un rol específico en un rol diferente automáticamente después de hacer X número de publicaciones (temas centrales del foro o / y respuestas)?

Me gustaría implementar una funcionalidad en la que cuando los usuarios se registran por primera vez en mi sitio se les asigna un rol que tiene privilegios limitados, pero después de cierto número de publicaciones en el foro (tema nuevo o respuestas a las existentes) se les coloca en un sitio diferente. función que no requiere CAPTCHA y pueden publicar enlaces, etc. Para su información, use el núcleo Forumy el módulo de Foro avanzado .

Abeja
fuente

Respuestas:

9

Encontré un módulo de Estadísticas del usuario que se integra con las Reglas y proporciona tokens como [user: post-count] que se pueden usar para la comparación numérica. Espero que esto ayude a alguien más.

Abeja
fuente
2

El módulo de estadísticas de usuario solo tiene una versión de desarrollo para D7 (supongo que esta pregunta es sobre D7). Sin embargo, su pregunta parece ser un caso de uso perfecto para el módulo Objetivos (divulgación: soy el responsable del mantenimiento). A continuación se muestra una posible configuración para su caso específico, utilizando Objetivos .

Configurar un objetivo

Navegue a la ruta relativa admin/config/goals/managey use el enlace "Agregar un objetivo" para definir solo 1 objetivo , con una descripción (por ejemplo):

Haga X número de publicaciones (temas centrales del foro o / y respuestas) .

Configurar tareas

Para lograr el objetivo "hacer X número de publicaciones (temas centrales del foro y / y respuestas)", defina las Tareas que se completarán.

  • Publique una cierta cantidad de temas centrales del foro.
  • Publica un cierto número de respuestas.

Una forma más avanzada de usar (configurar) objetivos es configurar tareas de esta manera:

  • Es posible que algunas tareas tengan que repetirse varias veces.
  • Algunas tareas pueden requerir cierto tiempo para caducar entre 2 tareas similares (por ejemplo: si una tarea se realiza varias veces al día, solo la primera cuenta).
  • ... (hay otros ...).

Realice un seguimiento del progreso mientras realiza tareas

Para realizar un seguimiento del progreso realizado por un solo usuario para completar alguna tarea, solo tiene que escribir las reglas apropiadas, utilizando el módulo Reglas , para registrar los eventos relevantes que suceden en su sitio, que están relacionados con la finalización de las diversas tareas.

Para los objetivos / tareas descritos anteriormente como ejemplo, solo necesitaría 2 reglas (extremadamente básicas), que se activarían de la siguiente manera:

  • Después de publicar un tema central del foro.
  • Después de publicar una respuesta.

Tenga en cuenta que estas 2 reglas pueden reutilizarse para medir el progreso en múltiples objetivos (por ejemplo, si su objetivo tiene una tarea como "después de publicar 1 respuesta", y un segundo objetivo tiene una tarea como "después de publicar 10 respuestas").

Además, los desafíos anteriores son bastante sencillos (básicos) como ejemplos de desafíos. Pero puede hacer esto para prácticamente cualquier entidad para la que pueda pensar en una forma de rastrearlos a través del módulo Reglas.

Use las reglas para procesar los objetivos cumplidos

Después de que un usuario complete todas las tareas específicas de un objetivo, el objetivo se marca automáticamente como completado. Pero hay más: también puede crear reglas adicionales que se activarán (Evento de reglas) cuando un usuario complete un objetivo. Con eso, la respuesta a su pregunta es extremadamente fácil: realice una Acción de reglas para " ... cambiar al usuario a un rol diferente " ... que es exactamente de lo que se trata su pregunta, ¿no?

Mas de lo mismo

En lugar de la descripción (aburrida) del objetivo anterior, podría haber utilizado una descripción del objetivo como (por ejemplo) " Usuario participante ". Qué BTW podría ser una buena descripción del rol que se le otorgará también.

Si luego define (por ejemplo) 3 objetivos más (similares), con cada uno de ellos un conjunto apropiado de tareas para completar, podría usar la misma técnica para los objetivos (y / o roles) etiquetados de manera similar (si suenan) familiarizado con algo en Drupal.SE, eso es puramente accidental):

  • Usuario fiel.
  • Usuario establecido.
  • Usuario de confianza.
  • Moderador.

Más información

Consulte mi respuesta a " ¿Cómo implementar la gamificación en un sitio de Drupal y otorgar incentivos? " Para obtener detalles adicionales sobre el módulo Objetivos .

Nota: El uso de objetivos solo requiere tareas de administración típicas (configuración), aunque también incluye varios enlaces para el desarrollo de módulos personalizados (si lo desea).

Pierre.Vriens
fuente