Nivel 5 Posted October 26, 2013 Share Posted October 26, 2013 (edited) Pues eso, en la plantilla de prestacoder, http://prestacoder.com/prestashop-themes/gift-prestashop-theme, como veis tiene el slider en la columna central y yo lo quería debajo de la barra de menú. He seguido los pasos que indica "Nadie" en este post (que aunque el dice que no los siga en la plantilla default funciona) http://victor-rodenas.com/2012/10/23/guia-desplazar-el-slider-debajo-de-la-cabecera-en-prestashop-1-5/, probe también con esto http://www.prestashop.com/forums/topic/256941-module-prestashop-homeslider-on-top-free-modification/, la posición que le he asignado es dentro de Top of pages - 1 Módulo [This hook displays additional elements at the top of your pages] (Nombre técnico:displayTop) Pero el slider se ha puesto como superpuesto a la plantilla, encima del menu, no os puedo poner imagen porque solo me quedan 11k de almacenamiento para poder subir imágenes. Edited October 29, 2013 by Nivel 5 (see edit history) Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 26, 2013 Author Share Posted October 26, 2013 Para poder pasar el Homeslider del displayHome al displayTop tendría que modificar el homeslider.php, seria esto correcto para darle funcionalidad, porque según dreamweaver hay errores y llevo todo el dia para esto, pero como se dice, cortando coj**es se aprende a capar, xD. public function hookDisplayHome() { if(!$this->_prepareHook()) return; public function hookDisplayTop($params) { return $this->hookDisplayHome(); } Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 27, 2013 Author Share Posted October 27, 2013 Lo subo para que no me olvidéis, a ver si mañana puedo continuar. Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 27, 2013 Author Share Posted October 27, 2013 Bueno, ya he conseguido transplantar el slider asi: } public function hookDisplayHome(){ } public function hookDisplayTop() { if(!$this->_prepareHook()) return; El problema ahora es que el hook es demasiado pequeño para tantas cosas, pero eso ya lo dejo para mañana Link to comment Share on other sites More sharing options...
nadie Posted October 27, 2013 Share Posted October 27, 2013 Menuda paranoyas te estas montando. xD ¿Pequeño de que? Link to comment Share on other sites More sharing options...
nadie Posted October 27, 2013 Share Posted October 27, 2013 Pero el slider se ha puesto como superpuesto a la plantilla, encima del menu, no os puedo poner imagen porque solo me quedan 11k de almacenamiento para poder subir imágenes. Puede subir imagenes aquí: http://imageshack.us/ y dejas los enlaces en el foro. (Asi no tendras problemas de espacio en el foro) Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 28, 2013 Author Share Posted October 28, 2013 Menuda paranoyas te estas montando. xD ¿Pequeño de que? Me refiero a esto: Slider cambiado de sitio en plantilla default: Cuando subo el slider automáticamente las columnas centrales y el footer varían su posición y la cabecera se adapta al contenido. Slider cambiado en plantilla prestacoder: El slider se sube a la cabecera pero no se adapta el resto, por tanto he pensado que el hook tiene un tamaño asignado y por eso digo que el hueco es pequeño. Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 28, 2013 Author Share Posted October 28, 2013 En cuanto a lo que pregunto aquí http://www.prestashop.com/forums/topic/284269-hook-displaytop2/ es parecido pero no lo mismo, en el otro quiero saber si para crear esto: Es necesario crear nuevos hooks para que cada parte representada por un color tenga un fondo distinto. Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 28, 2013 Author Share Posted October 28, 2013 Lo consegui, no se como pero es asi, pongo los pasos que he seguido para que me sirva de guía a mi y al que quiera verlo: 1º - he creado un nuevo hook en phpmyadmin siguiendo la guía de Luis Cambras: http://www.luiscambra.com/prestashop/nuevos-hooks-en-prestashop-1-5/ 2º - he modificado en frontcontroller.php añadiendo el nuevo hook: 'HOOK_HEADER' => Hook::exec('displayHeader'), 'HOOK_SLIDERHOOK' => Hook::exec('displaySliderHook'), 'HOOK_TOP' => Hook::exec('displayTop'), 'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''), 'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''), 3º - He añadido en el Header.tpl el Hook, aquí he ido probando sitios hasta que me ha salido donde quería: <div id="header_right" class="grid_6 omega"> {$HOOK_TOP} </div> </div> </div> {$HOOK_SLIDERHOOK} <div id="columns_block"> 4- En el homeslider.php he hecho un cambio a lo bestia cambiando public function hookDisplayHome() por public function hookSliderHook() Traslade el modulo desde el BackOffice y tachaaaaannnn, salio. No se si los pasos son los mas ortodoxos pero ahí esta, ahora me queda modificar el css para que cuadre. Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 28, 2013 Author Share Posted October 28, 2013 No cierro aun el tema porque me gustaría que alguien mas experto le hechara un vistazo por si ve algún error, que los habrá, Link to comment Share on other sites More sharing options...
nadie Posted October 28, 2013 Share Posted October 28, 2013 Ese es el metodo tradicional, lo que yo comento en mi guia http://victor-rodenas.com/2013/07/19/crear-un-nuevo-hook-en-prestashop-1-5/ de crear un hook a mi me funciono tambien. Lo que comentas de modificar el FrontController tambien funciona, si es cierto que debería ser mejor crear un override que modificarlo directamente ,ya que si actualizas, el fichero se machaca y se va al carajo. Siendo no haberte podido ayudar, pero es que como comente en el foro: http://www.prestashop.com/forums/topic/282730-comunicado-de-despedida-de-la-comunidad-por-parte-del-usuario-nadie/?do=findComment&comment=1422288 dejo totalmente el mundo prestashop y el foro y estoy cerrando todas mis cuentas de correos, etc.. Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 28, 2013 Author Share Posted October 28, 2013 Siendo no haberte podido ayudar, pero es como comente en el foro: http://www.prestasho...e/#entry1422288 dejo totalmente el mundo prestashop y el foro y estoy cerrando todas mis cuentas de correos, etc.. Lo primero es que no debes disculparte por nada, por lo que he visto en el foro has sido una persona desinteresada y tremendamente activa. En un foro de este tipo es normal que seamos muchísimos preguntando y poquísimos respondiendo, y veo que has estado en bastantes "fregaos", es normal que te hayas quemado. Lo que comentas de modificar el FrontController es correcto, si es cierto que deberia ser mejor crear un override que modificarlo directamente ,ya que si actualizas, el fichero se machaca y se va al carajo. Seguiré tu consejo, buscare información de lo que es el override, pero a primera vista es algo parecido a los "childs" en wordpress. Me veo otro par de días de búsqueda y lectura hasta que lo consiga Y otra cosa, hagas lo que hagas, mucha suerte. Link to comment Share on other sites More sharing options...
nadie Posted October 28, 2013 Share Posted October 28, 2013 ¿Te digo como hacer el override? (Es muy sencillo) Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 28, 2013 Author Share Posted October 28, 2013 Si me lo dices si, si me lo haces no, xD y después te cuento una cosa, jaja Aunque eso de sencillo entre paréntesis...... pero si quieres probamos Link to comment Share on other sites More sharing options...
nadie Posted October 28, 2013 Share Posted October 28, 2013 En el directorio: /override/classes/controller/ Crea un fichero con este nombre: FrontController.php y este contenido: <?php class FrontController extends FrontControllerCore { public function initContent() { $this->process(); if (!isset($this->context->cart)) $this->context->cart = new Cart(); if ($this->context->getMobileDevice() == false) { // These hooks aren't used for the mobile theme. // Needed hooks are called in the tpl files. if (!isset($this->context->cart)) $this->context->cart = new Cart(); $this->context->smarty->assign(array( 'HOOK_HEADER' => Hook::exec('displayHeader'), 'HOOK_TOP' => Hook::exec('displayTop'), 'HOOK_NUEVOHOOK' => Hook::exec('DisplayNuevoHook'), 'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''), 'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''), )); } else { $this->context->smarty->assign(array( 'HOOK_MOBILE_HEADER' => Hook::exec('displayMobileHeader'), )); } } } --- Despues borra el fichero: /cache/class_index.php para que se regenere el indice de overrides (No te preocupes, este fichero que borras se regenera de nuevo automaticamente) Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 28, 2013 Author Share Posted October 28, 2013 Me imagino que esto: 'HOOK_HEADER' => Hook::exec('displayHeader'), 'HOOK_TOP' => Hook::exec('displayTop'), 'HOOK_NUEVOHOOK' => Module::hookExec('DisplayNuevoHook'), 'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''), 'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''), tendre que sustituirlo por esto: 'HOOK_HEADER' => Hook::exec('displayHeader'),'HOOK_SLIDERHOOK' => Hook::exec('displaySliderHook'),'HOOK_TOP' => Hook::exec('displayTop'),'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''),'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''), Y con el frontcontroller.php original, que hago lo dejo como estaba o lo dejo modificado? Link to comment Share on other sites More sharing options...
nadie Posted October 28, 2013 Share Posted October 28, 2013 Yes. (El otro fichero, dejalo como estaba antiguamente, y este fichero nuevo, escribe lo que te he comentado, y luego cambiar lo de nuevo por el nombre del hook ese que ahora has creado) Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 28, 2013 Author Share Posted October 28, 2013 Al cambiar el frontcontroller.php original me desaparece el slider, puufff esto es interminable. Link to comment Share on other sites More sharing options...
nadie Posted October 28, 2013 Share Posted October 28, 2013 El original dejalo como estaba antiguamente. Crea el override que te he dicho. Y luego recuerda borrar el fichero que te he comentado de: /cache/class_index.php si no, prestashop no te leera el nuevo override. Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 28, 2013 Author Share Posted October 28, 2013 Nada, lo he hecho todo desde cero y nada, si no modifico el frontcontroler original no aparece el slider, os recuerdo que la plantilla es la de prestacoder, no la default. Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 29, 2013 Author Share Posted October 29, 2013 Hoy lo he vuelto a hacer desde cero de nuevo y cuando hago el override desaparece el slider, el FrontController nuevo se pone en la carpeta /override/classes/controller/ del raíz, no? porque en la carpeta del tema hay otro Frontcontroller Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 29, 2013 Author Share Posted October 29, 2013 Ya lo tengo otra vez, me ha funcionado poniendo este código en el FrontController.php que va a la carpeta override. <?phpclass FrontController extends FrontControllerCore{ public function initContent() { $this->process(); if (!isset($this->context->cart)) $this->context->cart = new Cart(); if ($this->context->getMobileDevice() == false) { // These hooks aren't used for the mobile theme. // Needed hooks are called in the tpl files. if (!isset($this->context->cart)) $this->context->cart = new Cart(); $this->context->smarty->assign(array( /* === START: DO NOT TOUCH IT */ 'HOOK_HEADER' => Hook::exec('displayHeader'), 'HOOK_SLIDERHOOK' => Hook::exec('displaySliderHook'), 'HOOK_TOP' => Hook::exec('displayTop'), 'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''), 'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''), /* === END: DO NOT TOUCH IT */ /* === START: ADD HOOK | EXAMPLE */ 'HOOK_MY_USER' => Module::hookExec('myUser'), 'HOOK_MY_CATEGORIES' => Module::hookExec('myCategories'), 'HOOK_SEARCH' => Module::hookExec('mySearch') /* === END: ADD HOOK | EXAMPLE */ )); } else { $this->context->smarty->assign(array( 'HOOK_MOBILE_HEADER' => Hook::exec('displayMobileHeader'), )); } }} Link to comment Share on other sites More sharing options...
nadie Posted October 29, 2013 Share Posted October 29, 2013 Ya lo tengo otra vez, me ha funcionado poniendo este código en el FrontController.php que va a la carpeta override. ¿Pero no es lo que te dije yo aquí: http://www.prestashop.com/forums/topic/284646-se-me-ha-salido-el-slider-y-anda-a-su-aire/?view=findpost&p=1436848 ? Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 29, 2013 Author Share Posted October 29, 2013 No se decirte técnicamente que diferencias hay, este que he puesto tiene mas líneas, cuando ponía el código al que me haces referencia me desaparecía el slider. Puede ser por esto: <?php Link to comment Share on other sites More sharing options...
nadie Posted October 29, 2013 Share Posted October 29, 2013 No se decirte técnicamente que diferencias hay, este que he puesto tiene mas líneas, cuando ponía el código al que me haces referencia me desaparecía el slider. Puede ser por esto: <?php Efectivamente se me colo la apertura de la etiqueta php en mi mensaje xD (Sorry) ¿Entonces solventando? Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 29, 2013 Author Share Posted October 29, 2013 Vale, he hecho la prueba para ver si era eso, y poniendo esa etiqueta y tu código también funciona. Link to comment Share on other sites More sharing options...
nadie Posted October 29, 2013 Share Posted October 29, 2013 Vale, he hecho la prueba para ver si era eso, y poniendo esa etiqueta y tu código también funciona. ¿Entonces solventando? PD: Añade la palabra "Solucionado" al titulo del tema, si es asi. Link to comment Share on other sites More sharing options...
Nivel 5 Posted October 29, 2013 Author Share Posted October 29, 2013 Si solucionado, ahora lo edito. Link to comment Share on other sites More sharing options...
Recommended Posts