jpryce Posted January 15, 2014 Share Posted January 15, 2014 Hi Has anyone tried to embed the standard mailchimp signup form in a cms page? It's just html so by rights it should be fine but it doesn't seem to do anything. Ta James Link to comment Share on other sites More sharing options...
vekia Posted January 16, 2014 Share Posted January 16, 2014 can you show code that you're trying to insert there? Link to comment Share on other sites More sharing options...
nzecheru Posted January 16, 2014 Share Posted January 16, 2014 I tried with your suggestions vekia, from this post: http://mypresta.eu/en/art/developer/prestashop-product-page-full-rich-editor.html to change the tinyCME, but looks like nothing happens. The error I got when I am trying to add the HTML code from mailchimp is "Campul continut (Romanian) este invalid." (Content field is invalid) Below is my code - mailchimp signup form. <!-- Begin MailChimp Signup Form --> <link href="//cdn-images.mailchimp.com/embedcode/classic-081711.css" rel="stylesheet" type="text/css"> <style type="text/css"> #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; } /* Add your own MailChimp form style overrides in your site stylesheet or in this style block. We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */ </style> <div id="mc_embed_signup"> <form action="URL" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> <h2>Aboneaza-te</h2> <div class="indicates-required"><span class="asterisk">*</span> indicates required</div> <div class="mc-field-group"> <label for="mce-EMAIL">Email <span class="asterisk">*</span> </label> <input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL"> </div> <div class="mc-field-group"> <label for="mce-FNAME">Prenume <span class="asterisk">*</span> </label> <input type="text" value="" name="FNAME" class="required" id="mce-FNAME"> </div> <div class="mc-field-group"> <label for="mce-LNAME">Nume </label> <input type="text" value="" name="LNAME" class="" id="mce-LNAME"> </div> <div class="mc-field-group"> <label for="mce-MMERGE4">Telefon </label> <input type="text" value="" name="MMERGE4" class="" id="mce-MMERGE4"> </div> <div class="mc-field-group input-group"> <strong>Email Format </strong> <ul><li><input type="radio" value="html" name="EMAILTYPE" id="mce-EMAILTYPE-0"><label for="mce-EMAILTYPE-0">html</label></li> <li><input type="radio" value="text" name="EMAILTYPE" id="mce-EMAILTYPE-1"><label for="mce-EMAILTYPE-1">text</label></li> </ul> </div> <div id="mce-responses" class="clear"> <div class="response" id="mce-error-response" style="display:none"></div> <div class="response" id="mce-success-response" style="display:none"></div> </div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups--> <div style="position: absolute; left: -5000px;"><input type="text" name="b_bd5190ff1d6ccae31acccee09_ede7627e5a" value=""></div> <div class="clear"><input type="submit" value="Abonare" name="subscribe" id="mc-embedded-subscribe" class="button"></div> </form> </div> <script type="text/javascript"> var fnames = new Array();var ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[4]='MMERGE4';ftypes[4]='text'; try { var jqueryLoaded=jQuery; jqueryLoaded=true; } catch(err) { var jqueryLoaded=false; } var head= document.getElementsByTagName('head')[0]; if (!jqueryLoaded) { var script = document.createElement('script'); script.type = 'text/javascript'; script.src = '//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'; head.appendChild(script); if (script.readyState && script.onload!==null){ script.onreadystatechange= function () { if (this.readyState == 'complete') mce_preload_check(); } } } var err_style = ''; try{ err_style = mc_custom_error_style; } catch(e){ err_style = '#mc_embed_signup input.mce_inline_error{border-color:#6B0505;} #mc_embed_signup div.mce_inline_error{margin: 0 0 1em 0; padding: 5px 10px; background-color:#6B0505; font-weight: bold; z-index: 1; color:#fff;}'; } var head= document.getElementsByTagName('head')[0]; var style= document.createElement('style'); style.type= 'text/css'; if (style.styleSheet) { style.styleSheet.cssText = err_style; } else { style.appendChild(document.createTextNode(err_style)); } head.appendChild(style); setTimeout('mce_preload_check();', 250); var mce_preload_checks = 0; function mce_preload_check(){ if (mce_preload_checks>40) return; mce_preload_checks++; try { var jqueryLoaded=jQuery; } catch(err) { setTimeout('mce_preload_check();', 250); return; } var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'http://downloads.mailchimp.com/js/jquery.form-n-validate.js'; head.appendChild(script); try { var validatorLoaded=jQuery("#fake-form").validate({}); } catch(err) { setTimeout('mce_preload_check();', 250); return; } mce_init_form(); } function mce_init_form(){ jQuery(document).ready( function($) { var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function(){}, onfocusout:function(){}, onblur:function(){} }; var mce_validator = $("#mc-embedded-subscribe-form").validate(options); $("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator options = { url: 'URL/subscribe/post-json?u=bd5190ff1d6ccae31acccee09&id=ede7627e5a&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8", beforeSubmit: function(){ $('#mce_tmp_error_msg').remove(); $('.datefield','#mc_embed_signup').each( function(){ var txt = 'filled'; var fields = new Array(); var i = 0; $(':text', this).each( function(){ fields[i] = this; i++; }); $(':hidden', this).each( function(){ var bday = false; if (fields.length == 2){ bday = true; fields[2] = {'value':1970};//trick birthdays into having years } if ( fields[0].value=='MM' && fields[1].value=='DD' && (fields[2].value=='YYYY' || (bday && fields[2].value==1970) ) ){ this.value = ''; } else if ( fields[0].value=='' && fields[1].value=='' && (fields[2].value=='' || (bday && fields[2].value==1970) ) ){ this.value = ''; } else { if (/\[day\]/.test(fields[0].name)){ this.value = fields[1].value+'/'+fields[0].value+'/'+fields[2].value; } else { this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value; } } }); }); $('.phonefield-us','#mc_embed_signup').each( function(){ var fields = new Array(); var i = 0; $(':text', this).each( function(){ fields[i] = this; i++; }); $(':hidden', this).each( function(){ if ( fields[0].value.length != 3 || fields[1].value.length!=3 || fields[2].value.length!=4 ){ this.value = ''; } else { this.value = 'filled'; } }); }); return mce_validator.form(); }, success: mce_success_cb }; $('#mc-embedded-subscribe-form').ajaxForm(options); /* * Translated default messages for the jQuery validation plugin. * Locale: RO */ jQuery.extend(jQuery.validator.messages, { required: "Acest câmp este obligatoriu.", remote: "Te rugăm să completezi acest câmp.", email: "Te rugăm să introduci o adresă de email validă", url: "Te rugăm sa introduci o adresă URL validă.", date: "Te rugăm să introduci o dată corectă.", dateISO: "Te rugăm să introduci o dată (ISO) corectă.", number: "Te rugăm să introduci un număr întreg valid.", digits: "Te rugăm să introduci doar cifre.", creditcard: "Te rugăm să introduci un numar de carte de credit valid.", equalTo: "Te rugăm să reintroduci valoarea.", accept: "Te rugăm să introduci o valoare cu o extensie validă.", maxlength: jQuery.validator.format("Te rugăm să nu introduci mai mult de {0} caractere."), minlength: jQuery.validator.format("Te rugăm să introduci cel puțin {0} caractere."), rangelength: jQuery.validator.format("Te rugăm să introduci o valoare între {0} și {1} caractere."), range: jQuery.validator.format("Te rugăm să introduci o valoare între {0} și {1}."), max: jQuery.validator.format("Te rugăm să introduci o valoare egal sau mai mică decât {0}."), min: jQuery.validator.format("Te rugăm să introduci o valoare egal sau mai mare decât {0}.") }); }); } function mce_success_cb(resp){ $('#mce-success-response').hide(); $('#mce-error-response').hide(); if (resp.result=="success"){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(resp.msg); $('#mc-embedded-subscribe-form').each(function(){ this.reset(); }); } else { var index = -1; var msg; try { var parts = resp.msg.split(' - ',2); if (parts[1]==undefined){ msg = resp.msg; } else { i = parseInt(parts[0]); if (i.toString() == parts[0]){ index = parts[0]; msg = parts[1]; } else { index = -1; msg = resp.msg; } } } catch(e){ index = -1; msg = resp.msg; } try{ if (index== -1){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } else { err_id = 'mce_tmp_error_msg'; html = '<div id="'+err_id+'" style="'+err_style+'"> '+msg+'</div>'; var input_id = '#mc_embed_signup'; var f = $(input_id); if (ftypes[index]=='address'){ input_id = '#mce-'+fnames[index]+'-addr1'; f = $(input_id).parent().parent().get(0); } else if (ftypes[index]=='date'){ input_id = '#mce-'+fnames[index]+'-month'; f = $(input_id).parent().parent().get(0); } else { input_id = '#mce-'+fnames[index]; f = $().parent(input_id).get(0); } if (f){ $(f).append(html); $(input_id).focus(); } else { $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } } } catch(e){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } } } </script> <!--End mc_embed_signup--> Link to comment Share on other sites More sharing options...
jpryce Posted January 17, 2014 Author Share Posted January 17, 2014 I don't get an error. Filling in the form just doesn't do anything. Standard mailchimp signup form code below... <!-- Begin MailChimp Signup Form --><link href="//cdn-images.mailchimp.com/embedcode/classic-081711.css" rel="stylesheet" type="text/css"><style type="text/css"> #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; } /* Add your own MailChimp form style overrides in your site stylesheet or in this style block. We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */</style><div id="mc_embed_signup"><form action="http://devlinrhodes.us6.list-manage.com/subscribe/post?u=4aa141a7666049130f7793016&id=3646854403" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> <h2>Subscribe to our mailing list</h2><div class="indicates-required"><span class="asterisk">*</span> indicates required</div><div class="mc-field-group"> <label for="mce-EMAIL">Email Address <span class="asterisk">*</span></label> <input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL"></div><div class="mc-field-group"> <label for="mce-FNAME">First Name <span class="asterisk">*</span></label> <input type="text" value="" name="FNAME" class="required" id="mce-FNAME"></div><div class="mc-field-group"> <label for="mce-LNAME">Last Name <span class="asterisk">*</span></label> <input type="text" value="" name="LNAME" class="required" id="mce-LNAME"></div><div class="mc-field-group input-group"> <strong>Email Format </strong> <ul><li><input type="radio" value="html" name="EMAILTYPE" id="mce-EMAILTYPE-0"><label for="mce-EMAILTYPE-0">html</label></li><li><input type="radio" value="text" name="EMAILTYPE" id="mce-EMAILTYPE-1"><label for="mce-EMAILTYPE-1">text</label></li></ul></div> <div id="mce-responses" class="clear"> <div class="response" id="mce-error-response" style="display:none"></div> <div class="response" id="mce-success-response" style="display:none"></div> </div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups--> <div style="position: absolute; left: -5000px;"><input type="text" name="b_4aa141a7666049130f7793016_3646854403" value=""></div> <div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div></form></div><script type="text/javascript">var fnames = new Array();var ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';try { var jqueryLoaded=jQuery; jqueryLoaded=true;} catch(err) { var jqueryLoaded=false;}var head= document.getElementsByTagName('head')[0];if (!jqueryLoaded) { var script = document.createElement('script'); script.type = 'text/javascript'; script.src = '//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'; head.appendChild(script); if (script.readyState && script.onload!==null){ script.onreadystatechange= function () { if (this.readyState == 'complete') mce_preload_check(); } }}var err_style = '';try{ err_style = mc_custom_error_style;} catch(e){ err_style = '#mc_embed_signup input.mce_inline_error{border-color:#6B0505;} #mc_embed_signup div.mce_inline_error{margin: 0 0 1em 0; padding: 5px 10px; background-color:#6B0505; font-weight: bold; z-index: 1; color:#fff;}';}var head= document.getElementsByTagName('head')[0];var style= document.createElement('style');style.type= 'text/css';if (style.styleSheet) { style.styleSheet.cssText = err_style;} else { style.appendChild(document.createTextNode(err_style));}head.appendChild(style);setTimeout('mce_preload_check();', 250);var mce_preload_checks = 0;function mce_preload_check(){ if (mce_preload_checks>40) return; mce_preload_checks++; try { var jqueryLoaded=jQuery; } catch(err) { setTimeout('mce_preload_check();', 250); return; } var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'http://downloads.mailchimp.com/js/jquery.form-n-validate.js'; head.appendChild(script); try { var validatorLoaded=jQuery("#fake-form").validate({}); } catch(err) { setTimeout('mce_preload_check();', 250); return; } mce_init_form();}function mce_init_form(){ jQuery(document).ready( function($) { var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function(){}, onfocusout:function(){}, onblur:function(){} }; var mce_validator = $("#mc-embedded-subscribe-form").validate(options); $("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator options = { url: 'http://devlinrhodes.us6.list-manage2.com/subscribe/post-json?u=4aa141a7666049130f7793016&id=3646854403&c=?' type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8", beforeSubmit: function(){ $('#mce_tmp_error_msg').remove(); $('.datefield','#mc_embed_signup').each( function(){ var txt = 'filled'; var fields = new Array(); var i = 0; $(':text', this).each( function(){ fields = this; i++; }); $(':hidden', this).each( function(){ var bday = false; if (fields.length == 2){ bday = true; fields[2] = {'value':1970};//trick birthdays into having years } if ( fields[0].value=='MM' && fields[1].value=='DD' && (fields[2].value=='YYYY' || (bday && fields[2].value==1970) ) ){ this.value = ''; } else if ( fields[0].value=='' && fields[1].value=='' && (fields[2].value=='' || (bday && fields[2].value==1970) ) ){ this.value = ''; } else { if (/\[day\]/.test(fields[0].name)){ this.value = fields[1].value+'/'+fields[0].value+'/'+fields[2].value; } else { this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value; } } }); }); $('.phonefield-us','#mc_embed_signup').each( function(){ var fields = new Array(); var i = 0; $(':text', this).each( function(){ fields = this; i++; }); $(':hidden', this).each( function(){ if ( fields[0].value.length != 3 || fields[1].value.length!=3 || fields[2].value.length!=4 ){ this.value = ''; } else { this.value = 'filled'; } }); }); return mce_validator.form(); }, success: mce_success_cb }; $('#mc-embedded-subscribe-form').ajaxForm(options); });}function mce_success_cb(resp){ $('#mce-success-response').hide(); $('#mce-error-response').hide(); if (resp.result=="success"){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(resp.msg); $('#mc-embedded-subscribe-form').each(function(){ this.reset(); }); } else { var index = -1; var msg; try { var parts = resp.msg.split(' - ',2); if (parts[1]==undefined){ msg = resp.msg; } else { i = parseInt(parts[0]); if (i.toString() == parts[0]){ index = parts[0]; msg = parts[1]; } else { index = -1; msg = resp.msg; } } } catch(e){ index = -1; msg = resp.msg; } try{ if (index== -1){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } else { err_id = 'mce_tmp_error_msg'; html = '<div id="'+err_id+'" style="'+err_style+'"> '+msg+'</div>'; var input_id = '#mc_embed_signup'; var f = $(input_id); if (ftypes[index]=='address'){ input_id = '#mce-'+fnames[index]+'-addr1'; f = $(input_id).parent().parent().get(0); } else if (ftypes[index]=='date'){ input_id = '#mce-'+fnames[index]+'-month'; f = $(input_id).parent().parent().get(0); } else { input_id = '#mce-'+fnames[index]; f = $().parent(input_id).get(0); } if (f){ $(f).append(html); $(input_id).focus(); } else { $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } } } catch(e){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } }}</script><!--End mc_embed_signup--> Link to comment Share on other sites More sharing options...
vekia Posted January 19, 2014 Share Posted January 19, 2014 these markups don't work in prestashop. without modification of the validate class - code you're trying to insert there will be removed (or page will not be saved properly). what to do? you have to extend tinymce object (to accept style, script tags) and also modify validate controller to accept these markups. Link to comment Share on other sites More sharing options...
jpryce Posted January 21, 2014 Author Share Posted January 21, 2014 That sounds like a brilliant answer, thanks. What does it mean!? Link to comment Share on other sites More sharing options...
afshop Posted May 14, 2014 Share Posted May 14, 2014 That sounds like a brilliant answer, thanks. What does it mean!? Hi jpryce do you solve it? Thanks Angela Link to comment Share on other sites More sharing options...
jpryce Posted May 14, 2014 Author Share Posted May 14, 2014 Hi Angela Not really, as with so much on this forum it didn't get a reply. I ended up using the basic mailchimp code... <!-- Begin MailChimp Signup Form --><div id="mc_embed_signup"><form id="mc-embedded-subscribe-form" class="validate" action="http://devlinrhodes.us6.list-manage.com/subscribe/post?u=4aa141a7666049130f7793016&id=3646854403" method="post" name="mc-embedded-subscribe-form" target="_blank"><h2>Subscribe to our mailing list</h2><div class="indicates-required"><span class="asterisk">*</span> indicates required</div><div class="mc-field-group"><label for="mce-EMAIL">Email Address <span class="asterisk">*</span> </label> <input id="mce-EMAIL" class="required email" type="email" name="EMAIL" value="" /></div><div class="mc-field-group"><label for="mce-FNAME">First Name <span class="asterisk">* </span> </label> <input id="mce-FNAME" class="required" type="text" name="FNAME" value="" /></div><div class="mc-field-group"><label for="mce-LNAME">Last Name <span class="asterisk">*</span> </label> <input id="mce-LNAME" class="required" type="text" name="LNAME" value="" /></div><div class="mc-field-group input-group"><strong>Email Format </strong><ul><li><input id="mce-EMAILTYPE-0" type="radio" name="EMAILTYPE" value="html" /><label for="mce-EMAILTYPE-0"> html</label></li><li><input id="mce-EMAILTYPE-1" type="radio" name="EMAILTYPE" value="text" /><label for="mce-EMAILTYPE-1"> text</label></li></ul></div><div id="mce-responses" class="clear"> </div><!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups--><div style="position: absolute; left: -5000px;"><input type="text" name="b_4aa141a7666049130f7793016_3646854403" value="" /></div><div class="clear"><input id="mc-embedded-subscribe" class="button" type="submit" name="subscribe" value="Subscribe" /></div></form></div><!--End mc_embed_signup--> James Link to comment Share on other sites More sharing options...
afshop Posted May 14, 2014 Share Posted May 14, 2014 Hi James, When I save the mailchimp code in the cms page I got this error : Property CMS->content is not validat line 878 in file classes/ObjectModel.php 872.873. $message = $this->validateField($field, $value, $id_lang);874. if ($message !== true)875. {876. if ($die)877. throw new PrestaShopException($message);878. return $error_return ? $message : false;879. } I think it's necessary to extend the object in the class as Vakia suggested, but i don't know how to do. Thanks angela Link to comment Share on other sites More sharing options...
jpryce Posted May 14, 2014 Author Share Posted May 14, 2014 No i don't know how to do that either. I didn't have an issue with that code, could be that you're on a different version? Link to comment Share on other sites More sharing options...
afshop Posted May 14, 2014 Share Posted May 14, 2014 No i don't know how to do that either. I didn't have an issue with that code, could be that you're on a different version? Hi, I solved it, escluding the Java script in the mailchimp code. Ciao Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now