Jump to content

Modificación backoffice (apartado SEO+URLs)


Recommended Posts

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!

post-1230386-0-26816300-1465201808_thumb.png

Link to comment
Share on other sites

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.');
            }
  • Like 1
Link to comment
Share on other sites

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

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

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!! :)
  • Like 1
Link to comment
Share on other sites

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

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

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

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

 

  • Like 1
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...