Lo primero de todo, hay que detectar de donde viene ese error, la mayoría de veces cuando ves esta pantalla te bloqueas y no entiendes porque ocurre esto.
En Prestashop 1.5.4 puede pasarte a menudo, o darte otros errores, pero la mayoría de veces nos pasara, sobre todo cuando migramos la página web de un hosting a otro
Pasos para Reconocer el Error 500 en Prestashop
Hay diferentes formas de que te encuentre con este error son estas:
“500 Internal Server Error”
“HTTP 500 – Error interno del servidor”
“Error interno del servidor”
“HTTP 500 Error interno”
“Error 500”
“HTTP Error 500”
Una frase que acompaña este este error es esta: “El servidor encontró una condición inesperada que le impidió cumplir con la solicitud del cliente”.
La mayoría de veces el error 500 es un mensaje del servidor que nos dice que “Algo salió mal y yo no sé qué es” esto se suele llamar “Server-side” Eso quiere decir que algo salió mal con el servidor que aloja el sitio web. La mayoría de errores suele ser por problemas de configuración del hosting o incluso de tu Prestashop.
Primer paso para Solucionar Error 500 en Prestashop
Activar el informe de errores en Prestashop para esto haz lo siguiente:
Para PrestaShop v1.4 hasta v1.5.2
1. Abre config / config.inc.php
2. En línea 28 se encuentra esta línea @ ini_set (‘display_errors’, ‘off’);
3. Cambie la línea para que @ ini_set (‘display_errors’, ‘on’);
Para PrestaShop v1.5.3 +
1. Abre config / defines.inc.php
2. En la línea 28 se encuentra esta línea define (‘_PS_MODE_DEV_’, false);
3. Cambie esta línea para leer define (‘_PS_MODE_DEV_’, true);
Bien ahora quizás ya no veamos la pantalla de error 500 pero si podremos ver algún mensaje que nos de la consola de errores.
El propio prestashop incorpora un módulo para integrar google analytics en la tienda. Sólo hay que introducir el ID de la cuenta, y activar el módulo
Para cambiar la visualización de los productos en el módulo novedades en prestashop hay que acudir al fichero \classes\Product.php
Y buscar la función getNewProducts que se encuentra en la línea 2248 aprox (Prestashop 1.6.x).
Hay que añadir una condición más en la sentencia SQL, para que no visualice productos cuya variable quantity = 0
1id_productPrimariaÍndiceint(10)UNSIGNEDNoNingunaAUTO_INCREMENT
2id_supplierÍndiceint(10)UNSIGNEDSíNULL
3id_manufacturerÍndiceint(10)UNSIGNEDSíNULL
4id_category_defaultÍndiceint(10)UNSIGNEDSíNULL
5id_shop_defaultint(10)UNSIGNEDNo1
6id_tax_rules_groupint(11)UNSIGNEDNoNinguna
7on_saletinyint(1)UNSIGNEDNo0
8online_onlytinyint(1)UNSIGNEDNo0
9ean13varchar(13)SíNULL
10upcvarchar(12)SíNULL
11ecotaxdecimal(17,6)No0.000000
12quantityint(10)No0
13minimal_quantityint(10)UNSIGNEDNo1
14pricedecimal(20,6)No0.000000
15 wholesale_price decimal(20,6) No 0.000000
16 unity varchar(255) Sí NULL
17unit_price_ratiodecimal(20,6)No0.000000
18additional_shipping_costdecimal(20,2)No0.00
19referencevarchar(32)SíNULL
20supplier_referencevarchar(32)SíNULL
21locationvarchar(64)SíNULL
22widthdecimal(20,6)No0.000000
23heightdecimal(20,6)No0.000000
24depthdecimal(20,6)No0.000000
25weightdecimal(20,6)No0.000000
26out_of_stockint(10)UNSIGNEDNo2
27quantity_discounttinyint(1)Sí0
28customizabletinyint(2)No0
29uploadable_filestinyint(4)No0
30text_fieldstinyint(4)No0
31activetinyint(1)UNSIGNEDNo0
32redirect_typeenum('', '404', '301', '302')No
33id_product_redirectedint(10)UNSIGNEDNo0
34available_for_ordertinyint(1)No1
35available_datedateNo0000-00-00
36conditionenum('new', 'used', 'refurbished')Nonew
37show_pricetinyint(1)No1
38indexedÍndicetinyint(1)No0
39visibilityenum('both', 'catalog', 'search', 'none')Noboth
40cache_is_packtinyint(1)No0
41cache_has_attachmentstinyint(1)No0
42is_virtualtinyint(1)No0
43cache_default_attributeint(10)UNSIGNEDSíNULL
44date_addÍndicedatetimeNoNinguna
45date_upddatetimeNoNinguna
46advanced_stock_managementtinyint(1)No0
47 pack_stock_type int(11) UNSIGNED No 3
He aquí la solución para que los productos de la página principal de una tienda prestashop salgan aleatorios (módulo novedades)
Hay que modificar en /modules/blocknewproducts/blocknewproducts.php
la linea 113, aproximadamente,
$newProducts = Product::getNewProducts((int) $this->context->language->id, 0, (int)Configuration::get('NEW_PRODUCTS_NBR'));
por
$newProducts = Product::getNewProducts((int) $this->context->language->id, 0, 100);shuffle($newProducts);array_splice($newProducts, Configuration::get('NEW_PRODUCTS_NBR') );
Si en prestashop queremos que salgan todas las banderas de la web en la parte superior derecha (no en forma de lista desplegable)
Hay que ir al fichero blocklanguages.tpl ubicado en themes\default-bootstrap\modules\blocklanguages
Y usar el siguiente bloque de código. Recomiendo que antes se haga una copia de seguridad del fichero inicial
<!-- Block languages module -->
{if count($languages) > 1}
<div id="languages-block-top" class="languages-block">
{foreach from=$languages key=k item=language name="languages"}
{if $language.iso_code == $lang_iso}
<img style="border: solid 1px #fff; margin-right:1px;" src="/{$img_lang_dir}{$language.id_lang}.jpg" alt="{$language.iso_code}" width="16" height="12" /><!-- /Flag image -->
{/if}
{if $language.iso_code != $lang_iso}
{assign var=indice_lang value=$language.id_lang}
{if isset($lang_rewrite_urls.$indice_lang)}
<img style="border: solid 1px #fff; margin-right:1px;" src="/{$img_lang_dir}{$language.id_lang}.jpg" alt="{$language.iso_code}" width="16" height="12" /><!-- /Flag image -->
<a href="/{$lang_rewrite_urls.$indice_lang|escape:'html':'UTF-8'}" title="{$language.name|escape:'html':'UTF-8'}" rel="alternate" hreflang="{$language.iso_code|escape:'html':'UTF-8'}">
{else}
<img style="border: solid 1px #fff; margin-right:1px;" src="/{$img_lang_dir}{$language.id_lang}.jpg" alt="{$language.iso_code}" width="16" height="12" /><!-- /Flag image -->
<a href="/{$link->getLanguageLink($language.id_lang)|escape:'html':'UTF-8'}" title="{$language.name|escape:'html':'UTF-8'}" rel="alternate" hreflang="{$language.iso_code|escape:'html':'UTF-8'}">
{/if}
{/if}
<span>{$language.name|regex_replace:"/\s\(.*\)$/":""}</span>
{if $language.iso_code != $lang_iso}
</a>
{/if}
{/foreach}
</div>
{/if}
<!-- /Block languages module -->
En Prestashop 1.6.X cuando se muestra un producto, se refleja también el campo Condición (nuevo, usado, etc)
Para quitar este campo hay que seguir los siguientes pasos:
1) En /themes/default-bootstrap/product.tpl
2) Localizar el bloque de código
<p id="product_condition">
<label>{l s='Condition:'} </label>
{if $product->condition == 'new'}
<link itemprop="itemCondition" href="https://schema.org/NewCondition"/>
<span class="editable">{l s='New product'}</span>
{elseif $product->condition == 'used'}
<link itemprop="itemCondition" href="https://schema.org/UsedCondition"/>
<span class="editable">{l s='Used'}</span>
{elseif $product->condition == 'refurbished'}
<link itemprop="itemCondition" href="https://schema.org/RefurbishedCondition"/>
<span class="editable">{l s='Refurbished'}</span>
{/if}
</p>
3) Dejarlo así
{*<p id="product_condition">
<label>{l s='Condition:'} </label>
{if $product->condition == 'new'}
<link itemprop="itemCondition" href="https://schema.org/NewCondition"/>
<span class="editable">{l s='New product'}</span>
{elseif $product->condition == 'used'}
<link itemprop="itemCondition" href="https://schema.org/UsedCondition"/>
<span class="editable">{l s='Used'}</span>
{elseif $product->condition == 'refurbished'}
<link itemprop="itemCondition" href="https://schema.org/RefurbishedCondition"/>
<span class="editable">{l s='Refurbished'}</span>
{/if}
</p>*}
¿Cómo eliminar la etiqueta nuevo que aparece en la esquina de los productos?
La solución es muy fácil:
Hay que localizar el siguiente código en el fichero global.css
.new-label {
font: 700 14px/12px Arial, Helvetica, sans-serif;
color: white;
background: #6ad4ff;
text-transform: uppercase;
padding: 9px 0 7px;
text-shadow: 1px 1px rgba(0, 0, 0, 0.24);
width: 130px;
text-align: center;
display: block;
position: absolute;
left: -33px;
top: 16px;
z-index: 1;
-webkit-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
transform: rotate(-45deg); }
Entre los corchetes, hay que añadir la siguiente línea de código:
display: none;
Para todos los que hayáis trabajado con la plantilla bootstrap de Prestashop 1.6.X, seguramente os habrá llamado la atención el que el módulo DIAPOSITIVAS DE IMÁGENES no se visualiza en dispositivos móviles.
Pues bien, es porque en la instalación por defecto de la plantilla, este módulo no está habilitado para móviles
Resumen de los pasos a seguir para lograr cambiar el número de productos por fila de la página de inicio. Puede servir como pequeña guía para lograr el msimo efecto en otras páginas de productos - como categorías o productos más vistos.
1 - Crear un estilo css como el que sigue:
.col-md-23 {
width: 20%;
}
Un 20% nos permitirá mostrar 5 productos por fila. Lo insertamos entre .col-md-2 y .col-md-3
Para mostrar 4 productos por fila en categorías, no necesitamos más CSS del que ya está especificado en la plantilla.
2- Editar product-list.tpl
{if $page_name !='index' && $page_name !='product'}
{assign var='nbItemsPerLine' value=4}
{assign var='nbItemsPerLineTablet' value=2}
{assign var='nbItemsPerLineMobile' value=3}
{else}
{assign var='nbItemsPerLine' value=5}
{assign var='nbItemsPerLineTablet' value=3}
{assign var='nbItemsPerLineMobile' value=2}
{/if}
3- Cambio del tamaño de las imágenes
En Preferencias > Imágenes cambiamos el tamaño de las imágenes home_default de 250 x 250 a 200 x 250. Regeneramos las miniaturas correspondientes en la misma sección.
4- Uso de la clase css que hemos creado (en product-list.tpl)
Original:
<li class="ajax_block_product{if $page_name == 'index' || $page_name == 'product'} col-xs-12 col-sm-4 col-md-3{else} col-xs-12 col-sm-6 col-md-4{/if}
Modificado:
<li class="ajax_block_product{if $page_name == 'index' || $page_name == 'product'} col-xs-10 col-sm-4 col-md-23{else} col-xs-12 col-sm-4 col-md-3{/if}
En el fichero global.css, hay que buscar el siguiente código
.new-label
En el bloque hay que añadir la siguiente línea de código:
display:none;
CNERIS es una empresa constituida por jóvenes emprendedores procedentes de diferentes sectores del mundo de la información. Nuestro equipo está compuesto por programadores, administradores de sistemas, administradores de base de datos, diseñadores gráficos, maquetadores,