Community & Support

Complex classifieds system, build/search for "glue" modules, or expand ed_classified?

Hi,

I am pretty new in Drupal and have a task to build classifieds site. Just getting into understanding into cck, views etc...
First I chose to try some of the frameworks like cake, codeigniter, zend and similar, but they are too much time consuming to develop even simple user anthentication so I went to Drupal.

So, my main concern is how to build the workflow, seems, that all presentation stuff will wait. With which modules I should start with? I know, it will not be easy out of the box solution, I will test soon http://drupal.org/project/ed_classified but I guess it lacks many of these features... I can join on developing some of "glue" modules for cck, views or to expand ed_classified, but I am not experienced to carry this alone, and want to be more long-sighted and rely on popular and well supported modules, like core, cck, views and and make everything as much modular as possible.

What you could recomend?

My requirements are:

MAJOR:
1. Classifieds are in categories (auto, furniture, jobs, pets, technics etc.)
2. Categories can have other sub-categories inside (auto -> vw,ford,ferrari, jobs -> temporary,permanent,part time) and even deeper, without limiting depth.
3. Classifieds have the same data fields between them (price, main text content, city, contacts etc.) AND distinctive, depending on category: if user selects, that he wants to place ad in "auto" section, then he can select "fuel type: gadoline or diesel", "transmision type: auto or manual" if user selects to place ad on "jobs" then aditional fields like "job type: permanent, temporary..." and amount of monthly (houtly) salary...
4. Classifieds can have different states of their visibility, promotion status etc... For example, visible/template/expired/archive ads, and promoted/vip/vip of vip :) ads. One state, like visibility (template, normal ad, expired) is fully controlable by user, other state - also, but only after he payed through payment gateway and so on...
5. Classifieds should have ability to change their state after some amount of time: for example, move from "normal" to "expired" state after 2 weeks, and automatically delete after 4 weeks.
6. Classifieds should trigger multiple actions after specified amount of time: for example send email to user 24hours before expiration and etc.
7. Photo upload for images - should be easy
8. Images with watermarks - found module
9. Various display types, ordering, filtering etc.. - views should help
10. Advanced serch: user should be able to search all the text AND only selected category/categories
11. Users should be able to modify their ads: edit, delete, promote etc.
12. Admins or other superior role user can do everything registered user can, also change roles of the users, change their permitions
13. Categories can have manually or automatcally edited "similar categories" lists.
14. Fully functional paid ads system, which simply can change status of ad.

OTHER REQUIREMENTS:
1. Limit user groups to some amount of ads (nodes) in period of time, for example 10 free ads in 24hours, other limits to "vip" users :)
2. SEO friendly urls - already know ;)
3. RSS generation - easy :)
4. Capcha, antispam - many modules...
5. Users and anonymous visitors can write messages about inappropriate ads
6. Ads can be commented/rated - know how.

EXAMPLE:
I am trying to build a site, which is superior to this. It is in lithuanian, but you will understand main things.
http://www.skelbiu.lt/ title page
http://www.skelbiu.lt/skelbimai/nekilnojamasis-turtas/namai/ real estate->houses section
http://www.skelbiu.lt/skelbimai/paslaugos-darbas/darbo-paieska/ services -> job offers
http://www.skelbiu.lt/skelbimai/transportas/automobiliai/ford/ cars->ford, you can see, that data fields differ from the one in real estate
http://www.skelbiu.lt/3340998.html single car classified

Does anyone have similar problems? Any live examples????
Please conatct pm me, or this thread :)

Comments

taxonomy

Taxonomy will solve most of your problems with categorization. Check out the imagefield module for attaching images to nodes (it requires CCK)

those are smaller problems :/

Yes, I alreday understood that, but the main questions are how to manage workflow or life-cycle of ad - 4,5,6 of major reqs, any suggestion?

..\/..

ed-classified.module is a pretty standard "node type" module with one extremely useful extra feature - an expiry date. You can use CCK & Views to do everything ed-classified does EXCEPT the auto-expire and notify functions - which are the "value added" bits.

Here's what I'd like to see happen:
Add a new CCK type - ActionDate - to build on the Datefield and Action modules. When you configure and ActionDate field, you specify the "action" that is to occur when this date arrives. The Action module could then be used to define actions (like e-mailing notifications, removing expired nodes, changing a node's status, etc.)

Not only would that allow you to easily create custom classified ad nodes with CCK/Views, but I think this would be extremely useful in all kinds of contexts... but would require a developer or interested party with some time and/or money ;-)

In the meantime....

interresting

yes, this would be a great idea! It could make expiring/promoting/changing status/autodelete and other similar changes. Schould I start to look at Actions source? Which is the other module? Haven't found anything named "datefield"... I can start to develop that module myself - it could be great learning experience.

..\/..

The Date module (sorry - it contains a sub-module, which is date field) is at:
http://drupal.org/project/date

The Actions module is at:
http://drupal.org/project/actions

Both modules appear to have good API's.
Actions is not compatible from 5.x to 6.x, so you'll need to carefully consider which version you'll develop for - even though I'm using 5.x for a while yet, I'd go for 6.x b/c Actions was re-developed into a core module (much better support, probably improved API) and this is not going to be an overnight project.

That said - it looks like it will be very easy to define the kinds of actions you want. Each one would be a tiny plug-in module that would probably be triggered by cron?

I can visualize most of the rough design here - one big outstanding question I'd have is how are you going to identify which nodes get the action applied to them?

  1. One possibility is to have, e.g., a specific "expiry date" field type - just a special version of a regular date field - and then attach the action to that field.
  2. Another would be to add a set of checkboxes or radio-buttons with date-based action types as a new CCK type. Users with permission will see this and be able to select what type of action to take when the date comes up.

Option 1 is probably more useful from a user's point of view (I don't want to confront a list of options when I'm setting the expiry date for my ad); but Option 2 probably works better for site admins who want to have one date field that can perform lots of tasks, not have to add specific date types for each action.
There is very likely a much better "3rd way" - I just haven't given it much thought.

If it were me - I'd start by getting to know the modules API's - e.g., try configuring a custom action, say to un-publish a node (actually, I think this one comes with Actions). Set it up so it can be triggered by admin. That should be pretty straight-forward and will give a good feeling for how the Actions API works. Then I'd set-up a little code to run through all nodes, looking for nodes with date fields older than today - just compile a list of them for now. Then I'd try to figure out how to trigger this with cron and get that working. Put em together so all nodes with stale dates get un-published. Now I'm ready to figure out how to identify which nodes I actually want to process and design the query to just grab those (that's the bit of the design that is still murky in my mind). After that it's all UI design (which I think will be significant to produce a really useful and flexible tool).

BTW - have you seen this? http://drupalmodules.com/module-finder
This is THE coolest, most useful, time-saving tool for finding and evaluating drupal modules FAST. Check it out.

I won't have a lot of time, but I'd be interested in helping with this if you want. I'm also learning Drupal and PHP (get the Pro Drupal Development book if you haven't already - my drupal skills went up a factor of 10 overnight) - and I think this could be a killer module. Contact me if you like or want to run some code by...

Good luck.

thoughts

Thanks for your thougts. Yesterday I read hald of drupal handbook, especially those parts with cck and looked at some of the modules - I have a feeling, that there are already some of the modules, which can do similar functionality, but maybe in different way.

Probably the best way is simple "attached action" to regular date field, as you described, which is controlled by cron.

Bu the way, I already found some round-abouts to create automatically filled fields with system values - is is Computed Field module drupal.org/project/computed_field also, will look to Views modules sections and http://drupal.org/project/taxonomy_timer.

I really do not want to repeat work, which is already done by the others. Hard to believe, that noone before integrated triggers+actions+cron or just actions+cron modules :/

Try a feature request?

Check the Actions issue queue and if you don't see cron integration anywhere, post a support request - wouldn't be that surprising if someone has done it, or perhaps it'll morph into a feature request?
Good luck - post back here if you ever find a good solution. Thanks Phe.

Posted request in cck and

Posted request in cck and action modules.

Did you manage?

Any news on the development of this?

Thank you

I'm currently working on a

I'm currently working on a 6.x rules engine (the renamed port of workflow-ng), which will have generic scheduling support. I'll think, this would help you a lot.

For 5.x workflow-ng offers only limited scheduling features. It comes with a module for configuring customized links for nodes, which generate an event when pressed, on which you can configure rules. Optionally one can activate schedule this event - so this is useful for scheduling node related stuff. It also has an action, which allows one to automate the scheduling of the event (no link press!)

classified site

Hi
PlayfulWolf
i am also made a classified site like olx.com. i am also pertty new on drupal please tell me which steps you should follow in detail. plz suggest me what steps should i follow.
thank you.

auto expire

Auto Expire is a very useful module for a classifieds site. (so far only for D5)

nobody click here