oka Posted June 30, 2012 Share Posted June 30, 2012 (edited) Hola. Tengo instalado el módulo slideric 2.0 y me genera las urls de las imágenes de esta forma: <img src="/modules/slideric/es8.jpg" He configurado los media servers para servir contenido estático desde subdominios sin cookies, pero claro, el módulo de slideric me genera las url's de las imágenes de forma estática. El código de slideric.tpl en el que se genera el código de las imágenes es: <a href='{/literal}{$home_link->url}{literal}'><img src='{/literal}{$this_path}{$home_link->img}{literal}'</a> ¿Hay alguna forma de decirle al tpl que genere las imágenes con la url completa como hace el resto del código de prestashop ? Que en vez que genere <img src="/modules/slideric/es8.jpg" genere : <img src="http://mi.tienda.com/modules/slideric/es8.jpg" o <img src="https://mi.tienda.com/modules/slideric/es8.jpg" según entre por http o https. Un saludo. Edited July 10, 2012 by oka (see edit history) Link to comment Share on other sites More sharing options...
oka Posted June 30, 2012 Author Share Posted June 30, 2012 (edited) Hola Statictic. He probado con : <a href='{/literal}{$home_link->url}{literal}'><img src='{/literal}{$base_dir}modules/slideric/{$home_link->img}{literal}'</a> Y me genera los tags img con la url completa, pero usa la url principal del dominio y no los media servers. Después he modificado ésto: <a href='{/literal}{$home_link->url}{literal}'><img src='{/literal}http://static2.mitienda.com/modules/slideric/{$home_link->img}{literal} Y ahora sí me genera las urls como debe ser, desde un subdominio diferente al principal. El problema, como bien comentas antes, está en el SSL. Las urls no se generan con el "https" delante cuando entro por SSL. ¿No hay una variable del tipo {$media_servers_url} en vez de {$base_dir} ? un saludo. Edited June 30, 2012 by oka (see edit history) Link to comment Share on other sites More sharing options...
oka Posted June 30, 2012 Author Share Posted June 30, 2012 Hola Statictic. El módulo es el gratuito. voy a ver si investigo algo sobre lo que has puesto, de todas maneras el módulo no lo muestro sobre SSL así que me he hecho un apaño en el tpl para que tire de los 3 media servers y listo. Gracias por tu ayuda Link to comment Share on other sites More sharing options...
oka Posted July 10, 2012 Author Share Posted July 10, 2012 Hola. Por fin lo he solucionado. Para que genere las url's con http:// o https:// según se visite la página con o sin SSL hay que usar la función getCurrentUrlProtocolPrefix() Y para que genere las url's desde los media servers hay que usar la función getMediaServer() Con lo que el código final quedaría así: <a href='{/literal}{$home_link->url}{literal}'><img src='{/literal}{Tools::getCurrentUrlProtocolPrefix()}{Tools::getMediaServer($this->name)}{$this_path}{$home_link->img}{literal}'alt="" width="533" height="267"/></a> Y con estas dos funciones ya puedo empezar a pasar todo el contenido estático generado por módulos mal codificados que no hacen uso de los media servers un saludo. Link to comment Share on other sites More sharing options...
oka Posted July 11, 2012 Author Share Posted July 11, 2012 (edited) Más me alegro de que os sirva, siempre estaba pidiendo y era hora de aportar un poquito El tema tiene chicha, si activas los media servers y usas SSL la tienda da errores de certificado porque las url's las genera desde los subdominios estáticos que no están protegidos por SSL. Se supone que ésto se arregló en no se qué versión, la 1.4.1 creo y cuando entrabas a la tienda por SSL las url's de los contenidos estáticos cambiaban a la url original para no generar esos errores SSL. El error está otra vez y en el forge está marcado como solucionado pero no es así y puedes encontrar varias quejas referente a ésto de otros usuarios. Solución, meter un certificado Wildcard y tocar la conf del apache para usar SNI o VirtualDocumentRoot (porque sólo dispongo de una Ip pública) para proteger los subdominios estáticos también. Incluso los módulos de la propia página de prestashop no usan los media servers y ni mucho menos verifican si el usuario ha entrado en la tienda por https o por http. Así que los media servers hacen su función a medias porque mucho contenido estático, generado por módulos, es generado desde la url de la tienda y no desde los media servers. Estoy con el bigfooter ahora, que genera muchas imágenes y todas desde la url "madre". Un saludo. EDIT: todo este rollo viene de http://www.prestasho...814#entry856814 Edited July 11, 2012 by oka (see edit history) Link to comment Share on other sites More sharing options...
oka Posted July 24, 2012 Author Share Posted July 24, 2012 Subo este post para comentar que si modificamos el header.tpl de nuestro tema y modificamos la parte en la que se sirven todos los CSS y todos los JS del core de prestashop conseguimos que la tienda vaya a toda Hosti* (además de no dar errores de SSL si se visita la página por HTTPS) {if isset($css_files)} {foreach from=$css_files key=css_uri item=media} <link href="{Tools::getCurrentUrlProtocolPrefix()}{Tools::getMediaServer($this->name)}{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" /> {/foreach} {/if} {if isset($js_files)} {foreach from=$js_files item=js_uri} <script type="text/javascript" src="{Tools::getCurrentUrlProtocolPrefix()}{Tools::getMediaServer($this->name)}{$js_uri}"></script> {/foreach} {/if} un saludo. Link to comment Share on other sites More sharing options...
nadie Posted July 24, 2012 Share Posted July 24, 2012 Seria positivo, que recopilaras esto en un tema, y lo dejaras colocado en la sección de: http://www.prestasho...ambian-la-vida/ (Módulos gratis, sobrecargas y otras astucias que cambian la vida) Link to comment Share on other sites More sharing options...
oka Posted July 24, 2012 Author Share Posted July 24, 2012 Statictic, estoy usando el tema "prestashop_new" con CCC activo. Puedes hacer la prueba e inyectar un css con Tools::addCSS y ver si con ese método lo hace. En el fichero original : {if isset($css_files)} {foreach from=$css_files key=css_uri item=media} <link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" /> {/foreach} {/if} {if isset($js_files)} {foreach from=$js_files item=js_uri} <script type="text/javascript" src="{$js_uri}"></script> {/foreach} {/if} Se pasa como variable la url en plan /js/jquery.js yo sólo le añado la url de un media server y verifico si entra por http o por https para que construya la url según sea. y quede http://static1.mediaserver.com/js/jquery.js Mira a ver qué parámetros pasas al "src" y al "href", o ponlo por aquí, la verdad es que no sé por qué si activas CCC no funciona. Nadie, lo intentaré lo prometo, me faltan horas en el día. un saludo. Link to comment Share on other sites More sharing options...
Recommended Posts