Hi all,

Of course, I am new to Drupal. I first heard of it less than 7 days ago. Within that time, I have installed, played around with, read 75% of a decent Drupal book for beginners, and gone over the Handbook several times. I still struggle to find the information that I'm after....

I want to build a site with the following functionality:
Allow user's to register a profile, whereby information that they supply at registration will be stored somewhere, so that future searches can be made, and the profile can be returned
Allow visitors to carry out a "double" search (is this known as a guided search?), i.e - They can chose a location from one drop down box, chose a subject area from another drop down box, and that combined search will return all of the user profiles that are in THAT area, with THAT subject area (defined when they registered).
A visitor will be able to contact a member (a user with a profile), whereby secure contact is made via the site.
The member then receives a message into "their" profile, and also via email, whereby the sender is MYSITE
The visitor can receive an email from MYSITE, whereby a password is supplied, and is required in order to access the given link in the email
The visitor can pay the member via MYSITE, through some form of payment system.

This is the basic functionality of the site. Please can anyone tell me if Drupal is for me? My first stumbling block has been right at the start - the search functionality and the registration process.

If this is at all possible, can anyone describe the best learning procedure for Drupal? This is something that I have searched for but with no luck. For example,
First master THIS. Build a tiny website using THIS functionality
Then learn THIS. Add THIS to your site
Once these have been mastered, learn THIS

I like to think that if there was a clear learning path, then the answers to my own questions will be solved.

In short, please can someone review each item of functionality, and tell me if it is/isn't possible with Drupal, what modules will be need for that functionality, and what bespoke programming will be needed.

Also, if someone could suggest a learning path, it would be invaluable for many beginners.

Many thanks in advance

Comments

WorldFallz’s picture

The registration and profile are built right into drupal with the core profile module. If you need any field types beyond the what the core profile module provides, then you'll want to use the content_profile module which opens up profiles to the full functionality of cck. For the custom search, you can use views it's 'exposed filters' feature (see views advanced help for more info). For private messaging there's the privatemsg module.

As for the 'best' way to learn drupal, it's pretty much an individual thing-- there isn't one right answer. For me, and i'm not a professional developer just part time website builder and code jockey, it was by doing-- setting up a dev site, figuring out what I wanted to do, and trying to do it. I purchased exactly 3 books-- pro drupal development, drupal javascript and jquery, and a combined reference book on php and mysql. But most of the info I needed I found right here on drupal.org (and search is way better now than when I started) and with google.

aleves’s picture

Thanks for an excellent response. I was slightly aware of a profile module, and being able to add extra fields. Do you know at all how this all ties in to a database? So that the data in "Location" field can be stored in such a way that I can use it. For example, my search box might only want to list locations that have been registered, so it will need to look "somewhere" and pull all of the data stored there. Is this making sense? And is this all automated behind the scenes?

Thanks for informing me about the privatemsg module, sounds like just what I need.

As for the learning process, I agree with you, I like to learn by doing, although it is very easy to install Drupal, and think "Great! What now?", so I was wondering if there was a general path. For instance, in programming, it tends to be
Variables
Arrays
Strings
Functions
Pointers
Classes
OO Design

etc

But again, thanks for your speedy response

WorldFallz’s picture

The single best advice I can give you is to abandon your preconceived knowledge of interacting with code and datases-- at least temporarily. A large part of the famous drupal learning curve is not because it's difficult, but because it's very different than what most site builders and developers are used to. Stop thinking in terms of saving and retrieving info from the db. As a CMS, just about everything you do with drupal is stored in the db in one place or another. Both core profile and content_profile data is stored in the db. imo the best way to interact with that data is with the views module (though some still disagree). In any case, you'll want to use views until you get more familiar with drupal-- then you can move on to writing your own code (and views shows you the queries it creates so it's a good way to learn also).

aleves’s picture

OK now that begins to make sense. I shall just accept that all data is stored somewhere. I shalln't be concerned with a database field name, or relationships between databases. That is great advice. OK, I will continue to play around with some basic concepts, and then begin to look at Views (and I here Taxonomy is related too).

As a side point, you mentioned not to think about writing my own code, which is completely fine by me, but it suddenly dawned on me yesterday that adding a simple button on the landing page would require writing the javascript on the text box when creating a new page? I [naively] assumed that this would be a simple module, or some form of drag and drop functionality, whereby you tell it where to link to, but there doesn't seem to be anything available. Is there a quick and dirty process for this? Perhaps a way of configuring the text box section to include this functionality?

I appreciate your time, I will not keep you much longer

WorldFallz’s picture

What is it the button is going to do?

aleves’s picture

The button is just going to link to another web page on the site. If you can imagine a button on the landing page that says "Register Now". Of course, this could be a primary link, but for other purposes, I would like buttons on the main content of the page.

Has this clarified things? Do you know of a simple mechanism for this?

Many thanks

WorldFallz’s picture

That's an easy one-- Just add it with a plain old anchor tag and style it to look like a button.

aleves’s picture

I come from a C++ background, not html/javascript, so unfortunately a "plain old anchor tab" isn't so plain to me : ) but I assume you are suggesting that my first instinct was on the correct lines - add a segment of code into the html editor when creating the page...

WorldFallz’s picture

Sorry about that-- I meant http://www.w3schools.com/tags/tag_a.asp. A simple html link can be styled to look like a:

Button

aleves’s picture

Going back to my initial question, you mentioned that I can use the core profile module to create user profiles. Having delved a little deeper, it seems that this focuses on the assumption that user's have already registered at the site? The reason I ask is that I notice that there is a User module, which seems to create Users (ie members), and also a signup module, which seems to handle the registration process, right through to email confirmation. As is becoming the case with Drupal, it seems there are so many options that a beginner can begin to think that they need all of them!

As you have probably guessed, I am hoping for a page that allows user's to sign up. They fill in their name, password, location etc. After signing up, they can now do certain things. I assume that this means that each sign up, needs to be assigned a role. This leads me to thinking that I need the role module, and it all gets a bit cloudy from there!

I imagine the process is somewhere along the lines of:
create a role
create a profile/signup content?
assign the profile content to the role

Are you able to simplify the process for me, and state the 3 or 4 modules that would be required, as I said, there is too much choice : )

Your help is extremely appreciated

aleves’s picture

After giving it some thought through the night, I have come up with a possible chain of required actions to allow user "sign up":

Create a content type called member_type
I can categorize the member_type by creating vocabulary via taxonomy?
Create a profile called member_profile (profile module)
Create a role called member_role
Edit my member_type, such that
It is assigned to member_profile ("Use this content type as a content profile")??
Enable "Use on Registration"??
Auto assign any instance of member_type that is created, to member_role (Autoassign module), so now, each member_type has the access defined in member_role

Am I right in saying then, that each instance of member_type is created on the fly, by visitors to the website?

OK, so where do user names and passwords fit into to all of this,

Many thanks

WorldFallz’s picture

The depends on whether you're using core profiles or content_profiles and how many types of users you will have. Which modules are you using and how many roles will there be?

aleves’s picture

Hi,

I was intending to use the content_profile as it seems more versatile than the core one. At the moment, I only intend on being able to register as one type of user, although there is a distinct chance that it will require two. I shall try to simplify my proposed solution:

create a "member" content type
create a "member" role
in admin/user/autoassignrole, enable "member" and set path to be user/registration/member (unsure)
edit my "member" content and check "Use on Registration" and "Use on Auto Assign Role Paths", enter the path for the content type (unsure)

I'm still not sure how this all ties into a user name and password, or how to actually reach the registration page (user/registration?)

Cheers,

Alex

WorldFallz’s picture

OK, if using content_profile, you are provided with a content type named "profile". You can use or rename that one as you like. To get the profile integrated with the registration process you need to also enable the content profile registration module (part of the content profile package). See http://drupal.org/node/170023#comment-3300274 for more details on setting up autoassignrole.

Have you setup a site with the required modules yet? I find that poking around module config pages makes a lot more sense than trying to abstractly follow thread instructions.

aleves’s picture

A big thank you WorldFallz, I have managed to create some sort of registration form, and I'm beginning to see how it all pieces together. The penny didn't drop, until I logged out, and actually saw my "Register Now" button, and it took me to the form. I was hoping that registered user's would also have this link, so I'll have to play around and see what is happening there.

I think your advice at looking at the sources files for the modules is good, that way I can really see what is happening, and what could be "hacked". (I'm wondering if I can hack the default "User name" field on the registration form, replacing it with a different title)

No doubt I will have more queries throughout this project, but for the time being, very many thanks

ps I hadn't noticed your reply about the button, I shall check out the button link ; )

pps OK, you've got me, how do I omit a subject from these damn forum replies!!?

Alex