Nalena Posted November 15, 2018 Share Posted November 15, 2018 (edited) ¡Hola a todos! Quería ver si me podéis echar una mano. Necesito que a la hora de ver los atributos en el producto, cuando es una textura al pasar el ratón por encima se me vea en el bloque de al lado en grande. Haciendo pruebas con una imagen cualquier funciona correctamente pero no cuando lo intento hacer con las variables que forman las imágenes de textura por lo que creo que lo que me ocurre es que no me están pasando bien al codigo JS. Siendo el código que forma la imagen este: <img src="{$img_col_dir}{$id_attribute|intval}.jpg" alt="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" width="20" height="20" /> Las tengo declaradas tal que así pero no hay forma, ¿alguna ayuda? :/ var imgdir = "{$img_col_dir}"; var imgatt = "{$id_attribute|intval}"; Edited March 12, 2019 by Nalena (see edit history) Link to comment Share on other sites More sharing options...
joseantgv Posted November 15, 2018 Share Posted November 15, 2018 1 hour ago, Nalena said: ¡Hola a todos! Quería ver si me podéis echar una mano. Necesito que a la hora de ver los atributos en el producto, cuando es una textura al pasar el ratón por encima se me vea en el bloque de al lado en grande. Haciendo pruebas con una imagen cualquier funciona correctamente pero no cuando lo intento hacer con las variables que forman las imágenes de textura por lo que creo que lo que me ocurre es que no me están pasando bien al codigo JS. Siendo el código que forma la imagen este: <img src="{$img_col_dir}{$id_attribute|intval}.jpg" alt="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" width="20" height="20" /> Las tengo declaradas tal que así pero no hay forma, ¿alguna ayuda? 😕 var imgdir = "{$img_col_dir}"; var imgatt = "{$id_attribute|intval}"; Pero ese TPL con el JS dónde está? En un fichero tuyo que lo añades desde un hook? Seguramente esa variable Smarty todavía no esté asignada cuando procesas el TPL y tengas que hacer tú la asignación. Link to comment Share on other sites More sharing options...
gusman126 Posted November 15, 2018 Share Posted November 15, 2018 (edited) Yo uso 2 opciones, esta en los TPL <script> var $tokendb = '{$tokendbup}'; </script> Antes en el php modulo $this->context->smarty->assign('tokendbup', $tokendbup); Tambien sirve si pones en el tpl {addJsDef $tokendbup=$tokendbup} Esta no lo he probado, pero creo que es para variables de texto que se pueden traducir {addJsDefL name=customizationIdMessage}{l s='Customization #' mod='blockcart' js=1}{/addJsDefL} Esta segunda opcion la uso para añadirla al Backoffice del prestashop, añadiendo el codigo en el fichero php del modulo public function hookActionAdminControllerSetMedia() { Media::addJsDef(array('$tokendbup' => $tokendbup)); } Edited November 15, 2018 by gusman126 (see edit history) Link to comment Share on other sites More sharing options...
gusman126 Posted November 15, 2018 Share Posted November 15, 2018 He visto lo que quieres hacer Vas a usar un modulo desarrollado por ti? Vas a necesitar añadir todas las variables a tu modulo y asignarlas o vas a modificar los ficheros product.tpl y los demás para hacer lo que quieres? comprueba los nombres de las variables en el mismo fichero que estas usando y añade el script para asignarlas y usarlas en javascript o jquery Link to comment Share on other sites More sharing options...
Nalena Posted November 15, 2018 Author Share Posted November 15, 2018 ¡Hola! Antes que nada mil gracias a los dos por contestar. Realmente no pretendo hacer ningun módulo, o espero no necesitarlo, en principio pensaba que sería algo sencillo pero igual se complica la cosa... Realmente estaba añadiendo el par de línas de JS en el archivo product.tpl Como comenté, si pongo una imagen cualquiera me la toma, pero no con las variables que forman los atributos de texturas por lo que supongo que el código JS no me anda tomando bien las variables. Este código está en el archivo product.tpl y dejo en negrita las variables en cuestión: <img src="{$img_col_dir}{$id_attribute|intval}.jpg" alt="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" width="20" height="20" /> Y arriba del archivo simplemente pongo el código: // Funciona document.getElementById("test").innerHTML='<img src="http://localhost/ps16119/themes/modern_fashion/img/test.jpg" width="250" height="250"/>'; // Así no var imgdir = "{$img_col_dir}"; var imgatt = "{$id_attribute|intval}"; document.getElementById("test").innerHTML='<img src="' + imgdir + imgdiratt +'.jpg" width="20" height="20"'; Realmente no sé si el código estará mejor o peor, pero la primera parte funciona jajajaja Link to comment Share on other sites More sharing options...
gusman126 Posted November 15, 2018 Share Posted November 15, 2018 (edited) Añade el siguiente codigo en el fichero /themes/classic/templates/catalog/_partials/product-cover-thumbnails.tpl Despues de probar en product.tpl y otro, en este tambien ha funcionado bien product-details.tpl <script> window.onload = function() { $(document).ready(function() { var imgdir = "{$img_col_dir}"; var imgatt = "{$id_attribute|intval}"; document.getElementById("test").innerHTML='<img src="' + imgdir + imgatt +'.jpg" width="20" height="20"'; }); } </script> Recuerda añadir el elemento "test" , cuadro o donde quieras que se muestre Pero esto no va ha hacer que al pasar por el raton haga algo Edited November 15, 2018 by gusman126 (see edit history) Link to comment Share on other sites More sharing options...
Nalena Posted November 15, 2018 Author Share Posted November 15, 2018 No tengo esa ruta ni ningún archivo que se llame así, supongo que es porque estoy usando la versión 1.6 :S Link to comment Share on other sites More sharing options...
gusman126 Posted November 15, 2018 Share Posted November 15, 2018 hace 9 minutos, Nalena dijo: No tengo esa ruta ni ningún archivo que se llame así, supongo que es porque estoy usando la versión 1.6 :S entonces, SI usa product.tpl Link to comment Share on other sites More sharing options...
Nalena Posted November 15, 2018 Author Share Posted November 15, 2018 Vale, entonces si quiero que se muestre con el mouseover teniendo este código: <img src="{$img_col_dir}{$id_attribute|intval}.jpg" onmouseover="show()" /> Añado el código conforme me diste pero llamando a la función... window.onload = function() { $(document).ready(show() { ... }); } Y... debería de funcionar pero no T.T Link to comment Share on other sites More sharing options...
gusman126 Posted November 15, 2018 Share Posted November 15, 2018 pues ni idea, eso ya deberas hacer pruebas directamente en la consola, Teniendo las variables en la memoria del explorador puedes hacer pruebas directamente añadiendo el codigo en la consola, es lo que yo hago cuando necesito ver si un codigo java funciona sin tener que ir al fichero y cambiando cada 2x3 y actualizando Link to comment Share on other sites More sharing options...
Nalena Posted November 15, 2018 Author Share Posted November 15, 2018 Bueno, lo anterior está arreglado, era fallo mio :/ Estando el código bien pruebo con las variables y nada, pruebo con una ruta completa bien Seguiré dando vueltas a ver qué puedo hacer... Mil gracias por la ayuda! Link to comment Share on other sites More sharing options...
gusman126 Posted November 15, 2018 Share Posted November 15, 2018 hace 3 minutos, Nalena dijo: Bueno, lo anterior está arreglado, era fallo mio 😕 Estando el código bien pruebo con las variables y nada, pruebo con una ruta completa bien Seguiré dando vueltas a ver qué puedo hacer... Mil gracias por la ayuda! pues deberas comprobar si esta leyendo y aplicando bien las variables, usa un console.log() Link to comment Share on other sites More sharing options...
Nalena Posted November 15, 2018 Author Share Posted November 15, 2018 No, si es que el problema está ahí, al hacerlo simplemente me muestra "{$img_col_dir}"; {$id_attribute|intval}"; Por lo que no sé si tengo que declarar esas variables en otro sitio, de diferente forma o qué narices pasa u.u Link to comment Share on other sites More sharing options...
gusman126 Posted November 15, 2018 Share Posted November 15, 2018 Usando <script> window.onload = function() { $(document).ready(function() { var imgdir = "{$img_col_dir}"; var imgatt = "{$id_attribute|intval}"; console.log('Aqui la variable imgdir->'+imgdir+'<-'); console.log('Aqui la variable imgatt->'+imgatt+'<-'); }); } </script> me muestra en la consola Link to comment Share on other sites More sharing options...
Nalena Posted November 16, 2018 Author Share Posted November 16, 2018 Pf, lo revisaré más tranquilamente este fin de semana y te cuento por aquí. ¡Millones de gracias, de verdad! Link to comment Share on other sites More sharing options...
gusman126 Posted November 16, 2018 Share Posted November 16, 2018 hace 1 minuto, Nalena dijo: Pf, lo revisaré más tranquilamente este fin de semana y te cuento por aquí. ¡Millones de gracias, de verdad! de nada Link to comment Share on other sites More sharing options...
Nalena Posted November 19, 2018 Author Share Posted November 19, 2018 Aqui la variable imgdir->{$img_col_dir}<- Aqui la variable imgatt->{$id_attribute|intval}<- Nada, de verdad que es algo que no entiendo y yo pensaba que sería un cambio facilito u.u Link to comment Share on other sites More sharing options...
Nalena Posted November 19, 2018 Author Share Posted November 19, 2018 Si no... alguien sabe de algún módulo que haga lo que necesito? Os adjunto imagen para ser un poco más gráfica. Básicamente es que cuando el cliente deje el ratón sobre alguno de los atributos se muestre en grande al lado (dónde puse el cuadrado por ej) 😕 Algo que funciona perfectamente con una imagen cualquiera pero no usando las variables u.u Link to comment Share on other sites More sharing options...
gusman126 Posted November 19, 2018 Share Posted November 19, 2018 Un modulo no va a ser posible, tendras que pedir que lo hagan , Es algo muy especifico ademas de tener que añadir una caja en un sitio en concreto de la plantilla . Has pensado en hacer mas grande el cuadro que se muestra la imagen ? Tendrias que cambiar codigo CSS para que se viera bien en horizontal, pero puede ser una solucion Link to comment Share on other sites More sharing options...
Nalena Posted November 19, 2018 Author Share Posted November 19, 2018 Sí, pero el cliente reniega totalmente a eso Link to comment Share on other sites More sharing options...
gusman126 Posted November 19, 2018 Share Posted November 19, 2018 hace 1 hora, Nalena dijo: Sí, pero el cliente reniega totalmente a eso Ok pues entonces ya tendras que hacer mas pruebas o pedir que un profesional de los que estamos por aqui lo haga por un precio. Link to comment Share on other sites More sharing options...
Nalena Posted November 19, 2018 Author Share Posted November 19, 2018 Por supuesto, si alguien (o tú ) está dispuesto a ayudarme fuera de lo gratuito que me hable más detenidamente por privado y lo comentamos Link to comment Share on other sites More sharing options...
gusman126 Posted November 20, 2018 Share Posted November 20, 2018 Finalmente se ha solucionado. Pon solucionado en el tema. 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