Support

Home Forums Event Espresso Premium Slash-pricing Sale-pricing with strikethrough best practice?

Slash-pricing Sale-pricing with strikethrough best practice?

Posted: May 21, 2020 at 1:50 pm


Daniel

May 21, 2020 at 1:50 pm

I searched and could not find and answer to this question on the forums yet.

We want to display a “strikethrough price” that is the “original” price and at the same time display and sell a ticket with the sale price.

Is there a best-practice for this using EE?

I thought of storing the original price somewhere hidden in the ticket like you can with Event Meta but I don’t think there is a Ticket Meta.

The best I could come up with was to create a force sold-out ticket (0 quantity) and use some CSS and JS to do the re-formatting of the ticket selector – remove the Sold Out wording and change the price to a strikethrough.

I am not that happy about this solution as it seems kind of weird.


// added this to CSS: tr.ticket-sales-sold-out > td:nth-child(3) {display: none;}
// get the price
var total = document.querySelector('tr.ticket-sales-sold-out > td:nth-child(2)').textContent.match(/[\d]+\.[\d]+/g);
// do a srikethrough on the price
document.querySelector('tr.ticket-sales-sold-out > td:nth-child(2)').innerHTML = '<span class="alignleft">  $<s>'+total+'</s></span>';

Any suggestions how to do this in the “EE” way?

Thanks!


Tony

  • Support Staff

May 22, 2020 at 4:07 am

Hi Daniel,

With EE, everything has meta 🙂 it’s extra_meta.

https://github.com/eventespresso/event-espresso-core/blob/dce71d47e8158513b989cd34fb7a0c1ce86e6f09/core/db_models/EEM_Extra_Meta.model.php

Note that querying based on extra_meta is inefficient and not straightforward, but pretty much any entity within EE can have extra_meta attached to it.

So there’s nothing stopping you from saving extra_meta for a ticket, if you have an EE_Ticket object within $ticket you can do something like:

$ticket->update_extra_meta('daniel_sale_price', {value} );

To store a sale price value.

I’d recommend adding a field to the ticket editor and setting it through that, you can view how the WP User integration add-on does this here:

https://github.com/eventespresso/eea-wpuser-integration/blob/master/EED_WP_Users_Admin.module.php#L1070

Outputting that price on the ticket selector isn’t going to be straightforward depending on where you want to output the price.

May I ask what output you are looking for?

You must be logged in to reply to this support post. Sign In or Register for an Account

Support forum for Event Espresso 3 and Event Espresso 4.
Documentation for EE3 and EE4
Documentation for Event Espresso 3 Documentation for Event Espresso 4

Status: publish

Updated by  Tony 5 months ago ago

Topic Tags

Notifications

This topic is: not resolved
Do NOT follow this link or you will be banned from the site!
[gravityform id=80 title=false description=false ajax=false]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_80' ><form method='post' enctype='multipart/form-data' id='gform_80' action='/topic/slash-pricing-sale-pricing-with-strikethrough-best-practice/'> <div class='gform_body'><ul id='gform_fields_80' class='gform_fields top_label form_sublabel_below description_below'><li id='field_80_1' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_1' >First name<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_80_1' type='text' value='' class='medium' aria-required="true" aria-invalid="false" /></div></li><li id='field_80_2' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_2' >Email address<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_email'> <input name='input_2' id='input_80_2' type='email' value='' class='medium' aria-required="true" aria-invalid="false" /> </div></li><li id='field_80_3' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' >GDPR Agreement<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_80_3'><li class='gchoice_80_3_1'> <input name='input_3.1' type='checkbox' value='I consent to have this website store my submitted information so they can respond to my inquiry.' id='choice_80_3_1' /> <label for='choice_80_3_1' id='label_80_3_1'>I consent to have this website store my submitted information so they can respond to my inquiry.</label> </li></ul></div></li><li id='field_80_4' class='gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_4' >Email</label><div class='ginput_container'><input name='input_4' id='input_80_4' type='text' value='' autocomplete='off'/></div><div class='gfield_description' id='gfield_description_80_4'>This field is for validation purposes and should be left unchanged.</div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_80' class='gform_button button' value='Download Now' onclick='if(window["gf_submitting_80"]){return false;} if( !jQuery("#gform_80")[0].checkValidity || jQuery("#gform_80")[0].checkValidity()){window["gf_submitting_80"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_80"]){return false;} if( !jQuery("#gform_80")[0].checkValidity || jQuery("#gform_80")[0].checkValidity()){window["gf_submitting_80"]=true;} jQuery("#gform_80").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_80' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='80' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_80' value='WyJbXSIsIjBiNjdjZjkyMDUzOWUxOWY5Y2NiZjIwMzM4YjA1Mjk4Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_80' id='gform_target_page_number_80' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_80' id='gform_source_page_number_80' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div><script type='text/javascript'> jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 80) {} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [80, 1]) } ); </script>
[i]
[i]