Jump to content

Se me ha salido el slider y anda a su aire -SOLUCIONADO-


Recommended Posts

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

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

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

Menuda paranoyas  te estas montando. xD

 

¿Pequeño de que?

 

Me refiero a esto:

 

Slider cambiado de sitio en plantilla default:

 

k1n8.jpg

 

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:

 

ea3j.jpg

 

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

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

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

 

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

 

Y otra cosa, hagas lo que hagas, mucha suerte.

Link to comment
Share on other sites

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

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

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

Ya lo tengo otra vez, me ha funcionado poniendo este código en el FrontController.php que va a la carpeta override.

 

 

<?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(
                /* === 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

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

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