Para poner todas las cantidades de todos los productos igual.
La forma sencilla:
UPDATE ps_stock_available SET quantity = 1
Si tenemos algún problema en la BBDD, por ejemplo, se ha vaciado al pasar tienda a multitienda, podemos asegurarnos, primero vaciando la tabla 'ps_stock_available' y luego con la siguiente sentencia:
INSERT INTO `ps_stock_available`(`id_product`, `id_product_attribute`, `id_shop`, `id_shop_group`, `quantity`, `depends_on_stock`, `out_of_stock`) SELECT `id_product`,0,0,1,100,0,1 FROM `ps_product`
Hay que tener cuidado de que sean productos "simples", sin atributos configurables, compuestos, etc.
Enlaces de interés:
https://www.prestashop.com/forums/topic/341360-solved-how-can-i-change-quantity-values-to-all-products/
http://stackoverflow.com/questions/26136951/prestashop-change-all-product-quantity-to-1
http://www.w3schools.com/sql/sql_insert_into_select.asp
Programación, web, CMS, WordPress, Magento, CSS, HTML5, jQuery, y lo que surja.Mi pasa personal
Mostrando entradas con la etiqueta prestashop. Mostrar todas las entradas
Mostrando entradas con la etiqueta prestashop. Mostrar todas las entradas
jueves, 17 de marzo de 2016
miércoles, 16 de septiembre de 2015
Mostrar más información en la lista de proveedores.
El problema base a solucionar va a ser, en la lista de proveedores (suppliers), no se muestra ningún dato respecto a la dirección, sólo título, imagen y descripción.
Vamos a usar el caso de mostrar por ejemplo la dirección y el móvil en el listado.
En este caso, lo primero a modificar es el resultado del método getSuppliers que lógicamente está en /classes/Supplier.php
Original: $query->select('s.*, sl.`description`');
Modificado: $query->select('s.*, sl.`description`, ad.`phone_mobile`, ad.`address1`');
Añadir la línea en negrita:
$query->leftJoin('supplier_lang', 'sl', 's.`id_supplier` = sl.`id_supplier` AND sl.`id_lang` = '.(int)$id_lang);
$query->leftJoin('address', 'ad', 'ad.`id_supplier` = s.`id_supplier`');
El siguiente paso, es ya modificar (añadir a) la vista: {directorio_plantilla}/supplier-list.tpl
<div class="description">
{l s="Móvil: "}{$supplier.phone_mobile}<br/>
{l s="Dirección: "}{$supplier.address1}
{*$supplier.description|truncate:180:'...'*}
</div>
Ver también: Añadir campos a los proveedores
Vamos a usar el caso de mostrar por ejemplo la dirección y el móvil en el listado.
En este caso, lo primero a modificar es el resultado del método getSuppliers que lógicamente está en /classes/Supplier.php
Original: $query->select('s.*, sl.`description`');
Modificado: $query->select('s.*, sl.`description`, ad.`phone_mobile`, ad.`address1`');
Añadir la línea en negrita:
$query->leftJoin('supplier_lang', 'sl', 's.`id_supplier` = sl.`id_supplier` AND sl.`id_lang` = '.(int)$id_lang);
$query->leftJoin('address', 'ad', 'ad.`id_supplier` = s.`id_supplier`');
El siguiente paso, es ya modificar (añadir a) la vista: {directorio_plantilla}/supplier-list.tpl
<div class="description">
{l s="Móvil: "}{$supplier.phone_mobile}<br/>
{l s="Dirección: "}{$supplier.address1}
{*$supplier.description|truncate:180:'...'*}
</div>
Ver también: Añadir campos a los proveedores
Añadir campos en Proveedores - Suppliers
Para añadir nuevos campos en los proveedores hay que modificar 3 partes:
1. Crear el campo en la base de datos, en la tabla {prefijoBD}_supplier creamos el/los campos que necesitemos.
2. Añadir el atributo a su clase /classes/Supplier.php
Ejemplo de añadir mail:
/** @var string Mail */
public $mail;
{..}
public static $definition = array(
'table' => 'supplier',
'primary' => 'id_supplier',
'multilang' => true,
'fields' => array(
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isCatalogName', 'required' => true, 'size' => 64),
'mail' => array('type' => self::TYPE_STRING, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128),
{..}
3. Añadir el campo al formulario de la administración /controllers/admin/AdminSuppliersController.php
Ejemplo de añadir mail:
public function renderForm()
{
{...}
array(
'type' => 'text',
'label' => $this->l('Name'),
'name' => 'name',
'required' => true,
'col' => 4,
'hint' => $this->l('Invalid characters:').' <>;=#{}',
),
array(
'type' => 'text',
'label' => $this->l('Email'),
'name' => 'mail',
'required' => true,
'col' => 4,
'hint' => $this->l('Invalid characters:').' <>;=#{}',
),
4. Posible ejemplo de uso en supplier.tpl
<fieldset>
<label class="attribute_label">Email</label>
<div class="attribute_list">{$supplier->mail}</div>
</fieldset>
Igualmente para modificar fabricantes - manufactures se puede aplicar a su clase, controlador y vista fácilmente.
Ejemplo de uso en la tienda online vinumplus.es
1. Crear el campo en la base de datos, en la tabla {prefijoBD}_supplier creamos el/los campos que necesitemos.
2. Añadir el atributo a su clase /classes/Supplier.php
Ejemplo de añadir mail:
/** @var string Mail */
public $mail;
{..}
public static $definition = array(
'table' => 'supplier',
'primary' => 'id_supplier',
'multilang' => true,
'fields' => array(
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isCatalogName', 'required' => true, 'size' => 64),
'mail' => array('type' => self::TYPE_STRING, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128),
{..}
3. Añadir el campo al formulario de la administración /controllers/admin/AdminSuppliersController.php
Ejemplo de añadir mail:
public function renderForm()
{
{...}
array(
'type' => 'text',
'label' => $this->l('Name'),
'name' => 'name',
'required' => true,
'col' => 4,
'hint' => $this->l('Invalid characters:').' <>;=#{}',
),
array(
'type' => 'text',
'label' => $this->l('Email'),
'name' => 'mail',
'required' => true,
'col' => 4,
'hint' => $this->l('Invalid characters:').' <>;=#{}',
),
4. Posible ejemplo de uso en supplier.tpl
<fieldset>
<label class="attribute_label">Email</label>
<div class="attribute_list">{$supplier->mail}</div>
</fieldset>
Igualmente para modificar fabricantes - manufactures se puede aplicar a su clase, controlador y vista fácilmente.
Ejemplo de uso en la tienda online vinumplus.es
miércoles, 15 de enero de 2014
Crear modulo prestashop 1.5 (a partir de otro)
Manual para crear un módulo para Prestashop 1.5 a partir del módulo homefeatured que viene por defecto en la instalación básica de la tienda online.
- Ir a la carpeta /modules/homefeatured, copiar y pegar, y cambiar el nombre, por ejemplo por homefeaturedcustom.
- Cambiar el nombre también a todos los archivos que contiene, así como las referencias varias que haya dentro de la carpeta, llamadas a archivos, declaraciones de clase, etc (incluido config.xml).
- Lo que pongas dentro del config.xml en la etiqueta <author> te servirá también para filtrar desde la administración después, y encontrar tu módulo rápidamente (con estos pasos bien hechos, ya debería salirte, aunque la funcionalidad, obviamente será la misma que el módulo copiado). Hasta aquí te serviría para por ejemplo tener el módulo duplicado, por si quieres tenerlo 2 veces en la misma posición, con varios otros en medio.
- Lo podemos instalar ya. En la pantalla que vemos, los mensajes y opciones que nos aparecen, son las definidas en homefeaturedcustom.php, por ejemplo donde veamos HOME_FEATURED_NBR podemos sustituirlo por otro nombre esa variable, sino, pues ese panel de opciones no sirve, puesto que se solapará valores con el otro módulo, con la misma declaración.
- Un paso interesante a implementar extra, para aprender a darle utilidad a esta "modificación" del módulo, es seguir el siguiente tutorial: newfieldstut que lo que hace es enseñarnos a crear nuevas pestañas en la ficha de producto en la administración, y nuevos campos dentro de ella para estos.
- Está en inglés, pero muy bien redactado, y con muchas imágenes, fácil de seguir.
- Además tiene código inicial para seguirlo, y código final (funciona bien) por si en algún paso no te aclaras.
- Ahora tenemos un campo por el que filtrar lo que queremos mostrar. Por ejemplo, en ese campo podemos poner unos productos que sean "destacados". Y en el homeproductcustom.tpl, hay un bloque tal que así (por la línea 30 aproximadamente) : <code>{foreach from=$products item=product name=homeFeaturedProducts}</code>
- Pues justo en la línea de abajo ponermos esto: <code> {if $product.custom_field eq "destacado"} </code>. Y sólo pasará esto con las imágenes que cumplan con ese valor en el campo nuevo creado, y sino, pues podemos poner un "else" o y hacer otra cosa, o simplemente no mostrarlos.
Suscribirse a:
Entradas (Atom)