2010-03-22 13 views
5

¿Cómo puedo crear un formulario que requiera que los usuarios anónimos se registren para poder verlo?Requerir que un usuario anónimo se registre para agregar contenido tipo

En este momento, he creado un tipo de contenido (Plan de envío) que es un enlace principal disponible para todos (anónimo + autenticado). He restringido los permisos de usuario de "vista" a usuarios anónimos, pero aún pueden ver la entrada de "Título" (no quiero eso).

me gustaría que para que cuando un usuario anónimo hace clic en 'Adición de un plan' enlace primario (el Plan de Presentar tipo de contenido), pasa a la página y dice:

  • "Debe registrarse para una cuenta "O
  • Los redirige a la página de registro pidiéndoles que se registren para enviar un plan.

He estado buscando un módulo o tal vez algún código para usar, pero me he quedado corto en este tema. Cualquier ayuda sería apreciada. ¡Gracias!

Respuesta

1

Si va a redirigir a los usuarios a la página de registro, consideraría utilizar algo como logintoboggan para hacer que el proceso de registro> creación de nodos sea fluido. De lo contrario, el registro es un proceso de varios pasos y me imagino que es fácil para los usuarios perder el camino de regreso al formulario Agregar un plan en el proceso.

Para la dirección "mostrar enlaces o mostrar el formulario", hay al menos dos formas de abordar eso: 1) crear una página personalizada donde "importe" el formulario add_plan (o muestre los enlaces). 2) modificar la página del nodo/agregar/planificar en sí, ya sea mediante themeing o fapi (la api de formularios).

Sin haber probado esto, probablemente se inclinan por el método de una sola.

Actualización: acaba de tener otro pensamiento: también puede agregar el formulario de plan al formulario de registro para que lo completen de una vez.No estoy seguro de cómo hacerlo en general, pero el node profile funcionaría si solo van a hacer un plan, y si no, puede ver cómo se arma.

1

Esto se puede hacer de varias maneras.

Uno, en su salida de menú, puede cambiar el enlace para enviar Plan de la siguiente manera:

<?php 
    global $user; 

    if ($user->uid == 0) { 
    print '<a href="/user/register">Add a Plan</a>'; 
    } else { 
    print '<a href="/node/add/submit-plan">Add a Plan</a>'l; 
    } 
?> 

El código anterior comprueba si el objeto de usuario tiene un UID. 0 es anónimo, por lo que se imprimirá el enlace que los envía a registrarse. De lo contrario, los llevará al formulario agregar nodo para Enviar tipo de contenido del Plan. Esto también asume que controlas tu propia salida de menú. También puede anularlo de manera similar mediante el uso de una función de tema.

Hay varias formas en que puede hacerlo, así que comience y dígame lo que piensa.

+0

Esto puede sonar estúpido, pero ¿cómo se edita el resultado del menú? Estoy en la cuenta de administrador, así que supongo que tengo control sobre eso. – Chetan

+0

Hay algunas maneras. Puedes intentar esto: http://api.drupal.org/api/function/theme_menu_item_link intenta anular eso en tu tema, y ​​adapta el código anterior para trabajar con él. Por ejemplo, en lugar de print -html, diría $ link ['href'] = '/ user/register' o $ link ['href'] = '/ node/add/submit-plan' si están registrados en. – Kevin

+0

Yo no seguiría con este método a menos que también pudiera dejar en claro cuál sería el resto del flujo de trabajo y hacerlo automáticamente al usuario. (Por ejemplo, ajustar el mensaje, hacer que su inicio de sesión después de confirmar su correo electrónico lo lleve automáticamente a la página del plan de creación, etc.) Además, es posible que un usuario anónimo no necesite registrarse, tal vez tengan que iniciar sesión. – sprugman

Cuestiones relacionadas