Pay to Publish 2

Events happening in the community are now at Drupal community events on www.drupal.org.
marcoBauli's picture

Hello everybody,

seems that Drupal still lacks an out-of-the box solution to bill advertisers for publishing listings on a site, so i am actually challenging and puzzling to set up a recipe that could do the job.

Figuring out what Coupet asks on his previous post on point 1 ("Charge users for each listing they place or each node they publish") could be relatively easy and is the starting point to achieve what follows. But moreover, what i dream is to be able to set up the well-known standard workflow present in almost any respectable e-commerce site, where exist different "levels" of listings, each of them containing incremental informations and visibility in the site.

To make an example, imagine the classic 4 ROLE MEMBERSHIPS, each containing a section of additional information and some more on-site visibility than the lower one. So an hypothetic Roles memberships configuration could be the following:

  • Basic: free. Teaser only (or very basic info)[*1].
  • Silver: 5$. Full node (more info)[*2]. Main image [*3].
  • Gold: 10$. Full node (more info). Main image. Unlimited images gallery [*4]. More visibility [*5].
  • Platinum: 15$. All above. Text+image Ad on certain pages [*6]. Randomly featured on homepage [*7]. More visibility.



As no ready solution exists, i tryed figuring out couple of possible approaches to this on paper but still seems some quirks are missing, so any advice from someone with more experience than me would be greatly apreciated! ;)

So here is what i came up with to fill the gap:

Recipe 1: Free Teasers, Premium Full Nodes

Ingredients:

  • CCK: essential to build the listing-type.
  • Image_attach: - needs coding of per-type/per-role granular permissions - adds 1 main image attachment to allowed roles in proper listing-types (see *3)
  • Upload_image: - needs coding of per-type granular permissions - adds unlimited images upload and gallery to allowed roles in proper listing-types. (see *4)
  • Role_weight: let's you weight listings and any content by role of author (Platinum first, Gold second,..) (see *5)
  • Views: essential to obtain *5, *6 and *7.
  • Premium: ??? (*1, *2)

Missing ingredient: so far so good, but what could be used to prevent Basic advertisers from displaying full node view of their listing (*1)?

Possible solution: The Premium module allows priviledged users to access full nodes of a site. Anybody has an idea if this could be turned inside out to prevent authors to show full node views to visitors? Any comment or alternative/better/easier solution about this greatly apreciated!


Recipe 2: CCK Per-field Permissions

Ingredients: as for recipe 1, but

  • CCK: Per-field permissions patch (*1, *2).
  • Imagefield: *3, *4
  • Role_weight: *5
  • Views: *5, *6, *7

Notes: Image_attach and Upload_image are not necessary if per-field permissions find their way through CCK. Multiple permission-enabled istances of the imagefield could be used instead.

Missing ingredient: Bèr Kessels tryed coding a per-field permissions CCK patch, but seems this is a blind road. Fields cannot handle permissions because of the aggressive caching of CCK right at the origin and the very first time the node output is generated. And a solution to this would be inacceptable in terms of performance/maintainability.

Possible solution: can anyone see an alternative or workaround to this?


Recipe 3: Nested Additional Nodes

Ingredients: basically identical to recipe 2, but using Nodefamily module to add incremental information to a listing.

  • Same as Recipe 2
  • Nodefamily: ? (*1, *2)

Notes: this solution is tied to the still beta Nodefamily module, which allows to define a relation between all nodes of a certain content type created by the same author. The module also allows to restrict the number of creatable nodes of a content type per user.

Possible solution: use Nodefamily module (part of the Nodeprofile package to create "nestable" listings made of more nodes, each accessible only by a particular priviledged role.



Maybe the "best" solution is somewhere in between these lines, or maybe these are just far too complicated roads to follow, and as a non-coder i could be looking in the wrong direction.

Anyway, at the moment Drupal still lacks a solid and flexible system to enhance pay-to-publish listing sites, so maybe a unified solution to this is desirable. I know this post encompasses modules that exule from the e-commerce package, but i thought this was the right group where to start a discussion on the topic!

Thank you in advance for any comment or feedback you might give,

cheers,

Marco

Comments

I've been wondering about

budda's picture

I've been wondering about this same issue but took a more simple approach. It involves adding a price to each node type you wish to sell.

I'm available to develop this next week - and would like to hear from anybody who wishes to donate to the task.

New module work in progress: Taxonomy_actions

marcoBauli's picture

Howdy,

actually the logic i am looking for is another:

Your proposal
users have to pay a fixed price for each node of a certain type they wish to publish. This is very straightforward and effective, but also can be a stop for some users who would like to get familiar with the site before actually paying for publishing.

My proposal
(well, actually work-in-progress!) the idea is to let users publish basic version of nodes for free, and later be able to pay to "upgrade" it and show more information (more fields outputted to the final node) and add more visibility (views plays here).
This should incentivate new users to go for a free publication at first, letting them explore the ground first, and helping new sites collecting content.



Taxonomy_actions:
I asked a coder to develop a module that aims at what i tryed to explain above, based on E-commerce obviously, on Taxonomy (Category) and Actions. The module will be called Taxonomy_actions, and the idea behind it is:

  • set up different "Levels" with different costs and properties (Silver, Gold, Platinum style). Each level will have it's corresponding taxonomy (category) term.
  • to upgrade a node, the user will have to buy the desired "Level" and assign it to one of his published nodes. The corresponding taxonomy term will be assigned to the desired node.
  • user will also be able to choose a duration in months. The final price will be a combination of Level x Number of months.

Once done that:

  • a conditional can be used in the template of the content-type to show more or less text-fields or whatever fields (show additional information) depending on the level they bought.
  • Views will play the role of showing higher-level listings in specific pages and blocks views in the site (more visibility).



I am testing and polishing the module in these days. If you are interested please drop comments, hints, suggestions or critics below here!

cheers

Integration with current developments

sun's picture

Please take current developments into your considerations. Your "levels" seem to be user roles. (OT: Those paid membership roles should also be products to have maximum flexibility with ecommerce productapi).

IMHO, Views should have to handle those conditionals for output, not the template. hook_form_alter() might be used to remove input fields of content types in the node edit form that shall only be available to higher level user roles.

Daniel F. Kudwien
unleashed mind

Daniel F. Kudwien
netzstrategen

hmm..roles won't do the job

marcoBauli's picture

Daniel, thanks for replying,

actually i happened to the Taxonomy_actions module proposed above after considering the different role memberships solutions:

this way was not possible to differentiate levels on a per-node level. If user buys a role, then all nodes published by that user would then assume the same properties of the role he buys.
No good, because here we are trying to have a user publish for example one basic listing, two silver and one platinum listings.
(if in someway i am wrong i'd be happy to be shown the right way to do it!)

IMHO, Views should have to handle those conditionals for output, not the template.

sorry, no coder here: do you think this would be a benefit, and if yes why?

hook_form_alter() might be used to remove input fields of content types in the node edit form that shall only be available to higher level user roles.

yep, this might be a very nice-to have. Still i have not too clear how to theme a CCK submission form... any hint or link about this would be extremely apreciated!

PS: opened a corresponding forum topic on Drupal.org also for more visibility.

pay2publish would be an excellent addition

discursives-gdo's picture

For so many of us who are investing time and energy in learning Drupal enough to even approach the idea of contributing something useful i must say that this idea of paying for nodes is valuable.

it is my cutting edge right now because so much of what i do os a mishmash of process, strategy, workflow and so many other value add things that node creation and presentation of one form or another is important.

the ability to sell nodes as pieces of a workflow process is what I am looking for. thanks for looking at this and please contact me if putting in a few dollars will help.

Pay2Publish (ex Taxonomy_actions) in CVS

marcobauli's picture

Howdy all,

i'm sorry if updates about Taxonomy_actions (now Pay2Publish) came to an halt.
Some long times of development and a slight change of business model in the website got the momentum slow down a bit.

Anyhow good news:
as some people recently asked about the status of the module and i finally managed to go through Drupal CVS, now the Pay2Publish project is available for anyone who wants to have a peek or give it a try.

Please note that even if the module should work properly on Drupal + eCommerce 4.7, it is a development version lacking documentation and probably not too polished yet. Please feel free to drop your word in the Pay2Publish issues queue if you need any help or info or want to give something back to the module ;)

In case the module is not available on the project page, you can find it in CVS here.

e-Commerce Module

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: