ikku Posted August 7, 2014 Share Posted August 7, 2014 Hola, Estoy modificando una funcion del modulo blocktopmenu de prestashop 1.6, como no tengo el suficiente conocimiento para hacer mi propio modulo lo modifico sobre el que existe. He hecho alguna modificación básica, de incluir unos class en el html y sin problema, pero ahora quiero manipular un string y para ello necesito el substring before y el after, por lo que creo una funcion del tipo private function between ($this, $that, $inthat) { return before ($that, after($this, $inthat)); } Guardo compilo y la página no me carga, si la borro, carga perfectamente, ¿hay alguna manera de crear las funciones que no esté haciendo bien? Muchas gracias Link to comment Share on other sites More sharing options...
Enrique Gómez Posted August 7, 2014 Share Posted August 7, 2014 donde estas poniendo esa función, en un fichero .tpl o en un php? Link to comment Share on other sites More sharing options...
ikku Posted August 7, 2014 Author Share Posted August 7, 2014 En el php blocktopmenu.php Link to comment Share on other sites More sharing options...
Enrique Gómez Posted August 7, 2014 Share Posted August 7, 2014 No es buena idea tener $this como nombre de variable ya que se usa como referencia al objeto actual. Ponle otro nombre. P.ej private function between ($thism, $that, $inthat) { return before ($that, after($thism, $inthat)); } Link to comment Share on other sites More sharing options...
ikku Posted August 7, 2014 Author Share Posted August 7, 2014 Cierto, que tontería no me había fijado, lo pruebo a ver si es por eso. Muchas gracias Link to comment Share on other sites More sharing options...
ikku Posted August 7, 2014 Author Share Posted August 7, 2014 Hola, Pues si era eso, ahora si me deja incluirla, pero no usarla. Intento usarla después de la forma: $descripcion=''; if (strpos($category[name],'-') !== false && (int)$category['level_depth'] >2) $descripcion = before('ab','b'); } Y si no pongo lo de dentro del if carga, pero nada mas ponerlo, no me carga... Link to comment Share on other sites More sharing options...
jesa Posted August 8, 2014 Share Posted August 8, 2014 Has creado una función llamada between y estás llamando a una función before. Link to comment Share on other sites More sharing options...
ikku Posted August 8, 2014 Author Share Posted August 8, 2014 Hola, las funciones before y after también están declaradas de la forma: private function before ($thisin, $inthat) { return substr($inthat, 0, strpos($inthat, $thisin)); } También he intentado ponerlas en la clase Tools, pero nada mas ponerlas, no carga Link to comment Share on other sites More sharing options...
Enrique Gómez Posted August 8, 2014 Share Posted August 8, 2014 Pon Presta en mode debug: config/defines.inc.php define('_PS_MODE_DEV_', true); Así veras los errores. Link to comment Share on other sites More sharing options...
ikku Posted August 8, 2014 Author Share Posted August 8, 2014 Pues me dice: Call to undefined function after() Pero está definida, así lo tengo. ¿Hay que incluirla en algún otro sitio? Link to comment Share on other sites More sharing options...
Enrique Gómez Posted August 8, 2014 Share Posted August 8, 2014 Ten en cuenta que estas en una clase. Tienes que llamar $this->after() Link to comment Share on other sites More sharing options...
ikku Posted August 8, 2014 Author Share Posted August 8, 2014 OK, muchas gracias, voy a probar así. He estado intentando mas cosas y había pensado hacer un override de la clase Tools e incluir ahí las dos funciones y llamarlo después con Tools::afer() ¿así también valdría no? Link to comment Share on other sites More sharing options...
Enrique Gómez Posted August 8, 2014 Share Posted August 8, 2014 OK, muchas gracias, voy a probar así. He estado intentando mas cosas y había pensado hacer un override de la clase Tools e incluir ahí las dos funciones y llamarlo después con Tools::afer() ¿así también valdría no? Efectivamente pero haz un método public static. Al sobrescrivir no te olvides borrar el fichero class_index.php de la carpeta cache Link to comment Share on other sites More sharing options...
ikku Posted August 12, 2014 Author Share Posted August 12, 2014 Ahora si, solucionado Link to comment Share on other sites More sharing options...
Recommended Posts