We are looking to have ranged membership prices e.g.

$5-59 = Level 1 $60-99 = Level 2 $100-499 = Level 3

CiviCRM seems to support a "minimum price" for membership. How do we make it a range between minimum and maximum?

Also, these ranges should support recurring contributions (yearly).

Nice to have: * Ability to make a sliderfield out of the range

CiviCRM 4.7.x - drupal 7

  • stating your CMS is always worth doing! – petednz - fuzion Nov 14 '17 at 3:24
  • Sorry, drupal 7 – Zachary Nov 14 '17 at 3:42

You can totally do this out of the box with Webform CiviCRM module!

Sorry for the swim squad references - but that's the project I was on when I read your question - here's a quick demo:

  • in CiviCRM Tab -> add Membership Type - User Select; also add Membership Fee field;
  • in the Webform tab -> ensure the Membership Type is a Listbox; Use static to only get the ones you need on this form;

Then under Webform Tab -> Conditionals - just a quick example - but you can make this as complex as you like - and even combine statements (is greater than or equal and is less then) to cover your $ ranges.

enter image description here This says -> if we type in 25 -> we automatically get option1 -> which is my case is White Squad Membership; note how Webform is clever enough to grey out the Membership Type so the user can't self select anymore;

enter image description here

And if we type in 50 or higher -> we automatically get option number 2 -> in my case: a Black Squad Membership

enter image description here

PS - and you're going to get that slider in D8:

enter image description here

| improve this answer | |
  • Great answer! PS you don't have to wait for D8 to use drupal.org/project/sliderfield – Coleman Nov 14 '17 at 2:05
  • Awesome! Didn't know that one yet :-) – KarinG - Semper IT Nov 14 '17 at 2:05
  • I have no idea if it works with webform conditionals and webform_civicrm but if they've written their code properly it ought to. – Coleman Nov 14 '17 at 2:25
  • Ok give me a minute :-) – KarinG - Semper IT Nov 14 '17 at 2:27
  • 1
    Radio sliders - ok that would be a cool widget 😀 – KarinG - Semper IT Nov 14 '17 at 20:41

if you need this only on the front facing forms then some javascript might do the required. ie have a single field for them to put the amount in, and behind the scenes figure out which Memb Type it should be and set that to selected. sorry i can't offer a recipe.

| improve this answer | |
  • Hey Petednz you've been overwhelmingly nice in helping me out! I still feel the need to tip you somehow. Here's my "crazy" idea. I'll set up a price set and have a price field for each level. Each price field will be a select field with options entered in a painstaking fashion (e.g. Level 1 = Membership type = 5$, Level 1 = Membership type = $6 (in $1 intervals). Then, I'll use the jQuery UI (hopefully) to turn the select fields into a slider for the front end. On the back end, the staff could still pick the price set option that was the correct $ amount in the sliding scale. – Zachary Nov 13 '17 at 23:17
  • I also had a thought that perhaps I could take your route and then use Webform CiviCRM to essentially be a passthrough for contributions where the user puts in an amount and then somehow use the rules extension or the drupal rules module to create the memberships. But- I perceive this might actually be harder than the above. – Zachary Nov 13 '17 at 23:21
  • ouch that sounds painful. surely the javascript can work through going, if this is less than x then set it to $x, if it is below y set it to $y so you would only have 1 price set per range – petednz - fuzion Nov 14 '17 at 3:22
  • 1
    Actually WEBFORMS rock. You should be able to do this easily using Conditionals based on the amount someone enters. – petednz - fuzion Nov 14 '17 at 3:23
  • oh too late. good write up Karin ;-) – petednz - fuzion Nov 14 '17 at 3:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.