chinchoso Posted January 11, 2016 Share Posted January 11, 2016 Buenas. Llevo mucho tiempo detras de esto pero no consigo arreglarlo. Tengo una tienda en la que una serie de articulos deben mostrar un logotipo en la pagina de producto, y el resto de productos no mostrarla. Con el modulo contenbox coloco el logotipo en el hook que quiero pero se me muestra en todos los productos. Para solucionarlo modifico el tpl del contentbox añadiendo el codigo: {if $smarty.get.id_product == 1 OR $smarty.get.id_product == 2 ..........} asi añadiendo id de producto uno por uno. Todos los productos que deben mostrar el logotipo pertenecen a la misma categoria padre. Tambien su referencia esta entre la 5000000 en adelante. La idea seria poder añadir el codigo de forma que todos los productos que pertenezcan a la categoria padre X muestren el logo, o tambien, que todos los productos cuya referencia sea 50000000 o superior muestren el logo. El caso es que he probado cambiando el parametro id_product por id_category_parent y otras tantas cosas, y no consigo que funcione. A ver si me podeis echar una mano con esto. Me trae de cabeza. Un saludo. Link to comment Share on other sites More sharing options...
ventura Posted January 11, 2016 Share Posted January 11, 2016 (edited) Hazlo mejor asi en el .php principal del modulo, busca esta parte public function genericHookMethod() Debajo añade esto $products = new Product((int)Tools::getValue('id_product'), false, $this->context->language->id); Un poco mas abajo, busca esta parte $this->context->smarty->assign( array( 'content' => $pre_content.$content_query['content_text'].$pos_content ) ); Y lo dejas asi $this->context->smarty->assign(array( 'content' => $pre_content.$content_query['content_text'].$pos_content, 'product' => $products, )); Ahora ya desde el .tpl del modulo ya se puede acceder a todas las variables, id, reference,.... Edited January 11, 2016 by ventura (see edit history) Link to comment Share on other sites More sharing options...
chinchoso Posted January 11, 2016 Author Share Posted January 11, 2016 Voy a ponerme manos a la obra y os comento. Link to comment Share on other sites More sharing options...
chinchoso Posted January 11, 2016 Author Share Posted January 11, 2016 Algo debo estar haciendo mal porque no me funciona. He editado el fichero contentbox.php y he modificado las lineas que me comentabas. Luego he ido al fichero template.tpl y he sustituido la linea: {if $smarty.get.id_product ==1} por {if $smarty.get.reference > 500000} pero no se muestra el modulo en ninguno de los articulos cuya referencia sea de esa en adelante. Alomejor es que no estoy modificando el fichero adecuado no? Link to comment Share on other sites More sharing options...
chinchoso Posted January 12, 2016 Author Share Posted January 12, 2016 Bueno, pues sigo con las pruebas. Algo he conseguido hacer pero aun no funciona del todo ( estoy aprendiendo y voy bastante lento). Lo estoy haciendo de otra manera diferente, por si a alguien le sirve o se le ocurre como mejorarlo. He modificado el archivo ProductController.php donde esta la linea $this->setTemplate(_PS_THEME_DIR_.'product.tpl'); he añadido lo siguiente $this->setTemplate(_PS_THEME_DIR_.'product.tpl'); if($this->product->id_category_default==7){ $this->setTemplate(_PS_THEME_DIR_.'product1.tpl');} todos los articulos donde quiero que aparezca el banner estan categoria por defecto 7. De esta forma los articulos que estan asi me muestran el product1.tpl y el resto me muestran el product.tpl normal. He creado el fichero product1.tpl y estoy intentando mostrar bajo el "add to cart" una imagen (aunque aun no lo he conseguido ). La posicion donde quiero insertar la imagen (o si pudiera ser codigo html) la he encontrado. Os seguire contando, o si se os ocurre alguna cosa para ayudarme, os lo agradeceria. Un saludo. Link to comment Share on other sites More sharing options...
ventura Posted January 12, 2016 Share Posted January 12, 2016 (edited) Con lo que estas haciendo condicionaras TODO el contenido de la pagina de producto, no ya el banner del modulo con su contenido. Con lo que te puse al principio no necesitas el smarty.get, puedes acceder directamente desde el .tpl del modulo a cualquier variable del objeto Product, ejemplo $product->id_category_default Edited January 12, 2016 by ventura (see edit history) Link to comment Share on other sites More sharing options...
chinchoso Posted January 12, 2016 Author Share Posted January 12, 2016 Disculpa mi ignorancia. Esto es lo que aparece en el tpl del modulo {* * @author Miguel Costa for emotionLoop * @copyright emotionLoop *} {$content|escape:nofilter} Si quisiera que se mostrara el modulo en todos los productos donde el id_category_default sea el 7 lo que deberia poner es (creo): $product->id_category_default==7 {* * @author Miguel Costa for emotionLoop * @copyright emotionLoop *} {$content|escape:nofilter} Pero no funciona. Algo me falta. Seguramente error de novato, pero bueno, si me pudieras especificar lo que deberia poner te lo agradeceria. Link to comment Share on other sites More sharing options...
ventura Posted January 12, 2016 Share Posted January 12, 2016 Todo lo que aparecere entre {* *} es codigo comentado que no se aplica en el funcionamiento del archivo .tpl, se utiliza para como en este caso para mostrar creditos o deshabilitar codigo. Luego: {$content|escape:nofilter} es la variable que incluye todo el contenido que se incluye en el editor de del modulo en el backoffice Para condicionar ese contenido a un parametro, puedes utilizar un condicional como lo estabas haciendo pero de esta manera { if $product->id_category_default==7} {$content|escape:nofilter} {/if} 1 Link to comment Share on other sites More sharing options...
chinchoso Posted January 12, 2016 Author Share Posted January 12, 2016 ¡¡ Funciona perfectamente !! Muchisimas gracias por la ayuda. Esta noche podre dormir tranquilo. Link to comment Share on other sites More sharing options...
chinchoso Posted January 12, 2016 Author Share Posted January 12, 2016 Una ultima cosa. Si quisiera hacer lo mismo pero en las categorias (mostrar modulo en categorias que tiene la misma categoria padre, pero no mostrar el modulo en las demas), se podria hacer de manera mas o menos igual? Link to comment Share on other sites More sharing options...
LibertoBrand Posted February 21, 2016 Share Posted February 21, 2016 Buenas, Mi nombre es Liberto y a razon de este post estoy trasteando con el modulo contentbox y me gustaria saber como puedo ponerle un codigo de ejemplo cuando se instala el modulo, algo parecido a lo que hace este modulo: private function createExampleCookie($id_shop) { $cookielaw = new CookielawClass(); $cookielaw->id_shop = (int)$id_shop; foreach (Language::getLanguages(false) as $lang) { $cookielaw->body_paragraph[$lang['id_lang']] = 'Este sitio web utiliza cookies propias y de terceros para recopilar información con la finalidad de mejorar nuestros servicios, así como el análisis de sus hábitos de navegación. Si continua navegando, supone la aceptación de la instalación de las mismas. El usuario tiene la posibilidad de configurar su navegador pudiendo, si así lo desea, impedir que sean instaladas en su disco duro, aunque deberá tener en cuenta que dicha acción podrá ocasionar dificultades de navegación de página web.'; } return $cookielaw->add(); } La idea es que por defecto al instalar el modulo contentbox ya tenga el codigo que yo quiero puesto para no tener que pegarlo despues. Gracias. 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