{"id":5356,"date":"2016-09-30T13:17:06","date_gmt":"2016-09-30T13:17:06","guid":{"rendered":"https:\/\/www.k3bone.com\/blog\/?p=5356"},"modified":"2016-09-30T13:17:06","modified_gmt":"2016-09-30T13:17:06","slug":"categorias-y-error-404-en-prestashop","status":"publish","type":"post","link":"https:\/\/www.k3bone.com\/blog\/2016\/09\/categorias-y-error-404-en-prestashop\/","title":{"rendered":"Categor\u00edas y error 404 en PrestaShop"},"content":{"rendered":"<p>Recientemente nos hemos encontrado con un error\u00a0no reportado por\u00a0<strong>PrestaShop<\/strong> que nos ha vuelto bastante locos:<\/p>\n<blockquote><p>ERROR 404<br \/>\nP\u00c1GINA NO DISPONIBLE.<br \/>\nLO SENTIMOS, LA P\u00c1GINA NO SE ENCUENTRA DISPONIBLE.<\/p><\/blockquote>\n<p>Este <strong>error 404 en PrestaShop<\/strong>\u00a0aparece en la tienda al hacer clic en cualquiera de las categor\u00edas que hemos creado dentro del backoffice de PrestaShop. En concreto,\u00a0nos ha surgido en un ecommerce versi\u00f3n 1.6 de <strong>PrestaShop\u00a0<\/strong>con\u00a0<strong>multitienda <\/strong>activada\u00a0y con las \u00faltimas actualizaciones <em>al d\u00eda<\/em>\u00a0(versi\u00f3n de PrestaShop, m\u00f3dulos y plantilla).<\/p>\n<h3>Intentos previos, sin \u00e9xito<\/h3>\n<p>Siempre que surge un error 404 (not found) se intenta chequear\u00a0varios puntos, que en otros casos pudieran solucionar este error 404:<\/p>\n<h5>Comprobar categor\u00eda est\u00e1 activa<\/h5>\n<p>Dentro del backoffice es necesario comprobar que \u00e9sta categoria est\u00e1 efectivamente activa y que pertenece a la tienda correcta (en caso de tener activado el multitienda). Esto se encuentra dentro de Cat\u00e1logo &gt; Categor\u00edas, y hacemos clic en <em>Modificar<\/em> la categor\u00eda que nos da error 404. La opci\u00f3n a buscar se llama\u00a0<em>Mostrados.<\/em><\/p>\n<h5>Regenerar archivo .htaccess<\/h5>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5376\" src=\"https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/generar-htaccess.jpg\" alt=\"generar-htaccess\" width=\"1000\" height=\"563\" srcset=\"https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/generar-htaccess.jpg 1000w, https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/generar-htaccess-768x432.jpg 768w, https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/generar-htaccess-600x338.jpg 600w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Es factible que el archivo .htaccess de la tienda online est\u00e9 corrupto o tenga alg\u00fan error, y no resuelva bien la URL lanzando el error 404. Para regenerar el archivo .htaccess se puede hacer entrando por FTP al sitio web de la tienda, descargar dicho archivo, que normalmente se encuentra en el raiz del sitio web, \u00a0para tener una copia, y seguidamente borrarlo del sitio web. Seguidametne, se entra al backoffice y se accede a<em> Preferencias &gt; SEO + URLS<\/em> \u00a0y procedemos a poner las\u00a0<em>URL amigables (Friendly URL)<\/em> como <em>NO<\/em> y guardamos. A continuaci\u00f3n ponemos las <em>URL amigables<\/em> como <em>SI<\/em> y volvemos a guardar. Esto nos generar\u00e1 un .htaccess completamente nuevo.<\/p>\n<p>En caso de tener activada la multitienda, se puede tambi\u00e9n regenerar el archivo .htaccess entrando a <em>Preferencias &gt; General<\/em> y\u00a0procediendo a desactivar la multitienda, salvar, volver a activar la multitienda y salvar de nuevo.<\/p>\n<h5>Forzar la\u00a0regeneraci\u00f3n del \u00e1rbol de categor\u00edas<\/h5>\n<p><strong>PrestasShop<\/strong>\u00a0tiene un procedimiento que se puede usar para regenerar la estructura de las categor\u00edas mediante una instrucci\u00f3n php. El sistema\u00a0es sencillo. Descargamos mediante FTP, el archivo index.php, que est\u00e1 localizado en el ra\u00edz del sitio web. A continuaci\u00f3n editamos este archivo (ej. con el bloc de notas) e incluimos la instrucci\u00f3n <em>Category::regenerateEntireNtree(); <\/em>. Por \u00faltimo, s\u00f3lo habr\u00eda que entrar a la p\u00e1gina de incio de nuestra tienda online para que se ejecutase.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5365\" src=\"https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/category-prestashop.png\" alt=\"category-prestashop\" width=\"660\" height=\"190\" srcset=\"https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/category-prestashop.png 660w, https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/category-prestashop-600x173.png 600w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/p>\n<p>Si nada de lo anterior funciona, como ha sido nuestro caso, te ense\u00f1amos\u00a0como lo hemos arreglado:<\/p>\n<h3>La soluci\u00f3n que hemos encontrado a este\u00a0error<\/h3>\n<p>Mirando con detenimiento la base de datos, hemos encontrado que las categor\u00edas que daban problemas ten\u00edan los campos <em>nleft<\/em> y <em>nright<\/em> con valor <em>0<\/em>, para la tabla <em>ps_category<\/em>.\u00a0\u00c9stos campos <em>nleft<\/em> y <em>nright<\/em> se usan, entre otras cosas, para las breadcrums (migas de pan) y ayudan a la navegaci\u00f3n entre categor\u00edas.\u00a0El hecho de que ambos campos valgan <em>0<\/em> nos hizo <em>sospechar<\/em> y finalmente comprobamos que efectivamente, \u00e9sto es lo que estaba provocando el <strong>error 404 en PrestaShop<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5367\" src=\"https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/error-404-prestashop.gif\" alt=\"error-404-prestashop\" width=\"1096\" height=\"228\" \/><\/p>\n<p>Es necesario regenerar los par\u00e1metros de <em>nleft<\/em> y <em>nright<\/em> con sus datos correctos. En teor\u00eda <strong>PrestaShop<\/strong> lo realiza\u00a0en cuanto se crea o modifica\u00a0una categor\u00eda, pero parece que si la <strong>multitienda est\u00e1 activado<\/strong>, \u00e9sta regeneraci\u00f3n de nleft y nright no funciona como debiese, y todas las nuevas categor\u00edas aparecen con ambos campos a cero.<\/p>\n<p>Por lo tanto, s\u00f3lo nos queda cambiarlos a mano, entrando a la base de datos (ej. mediante phpmyadmin), ir a la tabla \u00a0<em>ps_category<\/em>\u00a0y buscar los registros que tengan <em>nleft<\/em> y <em>nright<\/em> a <em>0<\/em>. En nuestro caso,\u00a0<em>nleft \u00a0<\/em>es el valor (<em>id_category<\/em>) del registro anterior y <em>nright<\/em> es el valor (<em>id_category<\/em>) \u00a0del registro posterior al que nos encontramos.<\/p>\n<p>N\u00f3tese que los n\u00fameros introducidos deben corresponder a valores de <em>id_category<\/em> reales.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5368 size-full\" src=\"https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/error-404-categoria-prestashop.png\" alt=\"error-404-categoria-prestashop\" width=\"1107\" height=\"209\" srcset=\"https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/error-404-categoria-prestashop.png 1107w, https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/error-404-categoria-prestashop-768x145.png 768w, https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/error-404-categoria-prestashop-1024x193.png 1024w, https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/error-404-categoria-prestashop-600x113.png 600w\" sizes=\"auto, (max-width: 1107px) 100vw, 1107px\" \/><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recientemente nos hemos encontrado con un error\u00a0no reportado por\u00a0PrestaShop que nos ha vuelto bastante locos: ERROR 404 P\u00c1GINA NO DISPONIBLE. LO SENTIMOS, LA P\u00c1GINA NO SE ENCUENTRA DISPONIBLE. Este error 404 en PrestaShop\u00a0aparece en la tienda al hacer clic en cualquiera de las categor\u00edas que hemos creado dentro del backoffice de PrestaShop. En concreto,\u00a0nos ha [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5357,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[42],"tags":[60,29],"class_list":["post-5356","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-prestashop","tag-customizacion","tag-prestashop"],"featured_image_src":{"landsacpe":["https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/error-404-prestashop.png",763,445,false],"list":["https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/error-404-prestashop.png",463,270,false],"medium":["https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/error-404-prestashop-300x175.png",300,175,true],"full":["https:\/\/www.k3bone.com\/blog\/wp-content\/uploads\/2016\/09\/error-404-prestashop.png",1193,696,false]},"_links":{"self":[{"href":"https:\/\/www.k3bone.com\/blog\/wp-json\/wp\/v2\/posts\/5356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.k3bone.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.k3bone.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.k3bone.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.k3bone.com\/blog\/wp-json\/wp\/v2\/comments?post=5356"}],"version-history":[{"count":0,"href":"https:\/\/www.k3bone.com\/blog\/wp-json\/wp\/v2\/posts\/5356\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.k3bone.com\/blog\/wp-json\/wp\/v2\/media\/5357"}],"wp:attachment":[{"href":"https:\/\/www.k3bone.com\/blog\/wp-json\/wp\/v2\/media?parent=5356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.k3bone.com\/blog\/wp-json\/wp\/v2\/categories?post=5356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.k3bone.com\/blog\/wp-json\/wp\/v2\/tags?post=5356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}