Jump to content

[Solucionado]Generar url "img src" en módulos


oka

Recommended Posts

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 by oka (see edit history)
Link to comment
Share on other sites

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 by oka (see edit history)
Link to comment
Share on other sites

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

  • 2 weeks later...

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 :D

 

un saludo.

Link to comment
Share on other sites

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 by oka (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

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

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...