Mehdib92 Posted April 13, 2012 Share Posted April 13, 2012 Bonjour, J'essai de modifier le module blocknewsletter afin d'afficher le formulaire dans une fancybox et gérer l'inscription dedans. J'ai modifié le blocknewsletter.tpl <!-- Block Newsletter module--> <span id="inline" href="#newsletter_block_left">{l s='Newsletter' mod='blocknewsletter'}</span> <script type="text/javascript">$('span#inline').fancybox();</script> <div style="display:none"> <div id="newsletter_block_left" class="block"> <h4>{l s='Newsletter subscription' mod='blocknewsletter'}</h4> <div class="block_content"> {if isset($msg) && $msg} <p class="{if $nw_error}warning_inline{else}success_inline{/if}">{$msg}</p> {/if} <form id="newsletter_form" action="#" method="post"> <p id="login_error">{l s='Please complete all the fields' mod='blocknewsletter'}</p> <p id="login_error_mail">{l s='The e-mail is not valid' mod='blocknewsletter'}</p> <p><label for="nom">{l s='your last name' mod='blocknewsletter'}</label><input type="text" id="nom" name="nom" size="18" value="" /></p> <p><label for="prenom">{l s='your first name' mod='blocknewsletter'}</label><input type="text" id="prenom" name="prenom" size="18" value="" /></p> <p><label for="postcode">{l s='your post code' mod='blocknewsletter'}</label><input type="text" id="postcode" name="postcode" size="18" value="" /></p> <p><label for="email">{l s='your e-mail' mod='blocknewsletter'}</label><input type="text" name="email" size="18" value="" /></p> <p> <select name="action"> <option value="0"{if isset($action) && $action == 0} selected="selected"{/if}>{l s='Subscribe' mod='blocknewsletter'}</option> <option value="1"{if isset($action) && $action == 1} selected="selected"{/if}>{l s='Unsubscribe' mod='blocknewsletter'}</option> </select> <input type="submit" value="{l s='Submit' mod='blocknewsletter'}" class="button_mini" name="submitNewsletter" /> </p> </form> </div> </div> </div> <!-- /Block Newsletter module--> Dans le fichier ./js/tool.js, j'ai ajouté $(document).ready(function() { $("#login_error").hide(); $("#login_error_mail").hide(); $("#newsletter_form").bind("submit", function() { if ($("#nom").val().length < 2 || $("#prenom").val().length < 2 || $("#postcode").val().length <= 4) { $("#login_error").show(); $("#login_error_mail").hide(); $.fancybox.resize(); return false; } if(!checkEmail($("#email").val())) { $("#login_error").hide(); $("#login_error_mail").show(); $.fancybox.resize(); return false; } else { $.fancybox.showActivity(); $.ajax({ type : "POST", cache : false, url : "index.php", data : $("#newsletter_form").serializeArray(), success : function(data) { alert("validé"); $("#login_error").html("<h1>OK</h1>"); $("#login_error").show(); }, error : function(jqXHR) { alert("jqXHR : "+jqXHR.status); } }); } }); }); Mais j'ai toujours une erreur avec le jqXHR.status = 0. Quelqu'un aurait un début de piste de solution pour faire avancer le schmilblick ? Link to comment Share on other sites More sharing options...
Patric Posted April 13, 2012 Share Posted April 13, 2012 Topic déplacé dans "Développement". Merci de poster dans les bonnes sections. Link to comment Share on other sites More sharing options...
Mehdib92 Posted April 13, 2012 Author Share Posted April 13, 2012 Désolé, je ne savais pas trop où poster Link to comment Share on other sites More sharing options...
pxlmn Posted April 14, 2012 Share Posted April 14, 2012 Salut, tu as quoi comme code dans ton fichier index.php ? Il faut voir aussi le traitement dans cette page Link to comment Share on other sites More sharing options...
Mehdib92 Posted April 14, 2012 Author Share Posted April 14, 2012 c'est celui par défaut. Après avoir tout relu, je me suis rendu compte que j'avais un peu fait un peu n'importe quoi... En fait j'appelerais directement mon blocknewsletter.tpl dans mno fichier blockcms.tpl mais du coup le fichier blocknewsletter.php n'est jamais executé. Je pense qu'il faut que j'arrive a appeler le module blocknewsletter dans le module blockcms. Je regarde dans les fichiers PHP mais j'ai du mal à comprendre comment appeller module dans un module... Dans mon fichier blockcms.php, dans la fonction hookFooter() j'ai modifié public function hookFooter() { global $smarty; if (Configuration::get('FOOTER_BLOCK_ACTIVATION')) { $cms_titles = self::getCMStitlesFooter(); $smarty->assign(array( 'block' => 0, 'cmslinks' => $cms_titles, 'theme_dir' => _PS_THEME_DIR_, 'display_stores_footer' => Configuration::get('PS_STORES_DISPLAY_FOOTER'), 'display_poweredby' => ((int)Configuration::get('FOOTER_POWEREDBY') === 1 || Configuration::get('FOOTER_POWEREDBY') === false) )); return $this->display(__FILE__, 'blockcms.tpl'); } return ''; } Par public function hookFooter() { global $smarty; if (Configuration::get('FOOTER_BLOCK_ACTIVATION')) { $cms_titles = self::getCMStitlesFooter(); $smarty->assign(array( 'block' => 0, 'cmslinks' => $cms_titles, 'HOOK_NEWSLETTER_FOOTER' => Module::hookExec('hookFooterNewsMenu', NULL, 82), 'theme_dir' => _PS_THEME_DIR_, 'display_stores_footer' => Configuration::get('PS_STORES_DISPLAY_FOOTER'), 'display_poweredby' => ((int)Configuration::get('FOOTER_POWEREDBY') === 1 || Configuration::get('FOOTER_POWEREDBY') === false) )); return $this->display(__FILE__, 'blockcms.tpl'); } return ''; } Dans le fichier blockcms.tpl j'ai ajouté {$HOOK_NEWSLETTER_FOOTER} Dans le fichier blocknewsletter.php j'ai ajouté function hookFooterNewsMenu($params) { return $this->hookLeftColumn($params); } Mais rien ne s'affiche EDIT : J'ai affiché le debug smarty et j'ai ca : $HOOK_NEWSLETTER_FOOTER S marty_Variable Object (3) ->value = "" ->nocache = false ->scope = "Smarty root" Link to comment Share on other sites More sharing options...
Mehdib92 Posted April 14, 2012 Author Share Posted April 14, 2012 C'est résolu ! Tout bêtement dans cet appel : 'HOOK_NEWSLETTER_FOOTER' => Module::hookExec('hookFooterNewsMenu', NULL, 82), j'appelle un mauvais hook. J'ai remplacé cette ligne par 'HOOK_NEWSLETTER_FOOTER' => Module::hookExec('FooterNewsMenu'); Link to comment Share on other sites More sharing options...
Patric Posted April 16, 2012 Share Posted April 16, 2012 Je mets donc le topic en [Résolu]. Merci de penser à le faire la prochaine fois en ajoutant [Résolu] au début du titre du topic. ;-) Voir ici comment faire. Link to comment Share on other sites More sharing options...
Mehdib92 Posted April 16, 2012 Author Share Posted April 16, 2012 Ok Merci Link to comment Share on other sites More sharing options...
fblettner Posted August 23, 2012 Share Posted August 23, 2012 Bonjour, tu pourrais m'aider pour l'utilisation de ton script, je suis plutôt interessé par son utilité. J'ai bien réussi à créer un nouveau hook, modifier le blocknewsletter, les js, et le bloccms mais quand ma page s'affiche je ne peux pas cliquer sur le lien Newsletter (le href ne fonctionne à priori pas) merci par avance Link to comment Share on other sites More sharing options...
fblettner Posted August 23, 2012 Share Posted August 23, 2012 En fait, j'ai résolu mon problème. Il fallait modifier le fichier FrontController.php pour activer les fancybox de partout. public function setMedia() { global $cookie; Tools::addCSS(_THEME_CSS_DIR_.'global.css', 'all'); Tools::addCSS(_PS_CSS_DIR_.'jquery.fancybox-1.3.4.css'); Tools::addJS(array(_PS_JS_DIR_.'jquery/jquery-1.4.4.min.js', _PS_JS_DIR_.'jquery/jquery.easing.1.3.js', _PS_JS_DIR_.'tools.js', _PS_JS_DIR_.'jquery/jquery.fancybox-1.3.4.js')); if (Tools::isSubmit('live_edit') AND Tools::getValue('ad') AND (Tools::getValue('liveToken') == sha1(Tools::getValue('ad')._COOKIE_KEY_))) { Tools::addJS(array( _PS_JS_DIR_.'jquery/jquery-ui-1.8.10.custom.min.js', _PS_JS_DIR_.'hookLiveEdit.js') ); } $language = new Language($cookie->id_lang); if ($language->is_rtl) Tools::addCSS(_THEME_CSS_DIR_.'rtl.css'); } 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