Jump to content

URL en combinaciones de producto Prestashop 1.7


MD85

Recommended Posts

Buenos d铆as,

He estado buscando pero no encuentro soluci贸n. Tengo una web en Prestashop 1.5 y estoy realizando otra en Prestashop 1.7. Mi sorpresa es que las urls de las combinaciones de producto no se pueden configurar como en Prestashop 1.5. Quedando en la nueva versi贸n del siguiente modo:

mitienda/es/159-199-producto.html#/66-combinacion-de-producto

Cuando realmente quiero que se quede:

mitienda/es/159-producto.html#/combinacion-de-producto_

Espero que me puedan ayudar, muchas gracias.

Edited by MD85 (see edit history)
Link to comment
Share on other sites

Buenas tardes,

tendr铆as que irte a聽 聽 "Par谩metros de la tienda聽 > Seo y URLs" , tienes que hacer scroll y bajar hasta聽 "Formatos de Enlaces"

聽Hay se cambian las urls.

He estado haciendo pruebas y cambiando la sintaxis de los productos, lo m谩ximo que he conseguido es esto聽 聽 {id}-{rewrite}.html{id_product_attribute} cuando la sintaxis que trae por defecto prestashop 1.7 es聽{category:/}{id}{-:id_product_attribute}-{rewrite}{-:ean13}.html

Si聽 buscas informaci贸n sobre diferencia entre "Formatos de Enlaces" de prestashop 1.5 y 1.7 quizas encuentres la soluci贸n.

Si encuentro un hueco intento terminartelo.

聽聽

url.png

  • Like 1
Link to comment
Share on other sites

He probado el m贸dulo y parece que no funciona con las ultimas versiones de prestashop 1.7.

En el post de Victor Rodenas hay dos enlaces a m贸dulos que solventan el problema de los id en las urls. Aunque supongo que habr谩 muchos m谩s.

https://www.psitsolution.com/prestashop-seo-clean-urls/es/

https://codecanyon.net/item/prestashop-seo-friendly-url-module/16070024?irgwc=1&clickid=y6URRv0IoxyJWTZ0RFzYkRCrUkgWYUQe5Rtf0Q0&iradid=275988&irpid=1312355&iradtype=ONLINE_TRACKING_LINK&irmptype=mediapartner&mp_value1=&utm_campaign=af_impact_radius_1312355&utm_medium=affiliate&utm_source=impact_radius

En tu caso quieres quitar los id de las categor铆as y de los atributos, no se si los聽m贸dulos permiten esto. De todos modos aunque instales un m贸dulo supongo que tendras que modificar la sintaxis del聽 聽"Formatos de Enlaces" para adaptarlo a lo que tu quieres.

  • Like 1
Link to comment
Share on other sites

Buenas tardes Fran,

Muchas gracias por la informaci贸n. Claro, no puedo borrar todas las id porque mis urls tienen id (mitienda/es/159-producto.html#/combinacion-de-producto_), en Prestashop 1.7 lo que tienen es id duplicada en el producto + id en la combinaci贸n (mitienda/es/159-199-producto.html#/66-combinacion-de-producto). Ni tampoco se puede formular la url con el formato que uno quiera. Lo que necesito es poder darle a las urls de combinaciones el formato que antes ten铆a en Prestashop 1.5.

Espero que me pod谩is ayudar, es muy importante tengo mi web creada e indexada en Prestashop 1.5.

Gracias.

Un聽 saludo.

Edited by MD85 (see edit history)
Link to comment
Share on other sites

Creo que no se puede, no se exactamente desde que version .

He probado muchos modulos de reescritura de url y no recuerdo que en ninguno lo puedas hacer.

Otra cosa seria a帽adir un override para que no lo hiciera. siempre y cuando se pudiera.

Prueba a a帽adir esta misma pregunta en el apartado ingles , a ver si ahi te pueden ayudar mejor.

Puede que al final vas a tener que hacer un fichero tipo sitemap para a帽adirlo al htaccess y redirigir las URL viejas a las nuevas.

  • Like 1
Link to comment
Share on other sites

Hola de nuevo Sara,

He estado mirando y :

-聽 el "199" es la posici贸n del atributo o combianci贸n y se puede eliminar sin problema.

- el "66"聽 es聽 el id del atributo y solo se puede eliminar cambiando el c贸digo fuente (que no se como se hace) o instalando un m贸dulo para eliminarlo.

Hay muchos m贸dulos para esto, si buscas聽 en google "eliminar id聽 en url prestashop 1.7"聽 te salr谩 un monton de resultados de m贸dulos y videos explicativos.

No se puede hacer de otra manera.

Te recomiendo que antes de comprar uno, contactes con el vendedor y le preguntas que solo quieres eliminar el n煤mero聽de la posicci贸n del atributo (en tu ejemplo "199") y el id聽 del atributo (en tu ejemplo "66"). Si te contestan es que tienen un buen servicio al cliente que es importat铆simo por si tienes algun problema.

Te dejo un link del video de聽聽uno de estos m贸dulos para que veas como actuan estos m贸dulos:

Si te gusta te dejo el para que contactes con la empresa, aunque ya tee he dicho que hay muchos,聽 investiga y compra el que mas te guste.

https://www.sunnytoo.com/product/prestashop-removing-ids-urls-module-seo-friendly?wpam_id=1

  • Like 2
Link to comment
Share on other sites

Ah, se me olvidaba, comprueba que las urls de las categor铆as y p谩ginas cms como "contacte con nosotros" y dem谩s tengan la misma extructura quee la de tu prestashop 1.5.

Por otro lado, en el apartado Internacional>Localizaci贸n pesta帽a Geolocalizaci贸n, no actives la "geolocalizaci贸n por ip" porque da聽 errores 503 y tampoco restringas ningun pa铆s porque el robot de google puede estar en cualquier pa铆s.

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...
  • 1 month later...

驴Alguien sabe como cambiar las estructuras de las urls desde c贸digo? Me da igual que las urls que no sean combinaciones tengan ids. Tengo urls indexadas y quiero lo m谩s sencillo para que las urls de las combinaciones sean como en versiones anteriores.

En la actualidad est谩 as铆 {id}{-:id_product_attribute}-{rewrite}{-:ean13}.html y la quiero dejar as铆聽{id}-{rewrite}{-:ean13}.html, quiero eliminar聽{-:id_product_attribute}

Necesitamos ayuda, gracias.

Edited by MD85 (see edit history)
Link to comment
Share on other sites

si q se puede. mira este ps 1.7

https://www.xtremegrow.com/armario-cultivo-cultibox-light#/109-tamano-60_x_60_x_140_cm

https://www.xtremegrow.com/armario-cultivo-cultibox-light#/111-tamano-80_x_80_x_160_cm

con esto agrego聽la combinacion a la url, 聽esero q sirva

export function checkUrl() {
    let original_url = window.location + '';
    let first_url_check = true;
    if (original_url != window.location || first_url_check)
    {
      let first_url_check = false;
      let url = window.location + '';
      // if we need to load a specific combination
      if (url.indexOf('#/') != -1)
      {
        // get the params to fill from a "normal" url
        let params = url.substring(url.indexOf('#') + 1, url.length);
        let tabParams = params.split('/');
        let tabValues = [];
        if (tabParams[0] == '')
          tabParams.shift();

        let len = tabParams.length;
        for (let i=0; i<len; i++)
        {
          tabParams[i] = tabParams[i].replace('/', '-');
          tabValues.push(tabParams[i].split('-'));
        }
         return tabValues;
      }
      	return;
    }

  • Like 1
Link to comment
Share on other sites

Gracias por la ayuda, pero no servir铆a ya que la combinaci贸n sigue apareciendo en la url y con id.

Necesito que la url del producto con combinaci贸n sea聽www.miweb.com/es/152-producto.html y cuando seleccionas combinaciones聽www.miweb.com/es/152-producto.html#/combinacion

Gracias

Link to comment
Share on other sites

13 hours ago, MD85 said:

Gracias por la ayuda, pero no servir铆a ya que la combinaci贸n sigue apareciendo en la url y con id.

Necesito que la url del producto con combinaci贸n sea聽www.miweb.com/es/152-producto.html y cuando seleccionas combinaciones聽www.miweb.com/es/152-producto.html#/combinacion

Gracias

pr vamos a ver, que mas da q salgan las ids聽en las combinaciones si esas urls no se indexan.

Porque motivo quieres quitar las ids del trozo de las combioanciones en la url?

Edited by burrots (see edit history)
  • Like 1
Link to comment
Share on other sites

On 3/15/2019 at 2:13 AM, burrots said:

pr vamos a ver, que mas da q salgan las ids聽en las combinaciones si esas urls no se indexan.

Porque motivo quieres quitar las ids del trozo de las combioanciones en la url?

Muchas gracias, puede ser una soluci贸n. Lo que me choca es que cuando eliges un producto la url ya aparece con la combinaci贸n, 驴se podr铆a hacer para que no apareciera la combinaci贸n por defecto?

驴Me puedes decir la ruta para agregar o modificar el c贸digo?

Mil gracias.

Link to comment
Share on other sites

1 hour ago, burrots said:

solo por curiosidad?

pk kieres k al entrar el producto lo haga sin la combiancion en la url?

Veo la url mucho m谩s limpia, las urls son muy largas,聽cuando alguien copie y pegue la url esta copiando la url de una combinaci贸n no del producto...聽

Pero sino se puede agradecer铆a que me dijeras donde tengo que incluir o modificar el c贸digo ya que lo quiero emplear.

Gracias de nuevo.

Link to comment
Share on other sites

hace 48 minutos, MD85 dijo:

Veo la url mucho m谩s limpia, las urls son muy largas,聽cuando alguien copie y pegue la url esta copiando la url de una combinaci贸n no del producto...聽

Pero sino se puede agradecer铆a que me dijeras donde tengo que incluir o modificar el c贸digo ya que lo quiero emplear.

Gracias de nuevo.

A帽ade productos independientes, sin combinaciones, se acabo el problema de ids en la url.

Fuera co帽as, si un producto tiene combinaciones se deben mostrar o el sistema es imposible que sepa que combinaci贸n quiere el comprador.

Quieres mostrar un producto con combinaciones sin la url de la combinacion, recuerda que siempre hay una por defecto, no se puede o cada vez que entre un posible cliente al a帽adir al carrito dara error porque no hay una combinacion "elegida" al leer ese dato de la url.

Que al copiar y pegar es larga la URL, prueba a copiar una de Amazon y veras lo que son url largas

SEO y URL limpias y cortas-> personalmente creo que se toma muy en serio esto, si lo quieres totalmente limpio, productos independientes y que solo puedan comprar 1 color o 1 talla, si quieren tener otro color o talla a帽ade enlace al otro producto independiente y que visiten el otro producto y lo compren.

Link to comment
Share on other sites

58 minutes ago, gusman126 said:

A帽ade productos independientes, sin combinaciones, se acabo el problema de ids en la url.

Fuera co帽as, si un producto tiene combinaciones se deben mostrar o el sistema es imposible que sepa que combinaci贸n quiere el comprador.

Quieres mostrar un producto con combinaciones sin la url de la combinacion, recuerda que siempre hay una por defecto, no se puede o cada vez que entre un posible cliente al a帽adir al carrito dara error porque no hay una combinacion "elegida" al leer ese dato de la url.

Que al copiar y pegar es larga la URL, prueba a copiar una de Amazon y veras lo que son url largas

SEO y URL limpias y cortas-> personalmente creo que se toma muy en serio esto, si lo quieres totalmente limpio, productos independientes y que solo puedan comprar 1 color o 1 talla, si quieren tener otro color o talla a帽ade enlace al otro producto independiente y que visiten el otro producto y lo compren.

en ps 1.7 si peudes tener una url sin combinacion aunque el producto tenga.

Mira ejemplo demo 1.7

http://fo.demo.prestashop.com/es/art/3-the-best-is-yet-to-come-framed-poster.html

esta seria la caninca del prodcto id 3, que si accedes te hara un 301 hacia la url x defecto, en este caso:

http://fo.demo.prestashop.com/es/art/3-13-the-best-is-yet-to-come-framed-poster.html

Saludos

  • Like 1
Link to comment
Share on other sites

Ok, a lo de canonica, ira directo a la combinaci贸n por defecto.

al cambiar a otras combinaciones vuelve a aparecer la url de combinaci贸n y si pones la combinaci帽贸n por defecto seguira mostrando la url.

Aunque lo dicho, no controlo el SEO de URLs pero en muchas ocasiones las url limpias son mas para direcciones de servicios o entradas en el blog que para productos. no es un mensaje de SEO por lo que se puede hacer un tema de esto y no seguir contestando aqui.

Link to comment
Share on other sites

1 hour ago, gusman126 said:

Aunque lo dicho, no controlo el SEO de URLs pero en muchas ocasiones las url limpias son mas para direcciones de servicios o entradas en el blog que para productos. no es un mensaje de SEO por lo que se puede hacer un tema de esto y no seguir contestando aqui.

Totalmente de acuerdo, lo d quitar ids es mas una pijeria q nada mas.

importa mas q haya keywords en las urls y聽sean cortas q tengan o no ids

  • Like 1
Link to comment
Share on other sites

On 1/3/2019 at 3:21 PM, Fran Ram铆rez said:

Hola de nuevo Sara,

He estado mirando y :

-聽 el "199" es la posici贸n del atributo o combianci贸n y se puede eliminar sin problema.

- el "66"聽 es聽 el id del atributo y solo se puede eliminar cambiando el c贸digo fuente (que no se como se hace) o instalando un m贸dulo para eliminarlo.

Hay muchos m贸dulos para esto, si buscas聽 en google "eliminar id聽 en url prestashop 1.7"聽 te salr谩 un monton de resultados de m贸dulos y videos explicativos.

No se puede hacer de otra manera.

Te recomiendo que antes de comprar uno, contactes con el vendedor y le preguntas que solo quieres eliminar el n煤mero聽de la posicci贸n del atributo (en tu ejemplo "199") y el id聽 del atributo (en tu ejemplo "66"). Si te contestan es que tienen un buen servicio al cliente que es importat铆simo por si tienes algun problema.

Te dejo un link del video de聽聽uno de estos m贸dulos para que veas como actuan estos m贸dulos:

Si te gusta te dejo el para que contactes con la empresa, aunque ya tee he dicho que hay muchos,聽 investiga y compra el que mas te guste.

https://www.sunnytoo.com/product/prestashop-removing-ids-urls-module-seo-friendly?wpam_id=1

Much铆simas gracias @Fran Ram铆rez!聽 Por chafardear me llevo algo muy bueno que no ten铆a ni idea de que se pod铆a hacer.聽

Implementado y funcionando, muy f谩cil. Incluso para un inexperto como yo.聽

Gracias!聽

Link to comment
Share on other sites

On 3/14/2019 at 2:07 AM, burrots said:

si q se puede. mira este ps 1.7

https://www.xtremegrow.com/armario-cultivo-cultibox-light#/109-tamano-60_x_60_x_140_cm

https://www.xtremegrow.com/armario-cultivo-cultibox-light#/111-tamano-80_x_80_x_160_cm

con esto agrego聽la combinacion a la url, 聽esero q sirva


export function checkUrl() {
    let original_url = window.location + '';
    let first_url_check = true;
    if (original_url != window.location || first_url_check)
    {
      let first_url_check = false;
      let url = window.location + '';
      // if we need to load a specific combination
      if (url.indexOf('#/') != -1)
      {
        // get the params to fill from a "normal" url
        let params = url.substring(url.indexOf('#') + 1, url.length);
        let tabParams = params.split('/');
        let tabValues = [];
        if (tabParams[0] == '')
          tabParams.shift();

        let len = tabParams.length;
        for (let i=0; i<len; i++)
        {
          tabParams[i] = tabParams[i].replace('/', '-');
          tabValues.push(tabParams[i].split('-'));
        }
         return tabValues;
      }
      	return;
    }

Hola,聽

驴Me puedes decir donde incluir ese c贸digo?聽

Gracias.

Link to comment
Share on other sites

Quote

Hola,聽

驴Me puedes decir donde incluir ese c贸digo?聽

Gracias.

En ES6 creo la clase para exportar como decia antes

export function checkUrl() {
    let original_url = window.location + '';
    let first_url_check = true;
    if (original_url != window.location || first_url_check)
    {
      let first_url_check = false;
      let url = window.location + '';
      // if we need to load a specific combination
      if (url.indexOf('#/') != -1)
      {
        // get the params to fill from a "normal" url
        let params = url.substring(url.indexOf('#') + 1, url.length);
        let tabParams = params.split('/');
        let tabValues = [];
        if (tabParams[0] == '')
          tabParams.shift();

        let len = tabParams.length;
        for (let i=0; i<len; i++)
        {
          tabParams[i] = tabParams[i].replace('/', '-');
          tabValues.push(tabParams[i].split('-'));
        }
         return tabValues;
      }
      	return;
    }

Luego en product.js

Importamos class y creamos funcion q haga el cambio de combinaci贸n si la detecta en la url

import {checkUrl} from './components/common';

function checkurl() {
	let checkurl = checkUrl();
    if (checkurl) {
		$('.product-variants select option').attr('selected', false);
		$('.product-variants [type="radio"]').attr('checked', false);
		$(checkurl).each((i, el) => {
        	$('.product-variants select option[value="' + el[0] + '"]').attr('selected', true);
        	$('.product-variants [type="radio"][value="' + el[0] + '"]').attr('checked', true)
      	});
    	$("input[name$='refresh']").click();
 	}
}

Y lo inicimos asi:

$(document).ready(function () {
	checkurl()
});

Suerte

Link to comment
Share on other sites

Buenos d铆as,

Llevo unos d铆as intent谩ndolo pero no se modifica nada.聽

El primer c贸digo lo incluyo en el archivo common聽

El segundo c贸digo en la parte superior de product.js y el checkrul en el apartado que se indica pero no hay manera.

驴Es as铆?聽

Muchas gracias.

Edited by MD85 (see edit history)
Link to comment
Share on other sites

2 hours ago, MD85 said:

Buenos d铆as,

Llevo unos d铆as intent谩ndolo pero no se modifica nada.聽

El primer c贸digo lo incluyo en el archivo common聽

El segundo c贸digo en la parte superior de product.js y el checkrul en el apartado que se indica pero no hay manera.

驴Es as铆?聽

Muchas gracias.

compilas con webpack?

esa es la manera en q lo tengo yo... pr si no utilzas webpack debes utilzar js tradicional e incluir todo eso en el custom.js

Link to comment
Share on other sites

He incluido dicho c贸digo en custom.js y tampoco, o 驴es hacer un m贸dulo? No tengo conocimientos para eso.聽聽:(

Aparece en las combinaciones ese error y la url no se modifica, es m谩s ahora no se ven las combinaciones aparece el error:

ContextErrorExceptioninsmarty_internal_templatebase.php(157) : eval()'d code line 39:Notice: Undefined index: id_lang

Si desactivo el modulo relatedfree se ven las combinaciones, pero necesito tenerlo activado he tenido que meter todos los productos relacionados a mano.

Ahora si que necesito ayuda, es un gran problema.

Edited by MD85 (see edit history)
Link to comment
Share on other sites

9 hours ago, burrots said:

q raro.

No tendras modo errores activado.

busca en algun tpl del modulo ese la variable y prueba a cambiarla por esto

{$this->context->language->id}

Suerte

Si, ya est谩 solucionado. He reiniciado el servidor y quitado el modo debug y se ha solucionado, vaya susto.

驴Pero tu soluci贸n es crear un m贸dulo o solamente incluirlo en esos archivos?

Gracias.

Link to comment
Share on other sites

6 hours ago, MD85 said:

Si, ya est谩 solucionado. He reiniciado el servidor y quitado el modo debug y se ha solucionado, vaya susto.

驴Pero tu soluci贸n es crear un m贸dulo o solamente incluirlo en esos archivos?

Gracias.

relamente el problema sigue existiendo pero te funciona al desactivar debug, no sera algo grave...

lo q te decia era para implementar en el theme, en custom.js, pero tambien te faltaria la parte de modificar las llamadas ajax en el controller para enviarle la id_attribute, modifcar getproductlink para q te聽las saque聽con el anchor, etc. Lo veo muy lioso para ti

Creo q hay modulos q te sacan las ids d las combinaciones.

Aunque repito, veo q estas perdiendo energias y聽tiempo en un tema q tiene 0 repercusion en trafico y posicionameinto.

Suerte

  • Like 1
Link to comment
Share on other sites

  • 1 year later...

Hola a todos.

Un cliente ten铆a la URL con este formato聽{id}{-:id_product_attribute}-{rewrite}{-:ean13}.html y me ha pedido que lo deje en este formato聽{id}-{rewrite}{-:ean13}.html . Ya tengo la soluci贸n para eliminar el id_product_attribute, pero no soy capaz de hacer una redirecci贸n 301 en el .htaccess desde la url que incluye el ID del atributo a la nueva URL. 驴Alguien sabr铆a como implementar esta regla?

Un saludo.

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...