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 :