Prestashop 1.7 et variables Smarty

Les webmasters et autres développeurs informatiques qui ont opté pour la solution e-commerce Prestashop ont du avoir de belles surprises en découvrant la version 1.7. Tout du moins, pour ceux qui ont les mains dans le cambouis en vue de modifier le templates du site e-commerce notamment au niveau des fichiers ayant pour extension .tpl.

Les variables Smarty usuellement utilisées jusqu’à la version 1.6 ne sont plus reconnus dans la dernière mouture de Prestashop . Très fâcheux dans certains cas de figure. Par exemple, pour n’afficher des images que sur certaines pages, j’avais personnellement pour habitude de tester le nom de la page courante avec la variable $page_name. Du genre, pour n’afficher un bloc HTML que sur la page d’accueil, je procécédais de la manière suivante :

e-commerce

{if $page_name == "index"}

....
mon code HTML
....

{/if}

Cela ne fonctionne plus ! A présent, il faut procéder de la sorte :

{if $urls.current_url == $urls.pages['index']}

....
mon code HTML
....

{/if}

Idem pour récupérer des informations sur le produit ou sur la catégorie. Le mieux est de procéder à un var dump. Jusqu’à présent, je n’utilisais celui-ci qu’en PHP et jamais en Smarty. Et bien, il n’y a pas mieux pour avoir la liste de ces variables qui sont tout de même assez nombreuses. Après, à vous de les exploiter à votre convenance.

Se former au e-commerce avec prestashop à Lille et Valenciennes (Nord)
Formation prestashop à Lille et Valenciennes

Voici le retour de différents var_dump exécutés dans un fichier .tpl pour un Prestashop installé en local :

  • {$urls|@var_dump}}
  • {$product|@var_dump}}
array (size=116)
  'id_shop_default' => string '1' (length=1)
  'id_manufacturer' => string '1' (length=1)
  'id_supplier' => string '1' (length=1)
  'reference' => string 'demo_1' (length=6)
  'supplier_reference' => string '' (length=0)
  'location' => string '' (length=0)
  'width' => string '0.000000' (length=8)
  'height' => string '0.000000' (length=8)
  'depth' => string '0.000000' (length=8)
  'weight' => string '0.000000' (length=8)
  'quantity_discount' => string '0' (length=1)
  'ean13' => string '' (length=0)
  'isbn' => string '' (length=0)
  'upc' => string '' (length=0)
  'cache_is_pack' => string '0' (length=1)
  'cache_has_attachments' => string '0' (length=1)
  'is_virtual' => string '0' (length=1)
  'state' => string '1' (length=1)
  'id_category_default' => string '5' (length=1)
  'id_tax_rules_group' => string '1' (length=1)
  'on_sale' => string '0' (length=1)
  'online_only' => string '0' (length=1)
  'ecotax' => 
    array (size=3)
      'value' => string '0,00 €' (length=9)
      'amount' => string '0.000000' (length=8)
      'rate' => float 0
  'minimal_quantity' => string '1' (length=1)
  'price' => string '19,81 €' (length=10)
  'wholesale_price' => string '4.950000' (length=8)
  'unity' => string '' (length=0)
  'unit_price_ratio' => string '0.000000' (length=8)
  'additional_shipping_cost' => string '0.00' (length=4)
  'customizable' => string '0' (length=1)
  'text_fields' => string '0' (length=1)
  'uploadable_files' => string '0' (length=1)
  'redirect_type' => string '404' (length=3)
  'id_product_redirected' => string '0' (length=1)
  'available_for_order' => string '1' (length=1)
  'available_date' => null
  'show_condition' => string '0' (length=1)
  'condition' => boolean false
  'show_price' => boolean true
  'indexed' => string '0' (length=1)
  'visibility' => string 'both' (length=4)
  'cache_default_attribute' => string '1' (length=1)
  'advanced_stock_management' => string '0' (length=1)
  'date_add' => string '2016-11-08 12:18:55' (length=19)
  'date_upd' => string '2016-11-23 11:25:41' (length=19)
  'pack_stock_type' => string '3' (length=1)
  'meta_description' => string '' (length=0)
  'meta_keywords' => string '' (length=0)
  'meta_title' => string '' (length=0)
  'link_rewrite' => string 't-shirt-delave-manches-courtes' (length=30)
  'name' => string 'T-shirt délavé à manches courtes' (length=35)
  'description' => string '<p>Fashion propose des vêtements de qualité depuis 2010. La marque propose une gamme féminine composée d'élégants vêtements à coordonner et de robes originales et offre désormais une collection complète de prêt-à-porter, regroupant toutes les pièces qu'une femme doit avoir dans sa garde-robe. Fashion se distingue avec des looks à la fois cool, simples et rafraîchissants, alliant élégance et chic, pour un style reconnaissable entre mille. Chacune des magnifiques pièces de la collection est '... (length=681)
  'description_short' => string '<p>T-shirt délavé à manches courtes et col rond. Matière douce et extensible pour un confort inégalé. Pour un look estival, portez-le avec un chapeau de paille !</p>' (length=172)
  'available_now' => string 'En stock' (length=8)
  'available_later' => string '' (length=0)
  'id' => int 1
  'id_product' => int 1
  'out_of_stock' => int 2
  'new' => int 0
  'id_product_attribute' => int 1
  'quantity_wanted' => int 1
  'extraContent' => 
    array (size=0)
      empty
  'allow_oosp' => int 0
  'category' => string 't-shirts' (length=8)
  'category_name' => string 'T-shirts' (length=8)
  'link' => string 'http://localhost/prestashop/t-shirts/1-t-shirt-delave-manches-courtes.html' (length=74)
  'attribute_price' => float 0
  'price_tax_exc' => float 16.51
  'price_without_reduction' => float 19.812
  'reduction' => float 0
  'specific_prices' => boolean false
  'quantity' => int 299
  'quantity_all_versions' => int 1799
  'id_image' => string 'fr-default' (length=10)
  'features' => 
    array (size=3)
      0 => 
        array (size=3)
          'name' => string 'Compositions' (length=12)
          'value' => string 'Coton' (length=5)
          'id_feature' => string '5' (length=1)
      1 => 
        array (size=3)
          'name' => string 'Styles' (length=6)
          'value' => string 'Décontracté' (length=13)
          'id_feature' => string '6' (length=1)
      2 => 
        array (size=3)
          'name' => string 'Propriétés' (length=12)
          'value' => string 'Manches courtes' (length=15)
          'id_feature' => string '7' (length=1)
  'attachments' => 
    array (size=0)
      empty
  'virtual' => int 0
  'pack' => int 0
  'packItems' => 
    array (size=0)
      empty
  'nopackprice' => int 0
  'customization_required' => boolean false
  'attributes' => 
    array (size=2)
      1 => 
        array (size=8)
          'id_attribute' => string '1' (length=1)
          'id_attribute_group' => string '1' (length=1)
          'name' => string 'S' (length=1)
          'group' => string 'Taille' (length=6)
          'reference' => string '' (length=0)
          'ean13' => string '' (length=0)
          'isbn' => string '' (length=0)
          'upc' => string '' (length=0)
      3 => 
        array (size=8)
          'id_attribute' => string '13' (length=2)
          'id_attribute_group' => string '3' (length=1)
          'name' => string 'Orange' (length=6)
          'group' => string 'Couleur' (length=7)
          'reference' => string '' (length=0)
          'ean13' => string '' (length=0)
          'isbn' => string '' (length=0)
          'upc' => string '' (length=0)
  'rate' => float 20
  'tax_name' => string 'TVA FR 20%' (length=10)
  'ecotax_rate' => float 0
  'unit_price' => string '' (length=0)
  'customizations' => 
    array (size=1)
      'fields' => 
        array (size=0)
          empty
  'id_customization' => int 0
  'is_customizable' => boolean false
  'show_quantities' => boolean true
  'quantity_label' => string 'Produits' (length=8)
  'quantity_discounts' => 
    array (size=0)
      empty
  'customer_group_discount' => float 0
  'weight_unit' => string 'kg' (length=2)
  'images' => 
    array (size=2)
      0 => 
        array (size=9)
          'bySize' => 
            array (size=5)
              ...
          'small' => 
            array (size=3)
              ...
          'medium' => 
            array (size=3)
              ...
          'large' => 
            array (size=3)
              ...
          'legend' => string '' (length=0)
          'cover' => string '1' (length=1)
          'id_image' => string '1' (length=1)
          'position' => string '1' (length=1)
          'associatedVariants' => 
            array (size=3)
              ...
      1 => 
        array (size=9)
          'bySize' => 
            array (size=5)
              ...
          'small' => 
            array (size=3)
              ...
          'medium' => 
            array (size=3)
              ...
          'large' => 
            array (size=3)
              ...
          'legend' => string '' (length=0)
          'cover' => null
          'id_image' => string '2' (length=1)
          'position' => string '2' (length=1)
          'associatedVariants' => 
            array (size=3)
              ...
  'cover' => 
    array (size=9)
      'bySize' => 
        array (size=5)
          'small_default' => 
            array (size=3)
              ...
          'cart_default' => 
            array (size=3)
              ...
          'home_default' => 
            array (size=3)
              ...
          'medium_default' => 
            array (size=3)
              ...
          'large_default' => 
            array (size=3)
              ...
      'small' => 
        array (size=3)
          'url' => string 'http://localhost/prestashop/1-small_default/t-shirt-delave-manches-courtes.jpg' (length=78)
          'width' => int 98
          'height' => int 98
      'medium' => 
        array (size=3)
          'url' => string 'http://localhost/prestashop/1-home_default/t-shirt-delave-manches-courtes.jpg' (length=77)
          'width' => int 250
          'height' => int 250
      'large' => 
        array (size=3)
          'url' => string 'http://localhost/prestashop/1-large_default/t-shirt-delave-manches-courtes.jpg' (length=78)
          'width' => int 800
          'height' => int 800
      'legend' => string '' (length=0)
      'cover' => string '1' (length=1)
      'id_image' => string '1' (length=1)
      'position' => string '1' (length=1)
      'associatedVariants' => 
        array (size=3)
          0 => string '1' (length=1)
          1 => string '5' (length=1)
          2 => string '3' (length=1)
  'url' => string 'http://localhost/prestashop/t-shirts/1-1-t-shirt-delave-manches-courtes.html#/1-taille-s/13-couleur-orange' (length=106)
  'canonical_url' => string 'http://localhost/prestashop/t-shirts/1-t-shirt-delave-manches-courtes.html' (length=74)
  'has_discount' => boolean false
  'discount_type' => null
  'discount_percentage' => null
  'discount_percentage_absolute' => null
  'discount_amount' => null
  'price_amount' => float 19.81
  'regular_price_amount' => float 19.81
  'regular_price' => string '19,81 €' (length=10)
  'unit_price_full' => string '' (length=0)
  'add_to_cart_url' => string 'http://localhost/prestashop/panier?add=1&id_product=1&id_product_attribute=1&token=00a11f23715896a14b998c98a98dfdc5' (length=115)
  'main_variants' => 
    array (size=2)
      0 => 
        array (size=8)
          'id_product_attribute' => int 3
          'texture' => string '' (length=0)
          'id_product' => string '1' (length=1)
          'name' => string 'Orange' (length=6)
          'add_to_cart_url' => string 'http://localhost/prestashop/panier?add=1&id_product=1&id_product_attribute=3&token=00a11f23715896a14b998c98a98dfdc5' (length=115)
          'url' => string 'http://localhost/prestashop/t-shirts/1-3-t-shirt-delave-manches-courtes.html#/2-taille-m/13-couleur-orange' (length=106)
          'type' => string 'color' (length=5)
          'html_color_code' => string '#F39C11' (length=7)
      1 => 
        array (size=8)
          'id_product_attribute' => int 2
          'texture' => string '' (length=0)
          'id_product' => string '1' (length=1)
          'name' => string 'Bleu' (length=4)
          'add_to_cart_url' => string 'http://localhost/prestashop/panier?add=1&id_product=1&id_product_attribute=2&token=00a11f23715896a14b998c98a98dfdc5' (length=115)
          'url' => string 'http://localhost/prestashop/t-shirts/1-2-t-shirt-delave-manches-courtes.html#/1-taille-s/14-couleur-bleu' (length=104)
          'type' => string 'color' (length=5)
          'html_color_code' => string '#5D9CEC' (length=7)
  'flags' => 
    array (size=0)
      empty
  'labels' => 
    array (size=2)
      'tax_short' => string 'TTC' (length=3)
      'tax_long' => string 'TTC' (length=3)
  'show_availability' => boolean true
  'availability_date' => null
  'availability_message' => string 'En stock' (length=8)
  'availability' => string 'available' (length=9)
  'reference_to_display' => string 'demo_1' (length=6)

{$category|@var_dump}}

object(Category)[167]
  public 'id' => int 5
  public 'id_category' => string '5' (length=1)
  public 'name' => string 'T-shirts' (length=8)
  public 'active' => string '1' (length=1)
  public 'position' => string '0' (length=1)
  public 'description' => string '<p>Les must have de votre garde-robe : découvrez les divers modèles ainsi que les différentes</p>
<p>coupes et couleurs de notre collection !</p>' (length=150)
  public 'id_parent' => string '4' (length=1)
  public 'id_category_default' => null
  public 'level_depth' => string '4' (length=1)
  public 'nleft' => string '5' (length=1)
  public 'nright' => string '6' (length=1)
  public 'link_rewrite' => string 't-shirts' (length=8)
  public 'meta_title' => string '' (length=0)
  public 'meta_keywords' => string '' (length=0)
  public 'meta_description' => string '' (length=0)
  public 'date_add' => string '2016-11-08 12:18:55' (length=19)
  public 'date_upd' => string '2016-11-08 12:18:55' (length=19)
  public 'is_root_category' => string '0' (length=1)
  public 'id_shop_default' => string '1' (length=1)
  public 'groupBox' => null
  public 'id_image' => int 5
  protected 'webserviceParameters' => 
    array (size=4)
      'objectsNodeName' => string 'categories' (length=10)
      'hidden_fields' => 
        array (size=3)
          0 => string 'nleft' (length=5)
          1 => string 'nright' (length=6)
          2 => string 'groupBox' (length=8)
      'fields' => 
        array (size=3)
          'id_parent' => 
            array (size=1)
              ...
          'level_depth' => 
            array (size=1)
              ...
          'nb_products_recursive' => 
            array (size=2)
              ...
      'associations' => 
        array (size=2)
          'categories' => 
            array (size=2)
              ...
          'products' => 
            array (size=2)
              ...
  protected 'id_lang' => int 1
  protected 'id_shop' => int 1
  public 'id_shop_list' => null
  protected 'get_shop_from_context' => boolean true
  protected 'table' => string 'category' (length=8)
  protected 'identifier' => string 'id_category' (length=11)
  protected 'fieldsRequired' => 
    array (size=1)
      0 => string 'active' (length=6)
  protected 'fieldsSize' => 
    array (size=0)
      empty
  protected 'fieldsValidate' => 
    array (size=9)
      'nleft' => string 'isUnsignedInt' (length=13)
      'nright' => string 'isUnsignedInt' (length=13)
      'level_depth' => string 'isUnsignedInt' (length=13)
      'active' => string 'isBool' (length=6)
      'id_parent' => string 'isUnsignedInt' (length=13)
      'id_shop_default' => string 'isUnsignedId' (length=12)
      'is_root_category' => string 'isBool' (length=6)
      'date_add' => string 'isDate' (length=6)
      'date_upd' => string 'isDate' (length=6)
  protected 'fieldsRequiredLang' => 
    array (size=2)
      0 => string 'name' (length=4)
      1 => string 'link_rewrite' (length=12)
  protected 'fieldsSizeLang' => 
    array (size=5)
      'name' => int 128
      'link_rewrite' => int 128
      'meta_title' => int 128
      'meta_description' => int 255
      'meta_keywords' => int 255
  protected 'fieldsValidateLang' => 
    array (size=6)
      'name' => string 'isCatalogName' (length=13)
      'link_rewrite' => string 'isLinkRewrite' (length=13)
      'description' => string 'isCleanHtml' (length=11)
      'meta_title' => string 'isGenericName' (length=13)
      'meta_description' => string 'isGenericName' (length=13)
      'meta_keywords' => string 'isGenericName' (length=13)
  protected 'tables' => 
    array (size=0)
      empty
  protected 'image_dir' => string 'C:\wamp64\www\prestashop/img/c/' (length=31)
  protected 'image_format' => string 'jpg' (length=3)
  protected 'def' => 
    array (size=7)
      'table' => string 'category' (length=8)
      'primary' => string 'id_category' (length=11)
      'multilang' => boolean true
      'multilang_shop' => boolean true
      'fields' => 
        array (size=16)
          'nleft' => 
            array (size=2)
              ...
          'nright' => 
            array (size=2)
              ...
          'level_depth' => 
            array (size=2)
              ...
          'active' => 
            array (size=3)
              ...
          'id_parent' => 
            array (size=2)
              ...
          'id_shop_default' => 
            array (size=2)
              ...
          'is_root_category' => 
            array (size=2)
              ...
          'position' => 
            array (size=1)
              ...
          'date_add' => 
            array (size=2)
              ...
          'date_upd' => 
            array (size=2)
              ...
          'name' => 
            array (size=5)
              ...
          'link_rewrite' => 
            array (size=5)
              ...
          'description' => 
            array (size=3)
              ...
          'meta_title' => 
            array (size=4)
              ...
          'meta_description' => 
            array (size=4)
              ...
          'meta_keywords' => 
            array (size=4)
              ...
      'classname' => string 'Category' (length=8)
      'associations' => 
        array (size=1)
          'l' => 
            array (size=3)
              ...
  protected 'update_fields' => null
  public 'force_id' => boolean false

Je ne me suis pas amusé à traduire la signification des variables mais je pense que leur nom respectif est suffisament explicite pour que chacun puisse comprendre ce à quoi elles correspondent. Nul doute qu’un var_dump rendra bien service à qui travaille les templates Prestashop. Et pour les plus courageux d’entre vous, toutes les nouveautés concernant Prestshop 1.7

 

Prestashop 1.7 et variables Smarty
5 (100%) 6 votes

6 thoughts on “Prestashop 1.7 et variables Smarty”

      1. Non hélas.
        Ce code n’affiche rien :
        Peut etre n’est ce as la facon d’écrire ?
        {l s=’%unit_price%’ d=’Shop.Theme.Catalog’ sprintf=[‘%unit_price%’ => $price_tax_exc]}

        Sinon j’ai mis ça mais c’est le prix unitaire avec taxes qui s’affiche :
        {l s=’%unit_price%’ d=’Shop.Theme.Catalog’ sprintf=[‘%unit_price%’ => $product.unit_price]}

        Est-ce que sinon je peux faire un calcul en multipliant et soustrayant les taxes.

        Merci

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *