¿Cómo obtener los idiomas de Prestashop en PHP?

Pequeño tutorial para obtener los datos de los idiomas en PHP.

Aprenderemos a:

Crear una instancia de una clase
Recorrer con un bucle los datos del idioma

  • No confundir con traducciones, hablamos simplemente de obtener los datos de los idiomas de la tienda.

Para acceder a este tutorial, debéis pinchar en la siguiente captura:

Acceder a este tutorial de Prestashop
Acceder a este tutorial de Prestashop

Editor de textos avanzado en Prestashop 1.7

Gracias al usuario Vekia de la Comunidad de Prestashop, tenemos disponible una guía que nos permite habilitar funciones adicionales al editor de texto que tiene integrado Prestashop, cuando por ejemplo estamos escribiendo la descripción de la categoría, producto, etc..

Vekia, nos propone en su Guía, los siguientes cambios:

1º Paso – Editar fichero JS

Editamos el siguiente fichero “ /js/admin/tinymce.inc.js” y cambiamos el contenido del fichero por el siguiente código:


/**
* Change default icons to marerial icons
*/
function changeToMaterial() {
var materialIconAssoc = {
'mce-i-code': '<i class="material-icons">code</i>',
'mce-i-visualblocks': '<i class="material-icons">dashboard</i>',
'mce-i-charmap': '<i class="material-icons">grade</i>',
'mce-i-hr': '<i class="material-icons">remove</i>',
'mce-i-searchreplace': '<i class="material-icons">find_replace</i>',
'mce-i-none': '<i class="material-icons">format_color_text</i>',
'mce-i-bold': '<i class="material-icons">format_bold</i>',
'mce-i-italic': '<i class="material-icons">format_italic</i>',
'mce-i-underline': '<i class="material-icons">format_underlined</i>',
'mce-i-strikethrough': '<i class="material-icons">format_strikethrough</i>',
'mce-i-blockquote': '<i class="material-icons">format_quote</i>',
'mce-i-link': '<i class="material-icons">link</i>',
'mce-i-alignleft': '<i class="material-icons">format_align_left</i>',
'mce-i-aligncenter': '<i class="material-icons">format_align_center</i>',
'mce-i-alignright': '<i class="material-icons">format_align_right</i>',
'mce-i-alignjustify': '<i class="material-icons">format_align_justify</i>',
'mce-i-bullist': '<i class="material-icons">format_list_bulleted</i>',
'mce-i-numlist': '<i class="material-icons">format_list_numbered</i>',
'mce-i-image': '<i class="material-icons">image</i>',
'mce-i-table': '<i class="material-icons">grid_on</i>',
'mce-i-media': '<i class="material-icons">video_library</i>',
'mce-i-browse': '<i class="material-icons">attachment</i>',
'mce-i-checkbox': '<i class="mce-ico mce-i-checkbox"></i>',
};

$.each(materialIconAssoc, function (index, value) {
$('.' + index).replaceWith(value);
});
}

function tinySetup(config) {
if (!config) {
config = {};
}

if (typeof config.editor_selector != 'undefined') {
config.selector = '.' + config.editor_selector;
}

var default_config = {
selector: ".rte",
browser_spellcheck: true,
plugins : "visualblocks, preview searchreplace print insertdatetime, hr charmap colorpicker anchor code link image paste pagebreak table contextmenu filemanager table code media autoresize textcolor emoticons",
toolbar2 : "newdocument,print,|,bold,italic,underline,|,strikethrough,superscript,subscript,|,forecolor,colorpicker,backcolor,|,bullist,numlist,outdent,indent",
toolbar1 : "styleselect,|,formatselect,|,fontselect,|,fontsizeselect,",
toolbar3 : "code,|,table,|,cut,copy,paste,searchreplace,|,blockquote,|,undo,redo,|,link,unlink,anchor,|,image,emoticons,media,|,inserttime,|,preview ",
toolbar4 : "visualblocks,|,charmap,|,hr,",
external_filemanager_path: baseAdminDir + "filemanager/",
filemanager_title: "File manager",
external_plugins: {"filemanager": baseAdminDir + "filemanager/plugin.min.js"},
language: iso_user,
skin: "prestashop",
menubar: false,
statusbar: false,
relative_urls: false,
convert_urls: false,
entity_encoding: "raw",
valid_children: "+body[style|script|iframe|section],pre[iframe|section|script|div|p|br|span|img|style|h1|h2|h3|h4|h5],*[*]",
valid_elements : '*[*]',
force_p_newlines : false,
cleanup: false,
forced_root_block : false,
force_br_newlines : true,
convert_urls:true,
relative_urls:false,
remove_script_host:false,
init_instance_callback: "changeToMaterial"
};

$.each(default_config, function (index, el) {
if (config[index] === undefined)
config[index] = el;
});

// Change icons in popups
$('body').on('click', '.mce-btn, .mce-open, .mce-menu-item', function () {
changeToMaterial();
});

tinyMCE.init(config);
}

Continúa leyendo Editor de textos avanzado en Prestashop 1.7

Mostrando información del proveedor en la ficha del producto en Prestashop 1.6

Es cierto que tenemos módulos disponibles en la Comunidad, que nos pueden servir para mostrar “parte” de la información de los proveedores en la ficha del producto en Prestashop 1.6

Otra opción que nos propone “Nemo” en la que no trabajamos con módulos es la siguiente: (Hemos traducido la guía al idioma de Cervantes)

Crear un override en el directorio:

/override/controllers/front/

con el nombre “ProductController.php” y el siguiente contenido

<?php
class ProductController extends ProductControllerCore
{
public function initContent()
{
parent::initContent();

if($this->product->id_supplier) {
$id_supplier_address = Address::getAddressIdBySupplierId($this->product->id_supplier);
$supplier_address = new Address($id_supplier_address);
}

if (Validate::isLoadedObject($supplier_address))
{
$this->context->smarty->assign(array(
'supplier_country'=> $supplier_address->country,
'supplier_company'=> $supplier_address->company,
'supplier_address1'=> $supplier_address->address1,
'supplier_postcode'=> $supplier_address->postcode,
'supplier_city'=> $supplier_address->city,
'supplier_phone'=> $supplier_address->phone,
'supplier_state' => State::getNameById($supplier_address->id_state),
'supplier_vat_number'=> $supplier_address->vat_number,
));
}
}
}

El siguiente paso, es ir al fichero: “/themes/tu-plantilla/product.tpl” y añadir el siguiente código: Continúa leyendo Mostrando información del proveedor en la ficha del producto en Prestashop 1.6

¿Dónde se guardan los datos de conexión a la base de datos en Prestashop 1.7?

Sorpresa… sorpresa… no es igual que en antaño ni en el mismo fichero…ni en la misma ruta, en Prestashop 1.7 cambia….

En este caso, para acceder al fichero que contiene los datos de conexión a la base de datos en Prestashop 1.7, tenemos que acceder al fichero:

Configuración Base de datos Prestashop 1.7
Configuración Base de datos Prestashop 1.7

/app/config/parameters.php

Donde entre otros datos referentes a la conexión de base de datos, nos podemos encontrar:

Continúa leyendo ¿Dónde se guardan los datos de conexión a la base de datos en Prestashop 1.7?

Mostrar número de pedidos por cliente en Prestashop

Traducción del idioma de Shakespeare al idioma de Cervantes de un aporte del usuario vekia de la Comunidad de Prestashop.

Aporte en el idioma de Shakespeare: 

https://mypresta.eu/en/art/developer/number-of-customers-orders.html

Aporte en el idioma de Cervantes:

Con este TIP cuando vayamos a la pestaña Clientes -> Clientes del panel de administración veremos en los listados de los clientes una columna llamada “Pedidos” con el número de pedidos de cada cliente.

Listado Clientes

Aunque vamos a editar los controladores directamente, recordar que lo más optimo y recomendable es hacer un override.

  • Fichero: /controllers/admin/AdminCustomersController.php

Buscamos la siguiente consulta SQL:

Consulta SQL

Y justo después de -> as connect añadimos:

(SELECT COUNT(*) FROM '._DB_PREFIX_.'orders o where o.valid =1 AND (o.id_customer = a.id_customer)) AS nb_of_orders

Quedando del siguiente modo:

Consulta modificada

De esta forma en la consulta vamos a poder obtener el número de pedidos por cliente.

El siguiente paso consiste en el mismo fichero:

Buscamos el siguiente código:

$this->fields_list = array(
'id_customer' => array(
'title' => $this->l('ID'),
'align' => 'text-center',
'class' => 'fixed-width-xs'
),

Correspondiente a la columna de ID cliente en el listado clientes y debajo añadimos:

Continúa leyendo Mostrar número de pedidos por cliente en Prestashop

Crear por PHP zona en el panel de administración de Prestashop

En esta guía vamos a crear una nueva zona con su correspondiente pestaña en el panel de administración donde mostraremos un texto informativo.

Zona administración

Para ellos vamos a crear un controlador correspondiente a la zona de administración y un fichero TPL, correspondiente a la plantilla de visualización.

El controlador: AdminNadieController.php lo vamos a guardar en el directorio: /controllers/admin/

La plantilla de visualización: nadie.tpl la guardaremos en el directorio:
/administracion/themes/default/template/controllers/nadie/

Continúa leyendo Crear por PHP zona en el panel de administración de Prestashop

Añadir y actualizar productos por PHP en Prestashop

En base a la clase “Product (/classes/Product.php)” de Prestashop podemos actualizar y añadir productos por PHP creando una simple instancia.

En este documento vamos a realizar dos ejemplos uno para actualizar datos de un producto y otro para añadir un nuevo producto.

Continúa leyendo Añadir y actualizar productos por PHP en Prestashop

Aumentar el tamaño de las meta descripciones en Prestashop

Por si en un futuro, existe la necesidad de ampliar el tamaño de las metas descripciones por decisión de Google, dejo post:

Meta descripciones

Aquí, vamos a indicar los ficheros “originales” y líneas, pero recordar que se debe hacer un override de las clases y controladores:

Clases productos, categorías y contenidos:

Productos ->   /classes/Product.php
Categorías ->  /classes/Category.php
Páginas de contenido (Preferencias -> CMS) -> /classes/CMS.php

Cambiar el valor 255 de aquí:

'meta_description' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),

Metas generales (los que cambiamos en la pestaña Preferencias -> SEO y URLS)

/classes/Meta.php

Cambiar el valor del 255 aquí:

'description' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),

Continúa leyendo Aumentar el tamaño de las meta descripciones en Prestashop

Cambiar grupo por defecto en el registro de clientes en Prestashop

En este manual de Prestashop, explicaremos los pasos a seguir para cambiar el grupo por defecto en el registro de clientes en Prestashop. De esta forma, cuando un cliente se registre en la tienda podemos decir si quedara asignado a un grupo u a otro de forma automática.

Los pasos son los siguientes:

Acceder al fichero:

/config/defines.inc.php

Buscar la siguiente línea:

define('_PS_DEFAULT_CUSTOMER_GROUP_', 3);

Y cambiamos el 3, por el id del grupo, que queramos que se asigne por defecto. Recuerdo que los grupos los podemos crear y gestionar en la pestaña Clientes -> Grupos del panel de administración.

El siguiente paso, es acceder a la base de datos y buscar la tabla:

ps_configuration

psconfig

Dentro de la tabla, en el campo:

name

Buscamos el valor:

PS_CUSTOMER_GROUP Continúa leyendo Cambiar grupo por defecto en el registro de clientes en Prestashop