Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

489
Visualizações
Llame a un módulo de prestashop con ajax

Tengo un módulo de PrestaShop llamado 'MyMenu' y quiero llamar a este menú con una llamada AJAX. Mi módulo se muestra en el método hookFooter() :

 public function hookFooter() { $display = $this->display(__FILE__, 'megamenu.tpl', $smartyCacheId); Tools::restoreCacheSettings(); return $display; }

Quiero mostrar con este script:

 <div class="load_menu"></div> <script> $(document).ready(function (e) { $.ajax({ method: "POST", url: "../modules/MyMenu.php", data: {}, success: function (data) { $('.load_menu').html(data); } }) }); </script>
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

La mejor manera es hacerlo a través de un controlador frontal conectado a su módulo. Puedes llamar a la url así:

 $link->getModuleLink('modulename','controller', $parameters); // Parameters is an optionnal array, it can be empty

Y para el controlador, coloque un archivo como este ./modules/modulename/controllers/front/ajax.php con este tipo de contenido:

 class ModuleNameAjaxModuleFrontController extends ModuleFrontController { public function initContent() { $response = array('status' => false); require_once _PS_MODULE_DIR_.'modulename/modulename.php'; $module = new ModuleName; if (Tools::isSubmit('action')) { $context = Context::getContext(); $cart = $context->cart; switch (Tools::getValue('action')) { case 'actionname': $response = array('status' => true); break; default: break; } } // Classic json response $json = Tools::jsonEncode($response); $this->ajaxDie($json); // For displaying like any other use this method to assign and display your template placed in modules/modulename/views/template/front/... // $this->context->smarty->assign(array('var1'=>'value1')); // $this->setTemplate('template.tpl'); // For sending a template in ajax use this method // $this->context->smarty->fetch('template.tpl'); } }
over 4 years ago · Santiago Trujillo Relatório

0

Si no desea pasar la URL por el módulo, el fragmento js debería ser así.

 $(document).ready(function(){ $.ajax({ type: "POST", headers: { "cache-control": "no-cache" }, url : baseDir + 'modules/yourmodulename/yourfile.php', data: { token : token }, success : function(data){ $('.load-menu').html(data) } }); });

Donde yourmodulename es el nombre de su módulo y yourfile.php es el código donde recupera el menú.

No olvide agregar a sus datos el token, es para evitar un ataque CSFR, obviamente también debe verificar el token en el script del lado del servidor.

over 4 years ago · Santiago Trujillo Relatório

0

En un nuevo archivo en la raíz del módulo, puede crear un archivo "ajax.php"

 require_once(MODULE_DIR.'MyMenu/mymenu.php'); if(Tools::getValue('token') != $mymenu = Module::getInstanceByName('mymenu'); $menu = $mymenu->hookFooter(); die($menu);

En tu js, en la raíz de tu módulo.

 <script> $(document).ready(function (e) { $.ajax({ method: "POST", url: "./ajax.php", data: {}, success: function (data) { $('.load_menu').html(data); } }) }); </script>
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda