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:

'nb_of_orders' => array(
'title' => $this->l('Num Pedidos')
),

Quedando del siguiente modo:

Columna número de pedidos

Al acceder al listado de Clientes desde la pestaña Clientes -> Clientes veremos la columna de los pedidos.

Columna pedidos

Documento basado en Prestashop 1.6

 

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

Base de datos

Productos

Tabla -> ps_product_lang -> campo meta_description (cambiar longitud)

Categorías

Tabla -> ps_category_lang -> campo meta_description (cambiar longitud)

Páginas de contenido (CMS)

Tabla -> ps_cms_lang -> campo meta_description (cambiar longitud)

Metas generales

Tabla -> ps_meta_lang -> campo description (cambiar longitud)

Hasta ahora deberíamos ser capaces de guardar información en la base de datos que supere la longitud establecida.

El problema es que nos encontramos con una limitación chorra de X caracteres en el campo a la hora escribir (no es una validación interna)

Limitación

Quitar limitación categorías

Fichero: /controllers/admin/AdminCategoriesController.php

Buscar el campo “Meta Descripcion”

array(

'type' => 'textarea',
'label' => $this->l('Meta description'),
'name' => 'meta_description',
'maxchar' => 160,
'lang' => true,
'rows' => 5,
'cols' => 100,
'hint' => $this->l('Forbidden characters:').' <>;=#{}'
),

Y cambiar el valor de “maxchar

Quitar limitación productos

Fichero: “/carpeta_administracion/themes/default/template/controllers/products/seo.tpl”

Y buscar el siguiente código y cambiar el maxchar (que actualmente esta a 160):

Cambiar maxchar

Documento testeado en Prestashop 1.6

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

Guía – Crear constantes en Prestashop 1.5

En esta guía, explicaremos como crear “variables” constantes en Prestashop 1.5.

El primero paso es ir al fichero:

/config/defines.inc.php

Si nos damos cuenta, veremos vemos que tiene líneas como por ejemplo esta:

define('_PS_CLASS_DIR_', _PS_ROOT_DIR_.'/classes/');

En este caso se indica que la el valor de la variable “_PS_CLASS_DIR_”, está compuesto por el valor de la variable “_PS_ROOT_DIR_” (que en este caso podríamos decir que es el directorio raíz (_PS_ROOT_DIR_ es otra variable que hay definida que hace referencia al directorio raíz, lo que hace en este caso es una concatenación), acompañado de la carpeta “classes”.

¿Cómo definir nuestra propia variable constante? Continúa leyendo Guía – Crear constantes en Prestashop 1.5