Ajout d’une condition de produit (état = Création) et traduction des termes « neuf » et « occasion » dans le thème d’un siye PrestaShop 1.7.

Les modifications suivantes ont été réalisées sur la version 1.7.5.2 de PrestaShop.

Product.php

Ouvrir le fichier classes/Product.php puis chercher :

public static $definition

Éditer la ligne 378 en ajoutant ou modifiant les états souhaités :

‘condition’ => array(‘type’ => self::TYPE_STRING, ‘shop’ => true, ‘validate’ => ‘isGenericName’, ‘values’ => array(‘new’, ‘used’, ‘refurbished’,’creation’), ‘default’ => ‘new’),

ProductOptions.php

Ouvrir le fichier src/PrestaShopBundle/Form/Admin/ProductOptions.php puis chercher :

public function buildForm

Ajouter une ligne après la ligne 201 de façon à avoir :

$this->translator->trans(‘New’, [], ‘Shop.Theme.Catalog’) => ‘new’,
$this->translator->trans(‘Used’, [], ‘Shop.Theme.Catalog’) => ‘used’,
$this->translator->trans(‘Refurbished’, [], ‘Shop.Theme.Catalog’) => ‘refurbished’,
$this->translator->trans(‘Creation’, [], ‘Shop.Theme.Catalog’) => ‘creation’,

ProductLazyArray.php

Ouvrir le fichier src/Adapter/Presenter/Product/ProductLazyArray.php et chercher :

public function getCondition

Après la ligne 241, ajouter :

case ‘creation’:
return array(
‘type’ => ‘creation’,
‘label’ => $this->translator->trans(‘Creation’, array(), ‘Shop.Theme.Catalog’),
‘schema_url’ => ‘https://schema.org/NewCondition’,
);
break;
default:

Remarquez que dans cet exemple, on utilisera la donnée enrichie de type « NewCondition ». La liste des éléments enrichis disponibles sont décrits ici : https://schema.org/OfferItemCondition

ShopThemeCatalog.fr-FR.xlf

Ouvrez le fichier themes/VOTRE-THEME/translations/fr-FR/ShopThemeCatalog.fr-FR.xlf et cherchez :

ProductLazyArray.php

Si vous ne trouvez pas le terme « ProductLazyArray.php », ouvrez app/Resources/translations/fr-FR/ShopThemeCatalog.fr-FR.xlf

Copiez/collez le contenu de :

<file original= »/var/www/html/src/Adapter/Presenter/Product/ProductLazyArray.php » source-language= »en » target-language= »fr » datatype= »plaintext »>

</file>

Dans themes/VOTRE-THEME/translations/fr-FR/ShopThemeCatalog.fr-FR.xlf de façon à avoir le code suivant :

<file original= »/var/www/html/src/Adapter/Presenter/Product/ProductLazyArray.php » source-language= »en » target-language= »fr » datatype= »plaintext »>
<body>
<trans-unit id= »656c3be690ee43df4b845bd2a2ebe587″ approved= »yes »>
<source>New product</source>
<target xml:lang= »fr » state= »translated »>Nouveau produit</target>
<note>Line: 225</note>
</trans-unit>
<trans-unit id= »03de921a8ea82897e13d33d66c28b4db » approved= »yes »>
<source>Online only</source>
<target xml:lang= »fr » state= »translated »>Exclusivité web !</target>
<note>Line: 434</note>
</trans-unit>
<trans-unit id= »800e90e940e7f1fb938b0fda5137f38c » approved= »yes »>
<source>On sale!</source>
<target xml:lang= »fr » state= »translated »>Promo !</target>
<note>Line: 441</note>
</trans-unit>
<trans-unit id= »63b539babcf7978229d66ba4052ca71f » approved= »yes »>
<source>Reduced price</source>
<target xml:lang= »fr » state= »translated »>Prix réduit</target>
<note>Line: 451</note>
</trans-unit>
<trans-unit id= »4492081ca02b059f9e8af4ddaf0f7292″ approved= »yes »>
<source>Pack</source>
<target xml:lang= »fr » state= »translated »>Pack</target>
<note>Line: 465</note>
</trans-unit>
<trans-unit id= »cb3c718c905f00adbb6735f55bfb38ef » approved= »yes »>
<source>Product available with different options</source>
<target xml:lang= »fr » state= »translated »>Produit disponible avec d’autres options</target>
<note>Line: 776</note>
</trans-unit>
<trans-unit id= »348325afced7f3da215310efbe21f1c1″ approved= »yes »>
<source>Last items in stock</source>
<target xml:lang= »fr » state= »translated »>Derniers articles en stock</target>
<note>Line: 801</note>
</trans-unit>
<trans-unit id= »a3b6a4d0897451813950029a3066f219″ approved= »yes »>
<source>ean13</source>
<target xml:lang= »fr » state= »translated »>EAN13</target>
<note>Line: 817</note>
</trans-unit>
<trans-unit id= »6496117322fd76fa12ac1b87d8a4db6c » approved= »yes »>
<source>isbn</source>
<target xml:lang= »fr » state= »translated »>ISBN</target>
<note>Line: 819</note>
</trans-unit>
<trans-unit id= »2f9e567efb6a38663162f65eaac2d73b » approved= »yes »>
<source>upc</source>
<target xml:lang= »fr » state= »translated »>UPC</target>
<note>Line: 821</note>
</trans-unit>
<trans-unit id= »019d1ca7d50cc54b995f60d456435e87″ approved= »yes »>
<source>Used</source>
<target xml:lang= »fr » state= »translated »>Occasion</target>
<note>Line: 231</note>
</trans-unit>
<trans-unit id= »6da03a74721a0554b7143254225cc08a » approved= »yes »>
<source>Refurbished</source>
<target xml:lang= »fr » state= »translated »>Reconditionné</target>
<note>Line: 238</note>
</trans-unit>
<trans-unit id= »03c2e7e41ffc181a4e84080b4710e81e » approved= »yes »>
<source>New</source>
<target xml:lang= »fr » state= »translated »>Neuf</target>
<note>Line: 458</note>
</trans-unit>
<trans-unit id= »67d5168b4f2b5424a3d118ea9ef99372″ approved= »yes »>
<source>Creation</source>
<target xml:lang= »fr » state= »translated »>Création</target>
<note>Line: 245</note>
</trans-unit>
</body>
</file>

products.js

Ouvrez js/admin/products.js et cherchez :

tabs_manager.onLoad(‘Informations’, function()

Ajouter une ligne de façon à avoir :

tabs_manager.onLoad(‘Informations’, function(){
$(‘#condition’).attr(‘disabled’, true);
$(‘#condition option[value=refurbished]’).removeAttr(‘selected’);
$(‘#condition option[value=used]’).removeAttr(‘selected’);
$(‘#condition option[value=creation]’).removeAttr(‘selected’);
});

La base de données

Cherchez la table ps_product_shop puis modifiez la colonne « type » de façon à avoir le champ « condition » suivant :

Cherchez la table ps_product puis modifiez la colonne « type » de façon à avoir le champ « condition » suivant :