grupofarmaceutico Posted March 7, 2013 Share Posted March 7, 2013 Buenas días a tod@s: Hoy me dí cuenta de un error en mi tienda online. Resulta que tengo el módulo de "Nuetras tiendas" en donde nos aparece un mapa de Google con todas las tiendas que tenemos disponibles. Tengo aproximadamente 50 tiendas metidas...y hasta hace un tiempo se veían todas sin problema alguno en cualquier tipo de navegador. Después de instalar el certificado de seguridad...no se ven las tiendas!! se ve el mapa pero no llega a cargar todas las tiendas. ¿Serán muchas tiendas? ¿Tendrá algo que ver con el certificado? ¿Intento quitarle a esa página específica el certificado? Muchas gracias por vuestra ayuda!! Les dejo la web de la tienda: www.physiorelax.es/tienda Mi versión Prestashop es la 1.5.3.1 Probé con safari, Explorer, Chrome, Mozilla.... Link to comment Share on other sites More sharing options...
oka Posted March 7, 2013 Share Posted March 7, 2013 [blocked] The page at https://www.physiorelax.es/tienda/es/tiendas ran insecure content from http://maps.google.com/maps/api/js?sensor=true®ion=ES. Un saludo. Link to comment Share on other sites More sharing options...
grupofarmaceutico Posted March 7, 2013 Author Share Posted March 7, 2013 Exacto!! El certificado al darse cuenta que tiene una ventaja sin certificado, directamente ni la muestra. Buscando estoy a ver qué puedo hacer para solucionar. ¿Alguna idea? Cambiar el código que a ver si encuentro en donde puede estar... Link to comment Share on other sites More sharing options...
oka Posted March 7, 2013 Share Posted March 7, 2013 Tienes que conseguir que la url al mapa sea : https://maps.google.com/maps/api/js?sensor=true®ion=ES y no : http://maps.google.com/maps/api/js?sensor=true®ion=ES Supongo que dentro del tpl o del php que ejecuta "nuestras tiendas" podrás modificar la llamada al maps por https Un saludo Link to comment Share on other sites More sharing options...
nadie Posted March 7, 2013 Share Posted March 7, 2013 Tienes que conseguir que la url al mapa sea : https://maps.google....=true®ion=ES y no : http://maps.google.com/maps/api/js?sensor=true®ion=ES Supongo que dentro del tpl o del php que ejecuta "nuestras tiendas" podrás modificar la llamada al maps por https Un saludo Complementando la información que te dice el usuario "oka" Ve al fichero: /controllers/front/StoresController.php Busca esto: $this->addJS('http://maps.google.com/maps/api/js?sensor=true®ion='.substr($default_country->iso_code, 0, 2)); Y dejalo así: $this->addJS('https://maps.google.com/maps/api/js?sensor=true®ion='.substr($default_country->iso_code, 0, 2)); Lo ideal es no modificar directamente el controlador y hacer un override de dicho controlador pero bueno... 1 Link to comment Share on other sites More sharing options...
oka Posted March 7, 2013 Share Posted March 7, 2013 Hola Victor. El override de este controlador podría ser algo así ? (no tengo a mano una maqueta ahora mismo para probarlo) <?php class Https_Maps extends StoresController { public function process() { parent::process(); $this->addJS('https://maps.google.com/maps/api/js?sensor=true®ion='.substr($default_country->iso_code, 0, 2)); } } ?> Un saludo. Link to comment Share on other sites More sharing options...
grupofarmaceutico Posted March 8, 2013 Author Share Posted March 8, 2013 Muchas gracias por la ayuda chicos!! Ya se me corrigió la advertencia al cambiar el https...pero sigue dándome un error: Uncaught ReferenceError: google is not defined Pueden ver el error: www.physiorelax.es/tienda/es/tiendas Muchas gracias ! ^^ Link to comment Share on other sites More sharing options...
oka Posted March 8, 2013 Share Posted March 8, 2013 Hola Victor. El override de este controlador podría ser algo así ? (no tengo a mano una maqueta ahora mismo para probarlo) <?php class Https_Maps extends StoresController { public function process() { parent::process(); $this->addJS('https://maps.google.com/maps/api/js?sensor=true®ion='.substr($default_country->iso_code, 0, 2)); } } ?> Un saludo. Ya tengo un override hecho, me injecta el js de google con https (se puede ver en el print_r que hago del array $js_files) pero después en el código me sigue apareciendo con http:// <?php class StoresController extends StoresControllerCore { public function setMedia() { parent::setMedia(); global $js_files; $index = array_search('http://maps.google.com/maps/api/js?sensor=true', $js_files); if ($index !== false){ array_splice($js_files, $index, 1, array('https://maps.google.com/maps/api/js?sensor=true')); print_r($js_files); } else { $js_files[] = 'https://maps.google.com/maps/api/js?sensor=true'; } } } ?> Un saludo. Link to comment Share on other sites More sharing options...
oka Posted March 8, 2013 Share Posted March 8, 2013 El código anterior es correcto, no lo veía porque tenía activa la compresión de los JS. Para la versión 1.4 nos vamos a la carpeta override/controllers y creamos un fichero llamado: StoresController.php El contenido de StoresController.php: <?php class StoresController extends StoresControllerCore { public function setMedia() { parent::setMedia(); global $js_files; $index = array_search('http://maps.google.com/maps/api/js?sensor=true', $js_files); if ($index !== false){ array_splice($js_files, $index, 1, array('https://maps.google.com/maps/api/js?sensor=true')); } else { $js_files[] = 'https://maps.google.com/maps/api/js?sensor=true'; } } } ?> ¿Qué es lo que hace el código anterior? Estamos creando la clase StoresController que extiende la clase de prestashop StoresControllerCore, ésto quiere decir que vamos a heredar todos los métodos y atributos. Vamos a modificar el método SetMedia() de StoresControllerCore para que cuando entre en esa función podamos modificar a nuestro gusto la URL que apunta al JS del maps. $js_files es un array que va almacenando las URL's de los JS para mostrarlos al navegador, el override verifica si en el array está la url al JS del maps, si lo encuentra lo sustituye si no lo encuentra lo añade al array. Un saludo. PD: Este override es una modificación de este otro override para el FrontController y el jquery que podéis encontrar en http://www.prestadb.com/prestashop-jquery-1-7-google-cdn-tutorial/ 1 Link to comment Share on other sites More sharing options...
oka Posted March 9, 2013 Share Posted March 9, 2013 Hola En la 1.4 además de hacer el override anterior hay que modificar (si se está usando el tema por defecto) el archivo Stores.tpl porque en ese archivo injectan una llamada al JS del maps: <script src="http://maps.google.com/maps/api/js?sensor=true"></script> En las herramientas de desarrollador del chrome podemos ver un aviso que dice que se "están haciendo dos llamadas al JS y puede dar error" El JS no debería injectarse desde el TPL, yo lo que he hecho es comentar la línea. Además si el JS del maps detecta que se hace la llamada por https, éste modifica las llamadas posteriores a sus propios JS del maps con https. <script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=true"></script> <script src="https://maps.gstatic.com/intl/es_es/mapfiles/api-3/12/2/main.js" type="text/javascript"></script> Un saludo. Link to comment Share on other sites More sharing options...
grupofarmaceutico Posted March 11, 2013 Author Share Posted March 11, 2013 Muchísimas gracias por tu dedicación Oka. Pero...o no me entero o no funciona. Ya cree el fichero y lo guardé en la carpeta que me señalastes. Pero nada de nada. El mapa no se me ve, sigue saliendo el error: Uncaught ReferenceError: google is not define Como si dicha variable no estuviera inicializada...Y también a la hora del Log in, con el certificado no me deja entrar al área de registro, pero sin el certificado me deja... Que jaleo! Link to comment Share on other sites More sharing options...
oka Posted March 11, 2013 Share Posted March 11, 2013 Para el error de google la verdad es que no sé, ahora no tengo mucho tiempo para mirarlo. El override es para la versión 1.4, si usas la 1.5 no te puedo ayudar porque no trabajo con ella. Sobre el tema del login, pues es raro, para saber qué es lo que pasa necesitaría ver logs del servidor. Un saludo Link to comment Share on other sites More sharing options...
Recommended Posts