SergioCM Posted June 6, 2016 Share Posted June 6, 2016 Buenos días, Me gustaría añadir un nuevo campo de texto en el apartado Preferencias>SEO+URLs del backoffice de prestashop, que mostraría un campo de la base de datos (ya lo tengo creado) y permitiría su modificación. El problema esque no se donde se encuentra el tpl (supongo que será un tpl) donde se encuentra el código html de esta apartado del backoffice. ¿Alguien puede hecharme una mano? Adjunto una imagen para que quede mas claro. Gracias de antemano! Link to comment Share on other sites More sharing options...
buhoplace Posted June 6, 2016 Share Posted June 6, 2016 Esta en la linea 160 de AdminMetaController, en controllers/admin; if (!Shop::isFeatureActive()) { $this->url = ShopUrl::getShopUrls($this->context->shop->id)->where('main', '=', 1)->getFirst(); if ($this->url) { $shop_url_options['description'] = $this->l('Here you can set the URL for your shop. If you migrate your shop to a new URL, remember to change the values below.'); $shop_url_options['fields'] = array( 'domain' => array( 'title' => $this->l('Shop domain'), 'validation' => 'isString', 'type' => 'text', 'defaultValue' => $this->url->domain, ), 'domain_ssl' => array( 'title' => $this->l('SSL domain'), 'validation' => 'isString', 'type' => 'text', 'defaultValue' => $this->url->domain_ssl, ), 'uri' => array( 'title' => $this->l('Base URI'), 'validation' => 'isString', 'type' => 'text', 'defaultValue' => $this->url->physical_uri, ) ); $shop_url_options['submit'] = array('title' => $this->l('Save')); } } else { $shop_url_options['description'] = $this->l('The multistore option is enabled. If you want to change the URL of your shop, you must go to the "Multistore" page under the "Advanced Parameters" menu.'); } 1 Link to comment Share on other sites More sharing options...
SergioCM Posted June 6, 2016 Author Share Posted June 6, 2016 Muchas gracias por tu respuesta y por contestar tan rapido! He añadido un nuevo campo el problema es que ahora no me guarda el dato que introduzco. Quiero que se me guarde en un campo que cree en la tabla ps_shop_uri que es un texto. ¿Debo modificar alguna clase? Muchas gracias! Link to comment Share on other sites More sharing options...
buhoplace Posted June 6, 2016 Share Posted June 6, 2016 Si, la class Meta, en classes, añade la variable publica con el nombre de tu columna, y en definition tambien 1 Link to comment Share on other sites More sharing options...
buhoplace Posted June 6, 2016 Share Posted June 6, 2016 Perdón, ahi no es, las esta guardando en config y en la tabla shop_url a la vez, la clase de esa tabla es shop/shopurl Link to comment Share on other sites More sharing options...
SergioCM Posted June 6, 2016 Author Share Posted June 6, 2016 No me funciona añadiéndolo ahi....He visto que en classes/shop en el documento ShopUrl.php es donde crea las variables que estan en la misma tabla donde yo cree la mía (ps_shop_url) pero creando la variable aquí tampoco consigo que me la guarde....además me interesaria que fuera un texto bastnate largo. ¿Puedes explicarme un poco más acerca de este tema? Muchisimas gracias por tu atención. Link to comment Share on other sites More sharing options...
SergioCM Posted June 6, 2016 Author Share Posted June 6, 2016 Efectivamente ya localize donde es. Aún asi al parecer el texto lo está cargando bien de la bd pero no me lo guarda...¿Porque puede ser? Link to comment Share on other sites More sharing options...
SergioCM Posted June 6, 2016 Author Share Posted June 6, 2016 ¿Alguien puede seguir echandome una mano? Link to comment Share on other sites More sharing options...
buhoplace Posted June 6, 2016 Share Posted June 6, 2016 Dentro de la funcion updateOptionPsRewritingSettings() añade: $this->updateOptionNewOpction(Tools::getValue('NOMBRE_DEL_INPUT_DEL_FORM')); (encima de $this->updateOptionDomain(Tools::getValue('domain')); por ejemplo) pon esta funcion por ahí, por la line 670 esta bien: public function updateOptionNewOpction($value) { if (!Shop::isFeatureActive() && $this->url && $this->url->myoption != $value) { $this->url->myoption = $value; $this->url->update(); } } sustituye lo de negrita, por el nombre del campo nuevo de la clase que hablábamos antes, aquí se actualiza este valor Si no te va avísame y probamos otra cosa menos limpia. Perdona por la tardanza, ando de exámenes!! 1 Link to comment Share on other sites More sharing options...
SergioCM Posted June 7, 2016 Author Share Posted June 7, 2016 No te preocupes y muchas gracias por tu ayuda! ¿Estas últimas modificaciones serían dentro de la calse ShopUrl? Si es así no encuentro la función que me dices...soy un poco novatillo en esto de Prestashop. Link to comment Share on other sites More sharing options...
SergioCM Posted June 7, 2016 Author Share Posted June 7, 2016 Vale ya lo encontre en AdminMetaController y añadiendo lo que comentas ahroa al darle a guardar desde la página del backoffice donde está el campo se me queda la pantalla en blanco...algo no esta llendo bien =S Link to comment Share on other sites More sharing options...
SergioCM Posted June 7, 2016 Author Share Posted June 7, 2016 Rectifico, había copiado mal una cosa. ¡Va perfecto! Muchas gracias por tus respuestas. ¿Como puedo dar el tema por solucionado? Link to comment Share on other sites More sharing options...
SergioCM Posted June 7, 2016 Author Share Posted June 7, 2016 Sólo una última duda (espero no ser insistente). Ahora para sacar ese dato desde otro tpl (footer.tpl en concreto) ¿Deberia valer con {$url->NOMBRE_CAMPO}? Lo he probado pero así no funciona....¿Alguna sugerencia? Mil gracias. Link to comment Share on other sites More sharing options...
buhoplace Posted June 7, 2016 Share Posted June 7, 2016 Podemos hacer que sea accesible desde cualquier tpl. Vamos a classes/controllers/FrontController; en la línea 428 (aprox), veras un $this->context->smarty->assign(array( debajo estan los valores que va cargando, vamos a añadir el nuestro ya que no veo donde esta el shopurl. Añade esto, dentro del array: 'shopurls' => ShopUrl::getShopUrls($this->context->shop->id)->where('main', '=', 1)->getFirst() ahora podemos acceder al objeto shopurls y a sus atributos; en tu tpl añade; {$shopurls->domain} o {$shopurls->tucampo} Un saludo! espero que te funcione bien 1 Link to comment Share on other sites More sharing options...
SergioCM Posted June 7, 2016 Author Share Posted June 7, 2016 Funciona a la perfección! De nuevos mil gracias. Al fin ya puedo dar el tema por cerrado :) ¿Debo poner [solucionado] en el título o algo asi? Un saludo!! Link to comment Share on other sites More sharing options...
buhoplace Posted June 7, 2016 Share Posted June 7, 2016 Si puedes si, dalo por solucionado, Un saludo Sergio 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