Diseño Web

Diseño Web, Gestores de contenidos, Trucos

Marcar pedidos como Completados automáticamente en WooCommerce

Por defecto, cuando se realiza un pago de un pedido en WooCommerce este no aparece como completado sino como En Espera o “Procesando“.  Hoy te enseñamos a poner los pedidos como Completados automáticamente, una vez se hayan pagado. Cómo marcar los pedidos como Completados automáticamente en WooCommerce. WooCommerce considera que, tras el pago de un pedido, se debe realizar un proceso previo antes finalizarlo. Por ejemplo empaquetarlo o enviado. Por lo tanto, cuando un cliente realiza el pago, el estado pasa a Procesando y es el dueño de la tienda el que tiene que cambiarlo al siguiente estado. Sólo en los casos en los que el producto sea virtual y descargable (ambas opciones a la vez), WooCommerce completa los pedidos. Pero claro, esto puede no ser muy deseable para muchas tiendas online. Aquellas que tengan productos virtuales, las que sean aulas online y muchas otras, pueden querer que el pedido se procese tras el pago y el cliente tenga directamente acceso a lo que ha pagado. Sin tener que esperar a que el dueño de la tienda se lo apruebe. Os dejamos dos maneras de hacerlo: Con plugins. Tienes un plugin de pago, Order Status Control, pero también tienes alguno gratuito como Autocomplete WooCommerce Orders. Nosotros hemos probado este último y va genial. Puedes poner que se autocompleten los productos virtuales, o cualquier producto que se pague (nosotros probamos esta opción), o todos los productos independientemente de su pago (no recomendable). Con código. De nuevo puedes ponerlo en el functions.php de tu plantilla hija o en un plugin como Code Snippets. Los códigos te permiten más personalización como elegir el método de pago o el estado final. He encontrado varios y os los dejo para probar. –WooCommerce propone este: /** * Auto Complete all WooCommerce orders. */ add_action( ‘woocommerce_thankyou’, ‘custom_woocommerce_auto_complete_order’ ); function custom_woocommerce_auto_complete_order( $order_id ) { if ( ! $order_id ) { return; } $order = wc_get_order( $order_id ); $order->update_status( ‘completed’ ); } /** * Auto Complete all WooCommerce orders. */ add_action( ‘woocommerce_thankyou’, ‘custom_woocommerce_auto_complete_order’ ); function custom_woocommerce_auto_complete_order( $order_id ) { if ( ! $order_id ) { return; } $order = wc_get_order( $order_id ); $order->update_status( ‘completed’ ); } –Aquí podéis ver este donde podéis elegir el método de pago. // Actualiza automáticamente el estado de los pedidos a COMPLETADO add_action( ‘woocommerce_order_status_processing’, ‘actualiza_estado_pedidos_a_completado’ ); add_action( ‘woocommerce_order_status_on-hold’, ‘actualiza_estado_pedidos_a_completado’ ); function actualiza_estado_pedidos_a_completado( $order_id ) { global $woocommerce; //ID’s de las pasarelas de pago a las que afecta $paymentMethods = array( ‘bacs’, ‘cheque’, ‘cod’, ‘paypal’ ); if ( !$order_id ) return; $order = new WC_Order( $order_id ); if ( !in_array( $order->payment_method, $paymentMethods ) ) return; $order->update_status( ‘completed’ ); } – Y este otro artículo da varias opciones. Los estados de los pedidos por defecto los puedes ver entrando en un pedido y pinchando en el desplegable de estados o en la configuración de WooCommerce en los Emails. Pero son:   Cancelado (Cancelled). Fallido (Failed). Completo (Completed). Pendiente  (Pending payment). Procesando (Processing). En espera (On hold). Reembolsado (Refunded)

Diseño Web, Gestores de contenidos, Trucos

Cómo añadir código personalizado en WordPress. Plugin Code Snippets

Tu web es diferente a las demás, y seguramente requerirá algún comportamiento único. Esto se puede hacer por plugins, pero si es algo más concreto requiere código personalizado. Hoy os enseñamos a añadir dicho código en tu página de WordPress. Cómo añadir código personalizado en tu página de WordPress. Hay tres maneras lógicas de hacerlo: Añadir el código en el fichero functions.php de tu plantilla. Para eso está ese fichero, para las funciones que necesite la plantilla, y las adicionales que quieras tú. PERO (y es un gran pero), sólo lo recomendamos en el caso que hayas creado un tema hijo. Porque si lo añades en tu plantilla “padre”, y la actualizas, lo más seguro es que pierdas las modificaciones realizadas. Con un plugin para añadir código. El más famoso es Code Snippets y se lo ha ganado. Este plugin te permite añadir pequeños códigos (snippets) que puedes activar, desactivar, editar, añadir y borrar a tu antojo. Estos snippets funcionan como si los hubieras añadido al fichero functions.php. Pero además añade varias ventajas muy a tener en cuenta. -La primera es que si cometes un error de código no rompes la página entera (como ocurriría editando el fichero functions), sino que el plugin te avisa del error, de la línea, y desactiva el snippet. – La segunda es que puedes decidir el ámbito de aplicación del código: en toda la web, sólo en el backend, ejecutarlo sólo una vez…. – Para mi es excelente poder activar y desactivar códigos para poder hacer pruebas. – Además puedes poner descripción y etiquetas a tu código para poder saber lo que hace cuando haya pasado un tiempo, o para que lo lea otro desarrollador. – Los snippets se puede exportar y importar entre sitios. – No tienes que añadir tags como los de php, pero si se te olvida y los pones el plugin se encarga de quitarlos. Crear tu propio plugin. Otro día hablaremos de ello. Así que, si no quieres complicarte mucho, y no quieres que tu código dependa del tema, instala Code Snippets y a añadir código. Nosotros lo usamos para php pero puedes poner html, css javascript….lo que quieras.    

Diseño Web, Gestores de contenidos, Trucos

Código para añadir una página de Mis Productos en WooCommerce

Para una de las webs que estábamos desarrollando esta semana, necesitábamos crear una página para que los clientes pudieran ver sus productos.  Hemos encontrado un código que realiza esta función y os lo queremos dejar aquí para que lo uséis. Código para añadir una página de Mis Productos en WooCommerce. Lo primer es mencionar la fuente, el código lo encontramos aquí. Para activar el código tienes dos maneras: Ponerlo en el fichero functions.php de tu plantilla. Solo te recomiendo que hagas esto si has creado una plantilla hija. De no ser así, al actualizar la plantilla se te borrará el código modificado. Ponedlo antes de ?> Usar un plugin para poner códigos personalizados. Como el que mencionamos en este artículo. El código que hay que  poner es : /**  * @snippet       Display All Products Purchased by User via Shortcode – WooCommerce  * @how-to        Watch tutorial @ https://businessbloomer.com/?p=19055  * @sourcecode    https://businessbloomer.com/?p=22004  * @author        Rodolfo Melogli  * @compatible    Woo 3.4.5  */ // Note: this will only return purchased products for completed and processing orders add_shortcode( ‘my_products’, ‘bbloomer_user_products_bought’ ); function bbloomer_user_products_bought() { global $product, $woocommerce, $woocommerce_loop; $columns = 3; $current_user = wp_get_current_user(); $args = array(     ‘post_type’ => ‘product’,     ‘post_status’ => ‘publish’,     ‘posts_per_page’ => -1 ); $loop = new WP_Query($args); ob_start(); woocommerce_product_loop_start(); while ( $loop->have_posts() ) : $loop->the_post(); $theid = get_the_ID(); if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $theid ) ) { wc_get_template_part( ‘content’, ‘product’ ); } endwhile; woocommerce_product_loop_end(); woocommerce_reset_loop(); wp_reset_postdata(); return ‘<div class=”woocommerce columns-‘ . $columns . ‘”>’ . ob_get_clean() . ‘</div>’; } /** * @snippet       Display All Products Purchased by User via Shortcode – WooCommerce * @how-to        Watch tutorial @ https://businessbloomer.com/?p=19055 * @sourcecode    https://businessbloomer.com/?p=22004 * @author        Rodolfo Melogli * @compatible    Woo 3.4.5 */ // Note: this will only return purchased products for completed and processing orders add_shortcode( ‘my_products’, ‘bbloomer_user_products_bought’ ); function bbloomer_user_products_bought() { global $product, $woocommerce, $woocommerce_loop; $columns = 3; $current_user = wp_get_current_user(); $args = array( ‘post_type’ => ‘product’, ‘post_status’ => ‘publish’, ‘posts_per_page’ => -1 ); $loop = new WP_Query($args); ob_start(); woocommerce_product_loop_start(); while ( $loop->have_posts() ) : $loop->the_post(); $theid = get_the_ID(); if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $theid ) ) { wc_get_template_part( ‘content’, ‘product’ ); } endwhile; woocommerce_product_loop_end(); woocommerce_reset_loop(); wp_reset_postdata(); return ‘<div class=”woocommerce columns-‘ . $columns . ‘”>’ . ob_get_clean() . ‘</div>’; } Después puedes usar el shortcode [my_products] en cualquier sitio de WordPress para mostrar los productos. Aquí tenéis una versión del código que antes realiza una búsqueda en la base de datos y comprueba también si hay productos duplicados (porque unos incluyeron otros).

Diseño Web, Gestores de contenidos, Prestashop

Activar o desactivar módulos para dispositivos móviles en Prestashop

En ocasiones queremos que un módulo no aparezca en dispositivos móviles. O activar uno que por defecto no aparece como el Ps_banner (módulo Banner) de Prestashop. La opción existe…pero está algo escondida. Hoy os enseñamos a hacerlo. Cómo activar o desactivar módulos para dispositivos móviles en Prestashop. Para hacerlo tenéis que ir al backend a módulos, y buscar el que queréis activar o desactivar para dispositivos móviles. A la derecha del botón tenéis una flecha para desplegar opciones y, si pincháis ahí, veréis “Enable mobile” si está desactivado, o “Disable mobile” si ahora está activado para móviles. Pinchad ahí para activar/desactivar ese módulo para esos dispositivos móviles. Lo podéis ver en este vídeo. Una gran opción que está algo escondida.  

Diseño Web, Gestores de contenidos, Prestashop, Trucos

Mejorar la calidad de las imágenes que se suben o se importan en Prestashop

Hace unos días hemos hecho una página web para un cliente en Prestashop. Este cliente, tenía la peculiaridad (respecto a clientes anteriores) que disponía de unas imágenes con buena calidad. Al subirlas a Prestashop, tanto en la subida por producto, como en la importación masiva, la pérdida de calidad era más que evidente. Las fotos de Prestashop no tenían una calidad aceptable teniendo en cuenta las fotos de origen. Y en esa página, las imágenes eran clave. La página la hemos creado en 1.7, pero lo probamos en 1.6 y el resultado era el mismo. Calidad muy por debajo de lo aceptable cuando las imágenes originales son de calidad (para imágenes “usuales” si que es funcional). Obviamente modificamos todas las opciones de calidad en el backend de Prestashop ( Diseño > Ajustes de imágenes ), sin mejora importante del resultado. Nos somos a los primeros a los que les pasó (ver aquí y aquí). Es un tema recurrente y sin resolver (“sorpresa” por parte de Prestashop). Al final descubrimos por qué y cómo resolverlo. Os lo contamos en este artículo. Cómo mejorar la calidad de las imágenes que se suben o se importan en Prestashop. Lo primero es la causa que ocasiona esta pérdida de calidad. Prestashop comprime todas las imágenes al subirlas. Y crea varias imágenes de diferentes tamaños (que se definen en Diseño > Ajustes de imágenes ). Esto es lógico y bueno. El problema es que usa un método de compresión, GD2, que antes se usaba mucho por estar integrado en Php (o en la mayoría de las instalaciones). Sin embargo no es la librería que mejores resultados da, tiene pocas opciones y, además, creo que Php 7 ya no la incluye por defecto. Después de varias pruebas infructuosas con GD, optamos por cambiar a Imagemagick siguiendo las indicaciones de un post al que enlazamos en los párrafos anteriores. Siguiendo los resultados arreglaba algo la subida producto a producto, pero no la masiva. Y aún así, no conseguíamos los mejores resultados así que modificamos el proceso para lo que queríamos. Esto es lo que hicimos.. Para las subidas desde el backend. Tenemos que: Hacer un override (copiar en la carpeta override/classes) de la clase ImageManager.php porque queremos modificar la función resize para que use ImageMagick. Nota:  Para esto tu servidor tiene que tener ImageMagick o deberías poder instalarlo. Si no no funciona. En ese fichero   override/classes/ImageManager.php ponemos lo siguiente: <?php class ImageManager extends ImageManagerCore { /** * Resize, cut and optimize image * * @param string $src_file Image object from $_FILE * @param string $dst_file Destination filename * @param int $dst_width Desired width (optional) * @param int $dst_height Desired height (optional) * @param string $file_type * @param bool $force_type * @param int $error * @param int $tgt_width * @param int $tgt_height * @param int $quality * @param int $src_width * @param int $src_height * @return bool Operation result */ public static function resize2($src_file, $dst_file, $dst_width = null, $dst_height = null, $file_type = ‘jpg’, $force_type = false, &$error = 0, &$tgt_width = null, &$tgt_height = null, $quality = 5, &$src_width = null, &$src_height = null) { if (PHP_VERSION_ID < 50300) { clearstatcache(); } else { clearstatcache(true, $src_file); } if (!file_exists($src_file) || !filesize($src_file)) { return !($error = self::ERROR_FILE_NOT_EXIST); } list($src_width, $src_height, $type) = getimagesize($src_file); // If PS_IMAGE_QUALITY is activated, the generated image will be a PNG with .jpg as a file extension. // This allow for higher quality and for transparency. JPG source files will also benefit from a higher quality // because JPG reencoding by GD, even with max quality setting, degrades the image. if (Configuration::get(‘PS_IMAGE_QUALITY’) == ‘png_all’ || (Configuration::get(‘PS_IMAGE_QUALITY’) == ‘png’ && $type == IMAGETYPE_PNG) && !$force_type) { $file_type = ‘png’; } if (!$src_width) { return !($error = self::ERROR_FILE_WIDTH); } if (!$dst_width) { $dst_width = $src_width; } if (!$dst_height) { $dst_height = $src_height; } $width_diff = $dst_width / $src_width; $height_diff = $dst_height / $src_height; $ps_image_generation_method = Configuration::get(‘PS_IMAGE_GENERATION_METHOD’); if ($width_diff > 1 && $height_diff > 1) { $next_width = $src_width; $next_height = $src_height; } else { if ($ps_image_generation_method == 2 || (!$ps_image_generation_method && $width_diff > $height_diff)) { $next_height = $dst_height; $next_width = round(($src_width * $next_height) / $src_height); $dst_width = (int)(!$ps_image_generation_method ? $dst_width : $next_width); } else { $next_width = $dst_width; $next_height = round($src_height * $dst_width / $src_width); $dst_height = (int)(!$ps_image_generation_method ? $dst_height : $next_height); } } if (!ImageManager::checkImageMemoryLimit($src_file)) { return !($error = self::ERROR_MEMORY_LIMIT); } //Set Imagick Object values /* $src_image = new Imagick(); $src_image->readImage($src_file); $src_image->setImageCompression(Imagick::COMPRESSION_JPEG); $src_image->setInterlaceScheme(Imagick::INTERLACE_PLANE); $src_image->setImageCompressionQuality(89); $src_image->sharpenimage(2, 0.5, 134217727); $src_image->gaussianBlurImage(0.03,0.03); $src_image->stripImage(); $src_image->thumbnailImage($dst_width, $dst_height, Imagick::FILTER_SINC, 1);*/ $src_image = new Imagick(); $src_image->readImage($src_file); $src_image->setImageCompression(Imagick::COMPRESSION_JPEG); /*$src_image->setImageFormat(‘png’);*/ /*$src_image->setInterlaceScheme(Imagick::INTERLACE_PLANE);*/ $src_image->setImageCompressionQuality(89); /*$src_image->sharpenimage(1.5, 0.5, Imagick::CHANNEL_ALL);*/ /* $src_image->gaussianBlurImage(0.03,0.03);*/ $src_image->stripImage(); $src_image->thumbnailImage($dst_width, $dst_height, Imagick::FILTER_LANCZOS, 1); $src_image->brightnessContrastImage(1,0,Imagick::CHANNEL_ALL); $src_image->gammaImage(0.9,Imagick::CHANNEL_ALL); $src_image->modulateImage(100,120,100); //Output the final Image using Imagick return $src_image->writeImage($dst_file); } } Como veis hemos creado la función resize2 que usará ImageMagick. Dejando el nombre resize arregla el backend. Pero no las masivas. Eso si, si sólo hacemos esto con otro nombre no usa resize2 al subir productos. Tenemos que indicarle que lo haga. Para eso. Hacer un override en override/controllers/admin/AdminProductsController.php  . Ahí hay 5 sitios en el que llama a resize. Cambia los 5 a la función anterior (pon un 2 y ya está si has usado nuestro método. Para las importaciones masivas desde ficheros CSV o Excel en el backend. Sólo modificando el ImageManager no arreglaba las importaciones masivas. Estas van “por otro lado”. Usaban en resize pero además el GD de nuevo. Para eso tenemos que hacer lo siguiente. Ahora copiamos el fichero controlador AdminImportController.php en override/controllers/admin/AdminImportController.php Lo editamos y veréis que hay dos sitios que usan la biblioteca resize. Para el resultado que queríamos el primero hay que dejarlo usando la original (con resize) y el segundo el resize2. Así: ImageManager::resize($tmpfile, $path.’.jpg’, null, null, ‘jpg’, false, $error, $tgt_width, $tgt_height, 5, $src_width, $src_height); $images_types = ImageType::getImagesTypes($entity, true); if ($regenerate) { $previous_path = null; $path_infos = array(); $path_infos[] = array($tgt_width, $tgt_height, $path.’.jpg’); foreach ($images_types as $image_type) { $tmpfile = self::get_best_path($image_type[‘width’], $image_type[‘height’], $path_infos); if (ImageManager::resize2( $tmpfile, $path.’-‘.stripslashes($image_type[‘name’]).’.jpg’, $image_type[‘width’], $image_type[‘height’], ‘jpg’, false, $error, $tgt_width, $tgt_height, 5, $src_width, $src_height Con esto nuestra imágenes han mejorado notablemente. Puedes

Diseño Web, Gestores de contenidos

Cómo activar las Notificaciones Push en WordPress

¿Qué son las Notificaciones Push? Son esos avisos que te salen al entrar en una página web para Aceptar o Bloquear.  Si los aceptas, la página podrá mandarte avisos a través del navegador con noticias, nuevos posts, novedades etc. Es decir, es un método de comunicación entre una web y un usuario directamente en el navegador (algo que se usa constantemente), sin tener pop-ups  no deseados (estas las aceptas o bloqueas) ni correo spam. Hoy os enseñamos a activarlo en WordPress. Cómo activar las Notificaciones Push en WordPress. Lo primero es elegir un plugin para mandar esas notificaciones. Hay muchas opciones, tanto gratuitas como de pago. Os comentaremos las gratuitas y sus pros y contras. OneSignal. Teníamos que incluirlo el primero. Es sin duda el que da más opciones de maneraa gratuita, y uno de los más usados. De hecho explicaremos el proceso con este plugin. Pros: La cuenta gratuita no tiene límite de suscriptores (en algunas partes pone sin límite para móvil y 30.000 para web) ni límite de notificaciones. Esta es una GRAN ventaja ya que la competencia suele limitar alguna de estas opciones. Una cuenta se puede usar para varias webs. Cons: ¿Cuál es el truco? OneSignal vende los datos recopilados cuando usas su cuenta gratuita. Así lo mantiene y es su modelo de negocio, lo expone claramente: “Data from free plan users may be shared with advertising and research partners to help cover the cost of providing this service.” Esto implica que tendrás, si aceptas usar la gratuita, que cambiar tu política de privacidad para reflejar esta cesión. Si quieres usar la de pago, no ceden datos (en teoría) pero tiene límites. SendPulse.  Sin límite de suscriptores. Sin límite de notificaciones. También pueden ceder información a terceros y añadir publicidad suya en tus notificaciones en la cuenta gratuita. PushEngage: El gratuito permite 2500 suscriptores sin límite de envíos. Push Notifications for WordPress Lite: 1000 notificaciones por plataforma (iOS, Android etc) por cada post. PushMonkey: Hasta 100 suscriptores. El segundo paso sería configurar el plugin. Vamos a usar OneSignal como ejemplo. Descargamos e instalamos el plugin elegido. Creamos una cuenta en OneSignal. Pinchamos en Add App y ponemos un nombre. Por ejemplo el de la web. Elegimos el tipo de plataforma (Web Push en este caso). Configuramos el tipo de Web Push. En este caso elegimos WordPress como tipo de web y WordPress como CMS. Configuramos los datos de nuestra web. Una vez hecho esto obtendras un  APP ID y un API KEY. Cópialos. Ve a WordPress, a la configración del plugin y pega ahí estos datos. Con esto se activan las notificaciones para Chrome y Firefox. Ahora vuele al panel de OneSignal y verás que en la App de deja activar Safari. Hazlo, pon la configuración  te da un Web ID. Vuelve al plugin y pone el Web ID debajo de los IDs anteriores para activar Safari. Ahora en el plugin configura las opciones. Sugerimos activar la opción “Automatically prompt new site visitors to subscribe to push notifications”  para que avise a cada usuario nuevo para que se suscriba. Y también la de las notificaciones automáticas cada vez que publicas un post para que tus suscriptores reciban las noticias. Con esto ya lo tienes. Pruébalo y a comunicarte con tus usuarios. Recuerda que desde Messages del panel de OneSignal puedes mandar mensajes a tus suscriptores (con noticias).

Diseño Web, Prestashop, Trucos

Cómo insertar un vídeo en un producto o módulo de Prestashop

Nos lo ha pedido algún cliente, somos muy vagos y creamos un vídeo para no explicarlo cada vez. Cómo insertar un vídeo en un producto de Prestashop. Sirve lo mismo para un módulo de las barras laterales o del contenido. Sólo tienen que tener editores html El vídeo se puede insertar en el resumen como en la descripción. Tienes dos métodos. Insertar la URL. Casi todos los editores tienen un botón para insertar vídeo. Sólo tienes que copiar la URL (dirección del navegador) de tu vídeo y pegarlo en la ventana que salga al pinchar en ese botón. En Prestashop además te deja cambiar el tamaño y la imagen que presenta el vídeo (si no pones una usa la de Youtube o Vimeo). El mayor problema es que, una vez hecho, si quieres modificar, tienes que editar código o borrar el vídeo y volver a ponerlo. Y que el resultado no suele ser responsive (cuidado con el tamaño que pongas). Incrustar vídeo (embed). El segundo método es más laborioso pero lo usamos cuando no funciona el anterior (sólo es compatible con ciertos servicios de vídeo) o cuando queremos personalizar más lo que insertamos (por ejemplo hacer Youtube responsive). Para ello vamos a pinchar en el botón de Compartir en Youtube (no todos los vídeos lo tienen, tiene que aprobarlo el creador) y elegir la opción Insertar. Ahí veras un código que tienes que copiar  y pegar en Prestashop>Insertar /Editar Video>Incrustar. En ese iframe podemos personalizar width y height y poner CSS y otros cambios.

Diseño Web, Prestashop, Trucos

Campos obligatorios en el registro de Prestashop: DNI, teléfono, código postal

Esto debería ser fácil, deberías poder entrar en la configuración de Prestashop y marcarlo. Pero no… Estar está ahí, pero parece que lo han escondido a conciencia. Os decimos cómo seleccionar los campos que queréis que sean obligatorios en el registro de Prestashop. Campos obligatorios en el registro de Prestashop DNI, teléfono código postal. Método 1. Para seleccionar que campos, dentro de los que deja Prestashop, son obligatorios en el registro de Prestashop tienes que ir al backend a Clientes > Direcciones. Ahí aparece todas las listas de direcciones de clientes registrados y, al final (casi para pasar desapercibido, tienes un campo recogido con un +, llamado Establecer los campos requeridos para esta sección. Pincha en el más y verás una serie de campos que puedes seleccionar. Siempre es mejor hacerlo de esta manera porque no retocas ni el sistema ni la plantilla. Nota: esto debería funcionar en teoría. A nosotros en la 1.7.42 se nos marca la casilla (teléfono) pero al refrescar se desmarca. No hay manera. Usamos el modo 2. Método 2. Si esto no te vale, o necesitas algún otro campo puedes hacerlo de esta manera. Primero tienes que ver si es un campo de cliente o de dirección. Por ejemplo teléfono es de dirección. Los campos de dirección están en Address.php y el de cliente en Customer.php, ambos en el directorio clases. Te ponemos el ejemplo con el de cliente (es lo mismo en Address). Copia el fichero classes/Customer.php en la carpeta override/classes/Customer.php Edita el fichero. Donde pone /**     * @see ObjectModel::$definition     */    public static $definition = array(        ‘table’ => ‘customer’,        ‘primary’ => ‘id_customer’, Vienen todos los campos. Sólo tienes que poner ‘required’ => true al final del campo que quieras que sea obligatorio. Por ejemplo si quieres la empresa obligatorio cambias: ‘company’ =>array(‘type’ => self::TYPE_STRING, ‘validate’ =>’isGenericName’), por ‘company’ =>array(‘type’ => self::TYPE_STRING, ‘validate’ => ‘isGenericName’,’required’ => true), Algún campo puede requerir más modificaciones porque impliquen algún otro campo más (por ejemplo el cumpleaños incluye año, mes y día). Una vez hecho este cambio, da un error 500 si intentas dejar vacío el campo. En Address.php hay que modificar el fichero AddressFormat.php (copialo antes a override/classes) y meter el valor en el array required. Por ejemplo aquí meto al final el phone: /** @var array Default required form fields list */ public static $requireFormFieldsList = array( ‘firstname’, ‘lastname’, ‘address1’, ‘city’, ‘Country:name’, ‘phone’, ); En Customer.php hay que buscar la clase que valida y hacer lo mismo.

Clientes, Diseño Web, Trabajos

Nueva web para Laosgarden. Tienda online

Hoy os presentamos uno de los proyectos en que llevamos trabajando desde verano. La nueva web para Laos Garden, una de las mejores (si no la mejor) tiendas de bonsai de Europa. https://www.laosgarden.com Esta web ha sido un proyecto intenso, por varias razones. Por un lado porque la nueva web tenía muchos requisitos personalizados de envíos y productos. Además tenían mucho stock con imágenes de calidad e información que había que importar. Además el cliente tenía muy claro todas las funcionalidades y requisitos de la nueva web y ha ido repasando cada paso con nosotros. Esto siempre es de agradecer, porque hace que el producto final sea mucho mejor y haya pasado por múltiples revisiones (reduciendo los errores posibles).  Pero produce muchas horas de revisión, y mejoras. Al final, ha sido un parto exitoso, deseado y estamos muy contentos con el resutlado. Estamos hablando de una web que puede vender automáticamente a cualquier lugar de Europa, con varios transportistas según zona y peso. También puede vender fuera de zona con opciones de recibir la información tras el pedido. Permite varios métodos de pago, es responsive y además gestiona los pedidos realizados en la tienda física. Las imágenes son mejoradas con respecto al Prestashop por defecto (ya explicaremos cómo). Como decimos… estamos todos muy contentos con el producto final.

Diseño Web, Gestores de contenidos, Prestashop

Prestashop: mostrar las variables y valores que llegan a un tpl en Smarty con debug

Cuando tienes que modificar ficheros tpl en Prestashop, muy a menudo necesitas saber qué variables le llegan desde Smarty (no las de la plantilla). Porque existen unas variables globales y otras que llegan a cada plantilla (diferentes a cada una). Si no pierdes mucho tiempo “probando”. Cómo mostrar las variables y valores que llegan a un tpl en Smarty. Esto para nosotros ha sido “un descubrimiento”.  Sólo tienes que poner {debug} en la plantilla tpl que quieras “evaluar”. Después de poner ese código, recarga la página. El código va a producir un pop-up, así que comprueba que el navegador no te lo está bloqueando. Cuando lo activas, saldrá un pop up como el de la imagen con las variables buscadas y sus valores. Con eso sólo tienes que programar lo que necesites. Esto es muy útil para programar cambios, pero también para hacer “debug”, es decir para ver por qué falla alguna cosa. Las de la plantilla puedes obtenerlas con getTemplateVars. Por ejemplo con: $all_tpl_vars = $smarty->getTemplateVars(); var_dump($all_tpl_vars);

Scroll al inicio