Variables Smarty en Plantilla Prestashop
Variables Smarty en Plantilla Prestashop. EL CMS de comercio electrónico Prestashop 1.7.1, trabaja en base a variables Smarty y son almacenadas en ficheros de tipo TPL, son definidas mediante llaves, por ejemplo: {$shop.name}
Si estamos usando el CMS Prestashop para desarrollar su sitio de comercio electrónico, es posible que deba ver un producto o página en función de una condicional y/o quitar o agregar un valor.
Variables Smarty en Plantilla Prestashop
Para gestionar estas variables, debe editar los archivos del tema especialmente los ficheros «.tpl» y utilizando algunas variables de lenguaje Smarty utilizadas por Prestashop. En el presente post les dejare varias categorías donde pueden aplicar estas formidables variables.
Entonces, podemos usar la variable “$currency” en los archivos de tipo “.tpl” , para obtener distintos valores de la moneda activa en tu tienda.
Variables de tienda Prestashop
Al estar configurando y personalizando tu tienda vas a tener que llegar a este punto la de conocer las variables que manejan la tienda para mostrar una determinada Información, aquí te dejare los datos generales sobre tu tienda online
{$shop.name} Nombre de la tienda
{$shop.email} Correo electrónico de la tienda
{$shop.logo} Logotipo de la tienda
{$shop.favicon} Icono de tienda (mapa, título de la ventana del navegador, etc.)
{$shop.address.address1} Dirección de la tienda 1
{$shop.address.address2} Dirección de la tienda 2
{$shop.address.postcode} Código postal de la tienda
{$shop.address.city} Ciudad de la tienda
{$shop.address.state} Estado de la tienda (provincia)
{$shop.address.country} País de la tienda
{$shop.phone} Tienda Teléfono
{$shop.fax} Almacenar fax
Variables Smarty de Idioma Prestashop
Para manejar el idioma en Prestashop puedes echarle mano a estas 5 variables que quizá utilizaras en tu proyecto.
{$language.name} Nombre del idioma en uso (ejemplo: inglés)
{$language.iso_code} Código ISO del idioma en uso (it para italiano, fr para francés, etc.)
{$language.language_code} Código del idioma en uso (it para italiano, en-us para inglés americano, etc.)
{$language.is_rtl} (1 cuando el idioma se escribe de derecha a izquierda; 0 si se escribe de izquierda a derecha)
{$language.id} Valor de ID del idioma en uso
Manejando variables de Divisa
Por defecto, la moneda en este CMS está en dólares americanos y para gestionar este tema te dejare estas variables Smarty para que lo personalices.
{$currency.name} Nombre de la moneda en uso (euro, dólar americano, etc.)
{$currency.iso_code} Moneda Código ISO de la moneda en uso (Eur, USD, etc.)
{$currency.sign} Símbolo de la moneda en uso (€, $, etc.)
{$currency.iso_code_num} Número de código ISO de la moneda en uso (978 para euros, 840 para dólares americanos, etc.)
Páginas y elementos del sitio de comercio electrónico.
Manejar otros datos generales de la tienda como ser la URL BASE o la URL de las imágenes podemos usar estas variables para personalizar nuestros módulos o themes de este famoso CMS.
{$urls.base_url} Dirección web de la tienda (ejemplo: https://www.midominio.com)
{$urls.current_url} Dirección web actual (url), la página que estamos viendo
{$urls.shop_domain_url} Dominio de la tienda
{$urls.img_ps_url} URL del directorio raíz de la imagen
{$urls.img_cat_url} URL del directorio de imágenes de categorías
{$urls.img_lang_url} URL del directorio de imágenes de idiomas
{$urls.img_prod_url} URL del directorio de imágenes de productos
{$urls.img_manu_url} URL del directorio de imágenes de fabricantes
{$urls.img_sup_url} URL del directorio de imágenes de proveedores
{$urls.img_ship_url} URL del directorio de imágenes de los transportistas
{$urls.img_store_url} URL del directorio de imágenes de la tienda física
{$urls.img_url} URL del directorio de imágenes del tema
{$urls.css_url} Url del directorio de archivos css utilizado por el tema
{$urls.js_url} URL del directorio de archivos javascript utilizado por el tema
{$urls.pic_url} URL del directorio cargado del archivo
{$page.page_name} Nombre de la página (plantilla de archivo)
{$page.meta.title} Título de la página (SEO)
{$page.meta.description} Contenido de la descripción de la etiqueta (SEO)
{$page.meta.keywords} Etiquetar contenido de palabras clave (SEO)
{$page.meta.robots} Regla para motores de búsqueda: bloquea o no la indexación de páginas (SEO)
{$page.canonical} Indica la URL canónica (principal) para evitar duplicidad de contenidos (SEO)
{$urls.pages.address} Url de la sección "Mi dirección" (usuario registrado)
{$urls.pages.addresses} Url de la sección "Mis direcciones" (usuario registrado)
{$urls.pages.authentication} URL de la página de autenticación
{$urls.pages.cart} URL de la página del carrito (resumen del pedido)
{$urls.pages.category} URL de la categoría
{$urls.pages.cms} URL de la página (tipo CMS)
{$urls.pages.contact} URL de la página de contacto
{$urls.pages.discount} URL de la página del cupón de descuento
{$urls.pages.guest_tracking} URL de seguimiento para clientes no registrados
{$urls.pages.history} URL de la página "Historial de pedidos" (usuario registrado)
{$urls.pages.identity} Url de la página "Datos personales" (usuario registrado)
{$urls.pages.index} URL de la página de inicio
{$urls.pages.my_account} URL de la página "Mi cuenta" (usuario registrado)
{$urls.pages.order_confirmation} Url de la página "Confirmación de pedido"
{$urls.pages.order_follow} Url en el "Seguimiento de pedidos" (usuario registrado)
{$urls.pages.order} URL de la página "Pedido"
{$urls.pages.order_return} URL de la página "Devolución de pedido"
{$urls.pages.order_slip} Url de la página "Comprobante de pedido"
{$urls.pages.pagenotfound} Url del "404 - Página no encontrada"
{$urls.pages.password} URL de la página "Recuperar contraseña"
{$urls.pages.pdf_invoice} Url de factura en PDF
{$urls.pages.pdf_order_return} URL de devolución de pedido en PDF
{$urls.pages.pdf_order_slip} URL del comprobante de pedido en PDF
{$urls.pages.prices_drop} URL de la página "Nuestras ofertas"
{$urls.pages.product} URL de la página "Producto"
{$urls.pages.search} Url de la página "Buscar"
{$urls.pages.sitemap} URL de la página "Mapa del sitio"
{$urls.pages.stores} URL de la página "Tiendas/Nuestras tiendas"
{$urls.pages.supplier} URL de la página "Proveedores"
{$urls.pages.register} URL de la página "Registrarse"
{$urls.pages.order_login} URL de la página "Iniciar sesión"
{$urls.theme_assets} Url del directorio "assets" del tema
{$urls.actions.logout} Url para desconectarse del sitio (usuario registrado)
Variables Smarty de Carrito de compras Prestashop
Para personalizar nuestro carrito de compras tenemos estas 11 variables que puedes utilizar.
{$cart.totals.total.amount}La cantidad total del carrito sin moneda (ej: 45,00)
{$cart.totals.total.value} El importe total del carrito con moneda (ej: 45,00 €)
{$cart.totals.total_incluidos_impuestos.cantidad} El importe total del carrito, impuestos incluidos, sin moneda (ej: 45,00)
{$cart.totals.total_incluidos_impuestos.valor} El importe total del carrito, impuestos incluidos, con moneda (por ejemplo, 45,00 €)
{$cart.totals.total_excluyendo_tax.amount} El importe total del carrito, sin incluir impuestos, sin moneda (esempio: 35,70)
{$cart.totals.total_exclusive_tax.value} El importe total del carrito, sin impuestos, con moneda (esempio: 35,70 €)
{$cart.products_count} Número de productos en el carrito
{$cart.subtotals.products.amount} La cantidad de productos en el carrito sin moneda
{$cart.subtotals.products.value} La cantidad de productos en el carrito con moneda
{$cart.subtotals.shipping.amount} La cantidad de envío en el carrito sin moneda
{$cart.subtotals.shipping.value} La cantidad de envío en el carrito con moneda
Área de clientes: Variables Smarty
En los ficheros TPL de Prestashop puedes utilizar estas variables para gestionar los datos de nuestros clientes en la tienda online.
{$cliente.apellido} Apellido del cliente
{$customer.firstname} Nombre del cliente
{$customer.email} Correo electrónico del cliente (proporcionado durante el registro)
{$cliente.cumpleaños} Cumpleaños del cliente
{$customer.newsletter} Suscrito al boletín (1 si está suscrito, 0 si no está suscrito)
{$customer.newsletter_date_add} Fecha de suscripción al boletín
{$customer.ip_registration_newsletter} IP de Clientes en el registro del boletín
{$customer.optin} Suscrito a ofertas de socios (1 si está suscrito, 0 si no está suscrito)
{$customer.date_add} Registro de clientes
{$customer.date_upd} Última actualización (registro de cliente)
{$cliente.id} ID de cliente
{$customer.id_default_group} Grupo de ID al que está asociado el cliente
{$customer.is_logged} Comprobar si el cliente está "registrado" (1 sí, 0 no)
{$customer.gender.name[$customer.gender.id]} Género del cliente (ejemplo: Sra., Sr., etc.)
{$customer.addresses[AddressID].city} Cliente Ciudad de la dirección con un ID (AddressID, ejemplo 8, donde 8 es el ID de la dirección del cliente), porque un cliente podría tener varias direcciones)
{$customer.addresses[AddressID].alias} Alias de dirección
{$customer.addresses[AddressID].firstname} Nombre del titular de la dirección
{$cliente.direcciones[AddressID].apellido} Apellido del titular de la dirección
{$customer.addresses[AddressID].company} Dirección Empresa titular
{$customer.addresses[AddressID].address1} Dirección del titular de la dirección 1
{$customer.addresses[AddressID].address2} Dirección del titular de la dirección 2
{$customer.addresses[AddressID].postcode} Dirección Titular Código postal
{$customer.addresses[AddressID].id_state} Estado del ID del titular de la dirección
{$customer.addresses[AddressID].state} Nombre del estado del titular de la dirección
{$customer.addresses[AddressID].state_iso} Código ISO del estado del titular de la dirección
{$customer.addresses[AddressID].id_country} ID del titular de la dirección país
{$customer.addresses[AddressID].country} Nombre del país del titular de la dirección
{$customer.addresses[AddressID].country_iso} País del titular de la dirección ISO
{$customer.addresses[AddressID].phone} Dirección Teléfono del titular
{$customer.addresses[AddressID].phone_mobile} Teléfono móvil del titular de la dirección
{$cliente.direcciones[AddressID].dni} Dirección Titular DNI
{$customer.addresses[AddressID].vat_number} Número de IVA del titular de la dirección
{$customer.addresses[AddressID].formatted} Dirección Dirección con formato del titular
Condicionales: Variables Smarty
Ahora, con las variables inteligentes utilizadas por Prestashop, puede mostrar un elemento en función de una condición o no.
1.- Página de inicio: condicional
Por ejemplo:
Mostrar un elemento si la página activa está en la página de inicio
{if $page.page_name == 'index'}
content to show
{/if}
2.- Página CMS
Mostramos un elemento si la página que está viendo es una página de contenido (CMS)
{if $page.page_name == 'cms'}
content to show
{/if}
3.- Página actual en carrito de compras
Mostrar un artículo si la página que está viendo es la página del carrito por parte del cliente
{if $page.page_name == 'cart'}
content to show
{/if}
4.- Al iniciar sesión
Si el usuario se ha logueado mostrara un elemento si el usuario ha iniciado sesión (login) en Prestashop
{if $customer.is_logged}
content to show
{/if}
5.- Mensaje personalizado por usuario logueado
Esta condicional mostrara un mensaje de bienvenida traducible y el nombre si el usuario ha iniciado sesión en la plataforma de comercio electrónico.
{if $customer.is_logged && $customer.firstname}
{l s='Hi' d='Shop.Theme.Global'} {$customer.firstname}
{/if}
6.- Condicional Smarty en boletín (Newsletter)
Simplemente mostrara un mensaje traducible dependiendo de si el usuario está registrado o no a la Newsletter
{if $customer.newsletter == 0}
{l s='Sign up to our newsletter!' d='Shop.Theme.Customeraccount'}
{else}
{l s='You are already subscribed to our newsletter' d='Shop.Theme.Customeraccount'}
{/if}
Otras variables Smarty en Prestashop muy útiles que puedes usar tanto en plantillas como en módulos.
{$subcategory.id_image|@print_r} ==> Print an array
{$page|@print_r} ==> Print page array
{if $subcategory.id_image neq it-default1} {else} {/if} ==> Check if subcategory has image
{$urls.base_url} ==> Prestashop site baseUrl
{$urls.base_url} ==> Store address
{$urls.current_url} ==> Current address (url) where we are
{$urls.shop_domain_url} ==> Store domain
{$urls.img_ps_url} ==> Image root directory url
{$urls.img_cat_url} ==> Url directory of images of the categories
{$urls.img_lang_url} ==> Url of the language images directory
{$urls.img_prod_url} ==> Url of the product images directory
{$urls.img_manu_url} ==> Url directory of manufacturers images
{$urls.img_sup_url} ==> Url of the providers directory
{$urls.img_ship_url} ==> Url directory of images of carriers
{$urls.img_url} ==> Url of the image directory of the template
{$urls.css_url} ==> Template URL directory url
{$urls.js_url} ==> Template JS directory url
{$urls.pic_url} ==> Url file directory uploaded
{$urls.pages.address} ==> Url from the "My Address" section
{$urls.pages.addresses} ==> Url from the "My addresses" section
{$urls.pages.authentication} ==> Url section of the authentication page
{$urls.pages.cart} ==> Cart section url (order summary)
{$urls.pages.category} ==> Url section of categories
{$urls.pages.cms} ==> Url of the content section
{$urls.pages.contact} ==> Url section of the contact form
{$urls.pages.discount} ==> Url of the discount voucher section
{$urls.pages.guest_tracking} ==> Tracking url for unregistered clients
{$urls.pages.history} ==> Url from the order history section
{$urls.pages.identity} ==> Url of the section "Personal data"
{$urls.pages.index} ==> Page url
{$urls.pages.my_account} ==> Url section of my account
{$urls.pages.order_confirmation} ==> Url section of the order confirmation page.
{$urls.pages.order_follow} ==> Url in the "Order Tracking"
{$urls.pages.pagenotfound} ==> Url of section "404 (Page not found)"
{$urls.pages.password} ==> Url of the section "Recover Password"
{$urls.pages.prices_drop} ==> Url section we lowered prices / products discount / discounts
{$urls.pages.product} ==> Product tab url
{$urls.pages.search} ==> Url of the searcher section
{$urls.pages.sitemap} ==> Site Map section url
{$urls.pages.stores} ==> Url of the section "Shops / Our stores"
{$urls.pages.supplier} ==> Url from the providers section
{$urls.pages.register} ==> Url log page
{$urls.theme_assets} ==> Url of the "assets" directory of the template / themes / template / assets /
{$urls.actions.logout} ==> Url to close section in the store
{$cart} ==> Information about cart. Read entries below for more informations
{$cart->id} ==> ID of customer cart
{$cart->id_shop_group} ==> ID of shop group (multistore feature)
{$cart->id_shop} ==> ID of shop (multistore feature)
{$cart->id_address_delivery} ==> ID of customer address delivery (only if order was made)
{$cart->id_address_invoice} ==> ID of customer address invoice (only if order was made)
{$cart->id_currency} ==> ID of cart currency
{$cart->id_customer} ==> ID of customer for which cart belongs (only if customer is logged)
{$cart->id_guest} ==> ID of shop guest
{$cart->id_lang} ==> ID of cart language
{$cart->recycable} ==> Bool value if recycable checked for this cart
{$cart->gift} ==> Bool value if gift checed for this cart
{$cart->gift_message} ==> Gift message
{$cart->mobile_theme} ==> Bool value if cart was created on mobile device
{$cart->date_add} ==> Date of cart creation
{$cart->date_upd} ==> Date of cart update
{$cart->id_carrier} ==> Id of cart carrier (if selected)
{$cart->checkedTos} ==> Bool value if terms of service is checked
{$img_cat_dir} ==> URL for the directory with categories images
{$img_ps_dir} ==> URL for the directory with PrestaShop image
{$img_lang_dir} ==> URL for the directory with languages images
{$img_sup_dir} ==> URL for the directory with suppliers images
{$img_ship_dir} ==> URL for the directory with carriers images
{$img_prod_dir} ==> URL for the directory with products images
{$img_manu_dir} ==> URL for the directory with manufacturers images
{$img_dir} ==> URL for the directory with theme’s images
{$css_dir} ==> URL for the directory with theme’s CSS
{$modules_dir} ==> URL for the directory with modules
{$mail_dir} ==> URL for the directory with mail templates
{$js_dir} ==> URL for the directory with theme’s JavaScript
{$tpl_dir} ==> URL for the directory with current theme's
{$pic_dir} ==> URL for the directory with uploaded pictures
{$lang_iso} ==> ISO code for the current language
{$cart_qties} ==>Number of products in the cart
{$come_from} ==> URL for the visitor’s origin
{$shop_name} ==> Shop name
{$currency} ==> Currency object (currently used currency).
{$currencies} ==> The various available currencies
{$id_currency_cookie} ==> ID of the current currency
{$cookie} ==> User cookie
{$languages} ==> The various available languages
{$priceDisplay} ==> Price display method (with or without taxes…)
{$roundMode} ==> Rounding method in use
{$logged} ==> Indicates whether the visitor is logged to a customer account
{$page_name} ==> Page name
{$customerName} ==> Client name (if logged in)
{$use_taxes} ==> Indicates whether taxes are enabled or not
Resumen
En este articulo hemos aprendido a conocer las variables Smarty de diferentes categorías que se puede usar en nuestra tienda. Sin embargo, se puede agregar etiquetas HTML
Además, vimos el uso de condicionales para mostrar o no una determinada información, esta puede ser una consulta SQL desde MySQL o algún mensaje estático.
También se pueden crear variables por consiguiente ese tema lo abordaremos en otro articulo