Aujourd’hui, nouveau tuto PrestaShop pour ajouter un champ aux produits pour ensuite l’utiliser dans vos intégrations front office ou bien dans des développements admin.
Constat : besoins spécifiques pour certains e-commerçants
Nombreux sont les projets où mes clients me demandent d’ajouter des données pour leurs produits sans pouvoir utiliser les champs disponibles par défaut. Voici le type de cas où je préfère utiliser des champs personnalisés pour les produits :
Dans ces cas précis, ce tutoriel PrestaShop risque combler vos attentes.
Ah mais attends, ce tuto PrestaShop va aussi vous faire gagner de l’argent.
Mais ça on va le voir plus loin.
Tuto PrestaShop : ajouter un champ pour les produits
C’est parti pour résoudre le cas numéro 1. Le tuto PrestaShop se déroule en 5 étapes assez simples vous allez voir. Penchons-nous d’abord sur les 4 premières étapes :
1. Installer le module AmProductFields
Téléchargez le module PrestaShop AmProductFields v1.1 ci-dessous (module modifié issu du bon travail de Hervé Hennes dans cet article) puis installez-le simplement via le back office de PrestaShop. Aucune configuration n’est nécessaire, facile donc !
2. Installer l’override Product.php
Pour vous simplifiez la tâche, j’ai compris dans le dossier du module le fichier override. Déplacez le fichier www/modules/amproductfields/doc_and_override/Product.php vers www/override/classes/ mais attention si vous avez déjà un fichier Product.php : dans ce cas, copiez le contenu du fichier que je fournis et adaptez-le avec le fichier Product.php déjà existant dans le dossier override/classes.
Supprimez le fichier de cache suivant : www/app/cache/prod/class_index.php
3. Rédigez vos contenus
Pour la base de départ, j’ai prévu 3 champs dont :
Rédigez vos contenus comme bon vous semble afin d’enrichir vos fiches produits.
4. Affichez vos contenus
Pour ma part, j’ai voulu afficher les informations saisies sur la fiche produit, sous les images, car par défaut le thème Classic offre de la place à cet endroit. On peut donc facilement rendre visible de l’information importante !
Ouvrez le fichier www/themes/classic/templates/catalog/product.tpl et ajoutez les lignes 74 à 77 :
{**
* 2007-2017 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2017 PrestaShop SA
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
{extends file=$layout}
{block name='head_seo' prepend}
<link rel="canonical" href="{$product.canonical_url}">
{/block}
{block name='head' append}
<meta property="og:type" content="product">
<meta property="og:url" content="{$urls.current_url}">
<meta property="og:title" content="{$page.meta.title}">
<meta property="og:site_name" content="{$shop.name}">
<meta property="og:description" content="{$page.meta.description}">
<meta property="og:image" content="{$product.cover.large.url}">
<meta property="product:pretax_price:amount" content="{$product.price_tax_exc}">
<meta property="product:pretax_price:currency" content="{$currency.iso_code}">
<meta property="product:price:amount" content="{$product.price_amount}">
<meta property="product:price:currency" content="{$currency.iso_code}">
{if isset($product.weight) && ($product.weight != 0)}
<meta property="product:weight:value" content="{$product.weight}">
<meta property="product:weight:units" content="{$product.weight_unit}">
{/if}
{/block}
{block name='content'}
<section id="main" itemscope itemtype="https://schema.org/Product">
<meta itemprop="url" content="{$product.url}">
<div class="row">
<div class="col-md-6">
{block name='page_content_container'}
<section class="page-content" id="content">
{block name='page_content'}
{block name='product_flags'}
<ul class="product-flags">
{foreach from=$product.flags item=flag}
<li class="product-flag {$flag.type}">{$flag.label}</li>
{/foreach}
</ul>
{/block}
{block name='product_cover_thumbnails'}
{include file='catalog/_partials/product-cover-thumbnails.tpl'}
{/block}
<div class="scroll-box-arrows">
<i class="material-icons left"></i>
<i class="material-icons right"></i>
</div>
<section id="amproductfields">
<h2>{$product.custom_field_lang}</h2>
<div>{$product.custom_field_lang_wysiwyg nofilter}</div>
</section>
{/block}
</section>
{/block}
</div>
<div class="col-md-6">
{block name='page_header_container'}
{block name='page_header'}
<h1 class="h1" itemprop="name">{block name='page_title'}{$product.name}{/block}</h1>
{/block}
{/block}
{block name='product_prices'}
{include file='catalog/_partials/product-prices.tpl'}
{/block}
<div class="product-information">
{block name='product_description_short'}
<div id="product-description-short-{$product.id}" itemprop="description">{$product.description_short nofilter}</div>
{/block}
{if $product.is_customizable && count($product.customizations.fields)}
{block name='product_customization'}
{include file="catalog/_partials/product-customization.tpl" customizations=$product.customizations}
{/block}
{/if}
<div class="product-actions">
{block name='product_buy'}
<form action="{$urls.pages.cart}" method="post" id="add-to-cart-or-refresh">
<input type="hidden" name="token" value="{$static_token}">
<input type="hidden" name="id_product" value="{$product.id}" id="product_page_product_id">
<input type="hidden" name="id_customization" value="{$product.id_customization}" id="product_customization_id">
{block name='product_variants'}
{include file='catalog/_partials/product-variants.tpl'}
{/block}
{block name='product_pack'}
{if $packItems}
<section class="product-pack">
<h3 class="h4">{l s='This pack contains' d='Shop.Theme.Catalog'}</h3>
{foreach from=$packItems item="product_pack"}
{block name='product_miniature'}
{include file='catalog/_partials/miniatures/pack-product.tpl' product=$product_pack}
{/block}
{/foreach}
</section>
{/if}
{/block}
{block name='product_discounts'}
{include file='catalog/_partials/product-discounts.tpl'}
{/block}
{block name='product_add_to_cart'}
{include file='catalog/_partials/product-add-to-cart.tpl'}
{/block}
{block name='product_additional_info'}
{include file='catalog/_partials/product-additional-info.tpl'}
{/block}
{block name='product_refresh'}
<input class="product-refresh ps-hidden-by-js" name="refresh" type="submit" value="{l s='Refresh' d='Shop.Theme.Actions'}">
{/block}
</form>
{/block}
</div>
{block name='hook_display_reassurance'}
{hook h='displayReassurance'}
{/block}
</div>
</div>
</div>
<div id="product_tabs" class="row">
<div class="col-xs-12">
{block name='product_tabs'}
<div class="tabs">
<ul class="nav nav-tabs" role="tablist">
{if $product.description}
<li class="nav-item">
<a
class="nav-link{if $product.description} active{/if}"
data-toggle="tab"
href="#description"
role="tab"
aria-controls="description"
{if $product.description} aria-selected="true"{/if}>{l s='Description' d='Shop.Theme.Catalog'}</a>
</li>
{/if}
<li class="nav-item">
<a
class="nav-link{if !$product.description} active{/if}"
data-toggle="tab"
href="#product-details"
role="tab"
aria-controls="product-details"
{if !$product.description} aria-selected="true"{/if}>{l s='Product Details' d='Shop.Theme.Catalog'}</a>
</li>
{if $product.attachments}
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href="#attachments"
role="tab"
aria-controls="attachments">{l s='Attachments' d='Shop.Theme.Catalog'}</a>
</li>
{/if}
{foreach from=$product.extraContent item=extra key=extraKey}
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href="#extra-{$extraKey}"
role="tab"
aria-controls="extra-{$extraKey}">{$extra.title}</a>
</li>
{/foreach}
</ul>
<div class="tab-content" id="tab-content">
<div class="tab-pane fade in{if $product.description} active{/if}" id="description" role="tabpanel">
{block name='product_description'}
<div class="product-description">{$product.description nofilter}</div>
{/block}
</div>
{block name='product_details'}
{include file='catalog/_partials/product-details.tpl'}
{/block}
{block name='product_attachments'}
{if $product.attachments}
<div class="tab-pane fade in" id="attachments" role="tabpanel">
<section class="product-attachments">
<h3 class="h5 text-uppercase">{l s='Download' d='Shop.Theme.Actions'}</h3>
{foreach from=$product.attachments item=attachment}
<div class="attachment">
<h4><a href="{url entity='attachment' params=['id_attachment' => $attachment.id_attachment]}">{$attachment.name}</a></h4>
<p>{$attachment.description}</p
<a href="{url entity='attachment' params=['id_attachment' => $attachment.id_attachment]}">
{l s='Download' d='Shop.Theme.Actions'} ({$attachment.file_size_formatted})
</a>
</div>
{/foreach}
</section>
</div>
{/if}
{/block}
{foreach from=$product.extraContent item=extra key=extraKey}
<div class="tab-pane fade in {$extra.attr.class}" id="extra-{$extraKey}" role="tabpanel" {foreach $extra.attr as $key => $val} {$key}="{$val}"{/foreach}>
{$extra.content nofilter}
</div>
{/foreach}
</div>
</div>
{/block}
</div>
</div>
{block name='product_accessories'}
{if $accessories}
<section class="product-accessories clearfix">
<h3 class="h5 text-uppercase">{l s='You might also like' d='Shop.Theme.Catalog'}</h3>
<div class="products">
{foreach from=$accessories item="product_accessory"}
{block name='product_miniature'}
{include file='catalog/_partials/miniatures/product.tpl' product=$product_accessory}
{/block}
{/foreach}
</div>
</section>
{/if}
{/block}
{block name='product_footer'}
{hook h='displayFooterProduct' product=$product category=$category}
{/block}
{block name='product_images_modal'}
{include file='catalog/_partials/product-images-modal.tpl'}
{/block}
{block name='page_footer_container'}
<footer class="page-footer">
{block name='page_footer'}
<!-- Footer content -->
{/block}
</footer>
{/block}
</section>
{/block}
On affiche alors les 2 champs traduisibles dans une <section> avec un id dans le cas où vous auriez besoin de donner un style particulier à l’élément. J’ai aussi encadré d’un <h2> le premier champ pour avoir un code optimisé pour le référencement.
Comment afficher les champs sur la page panier ?
[Edit du 21/07/2018] J’ai reçu plusieurs commentaires à ce sujet c’est pourquoi j’ai décidé de mettre à jour cet article. Je vais vous expliquer comment afficher les nouveaux champs de la fiche produit sur la page panier. Vous allez voir que c’est assez simple finalement !
J’ouvre d’abord le fichier www/classes/Cart.php et je copie la fonction getProducts dans un override que je place à cet endroit : www/override/classes/Cart.php.
Il faut ajouter les deux nouveaux champs dans la requête SQL SELECT ce qui donne ceci si on affiche la fonction simplement :
/**
* Return cart products
*
* @param bool $refresh
* @param bool $id_product
* @param int $id_country
* @param bool $fullInfos
*
* @return array Products
*/
public function getProducts($refresh = false, $id_product = false, $id_country = null, $fullInfos = true)
{
if (!$this->id) {
return array();
}
// Product cache must be strictly compared to NULL, or else an empty cart will add dozens of queries
if ($this->_products !== null && !$refresh) {
// Return product row with specified ID if it exists
if (is_int($id_product)) {
foreach ($this->_products as $product) {
if ($product['id_product'] == $id_product) {
return array($product);
}
}
return array();
}
return $this->_products;
}
// Build query
$sql = new DbQuery();
// Build SELECT
$sql->select('cp.`id_product_attribute`, cp.`id_product`, cp.`quantity` AS cart_quantity, cp.id_shop, cp.`id_customization`, pl.`name`, p.`is_virtual`,
pl.`description_short`, pl.`available_now`, pl.`available_later`, product_shop.`id_category_default`, p.`id_supplier`,
p.`id_manufacturer`, m.`name` AS manufacturer_name, product_shop.`on_sale`, product_shop.`ecotax`, product_shop.`additional_shipping_cost`,
product_shop.`available_for_order`, product_shop.`show_price`, product_shop.`price`, product_shop.`active`, product_shop.`unity`, product_shop.`unit_price_ratio`,
stock.`quantity` AS quantity_available, p.`width`, p.`height`, p.`depth`, stock.`out_of_stock`, p.`weight`,
p.`available_date`, p.`date_add`, p.`date_upd`, IFNULL(stock.quantity, 0) as quantity, pl.`link_rewrite`, cl.`link_rewrite` AS category, pl.`custom_field_lang_wysiwyg`, pl.`custom_field_lang`,
CONCAT(LPAD(cp.`id_product`, 10, 0), LPAD(IFNULL(cp.`id_product_attribute`, 0), 10, 0), IFNULL(cp.`id_address_delivery`, 0), IFNULL(cp.`id_customization`, 0)) AS unique_id, cp.id_address_delivery,
product_shop.advanced_stock_management, ps.product_supplier_reference supplier_reference');
// Build FROM
$sql->from('cart_product', 'cp');
// Build JOIN
$sql->leftJoin('product', 'p', 'p.`id_product` = cp.`id_product`');
$sql->innerJoin('product_shop', 'product_shop', '(product_shop.`id_shop` = cp.`id_shop` AND product_shop.`id_product` = p.`id_product`)');
$sql->leftJoin(
'product_lang',
'pl',
'p.`id_product` = pl.`id_product`
AND pl.`id_lang` = '.(int)$this->id_lang.Shop::addSqlRestrictionOnLang('pl', 'cp.id_shop')
);
$sql->leftJoin(
'category_lang',
'cl',
'product_shop.`id_category_default` = cl.`id_category`
AND cl.`id_lang` = '.(int)$this->id_lang.Shop::addSqlRestrictionOnLang('cl', 'cp.id_shop')
);
$sql->leftJoin('product_supplier', 'ps', 'ps.`id_product` = cp.`id_product` AND ps.`id_product_attribute` = cp.`id_product_attribute` AND ps.`id_supplier` = p.`id_supplier`');
$sql->leftJoin('manufacturer', 'm', 'm.`id_manufacturer` = p.`id_manufacturer`');
// @todo test if everything is ok, then refactorise call of this method
$sql->join(Product::sqlStock('cp', 'cp'));
// Build WHERE clauses
$sql->where('cp.`id_cart` = '.(int)$this->id);
if ($id_product) {
$sql->where('cp.`id_product` = '.(int)$id_product);
}
$sql->where('p.`id_product` IS NOT NULL');
// Build ORDER BY
$sql->orderBy('cp.`date_add`, cp.`id_product`, cp.`id_product_attribute` ASC');
if (Customization::isFeatureActive()) {
$sql->select('cu.`id_customization`, cu.`quantity` AS customization_quantity');
$sql->leftJoin(
'customization',
'cu',
'p.`id_product` = cu.`id_product` AND cp.`id_product_attribute` = cu.`id_product_attribute` AND cp.`id_customization` = cu.`id_customization` AND cu.`id_cart` = '.(int)$this->id
);
$sql->groupBy('cp.`id_product_attribute`, cp.`id_product`, cp.`id_shop`, cp.`id_customization`');
} else {
$sql->select('NULL AS customization_quantity, NULL AS id_customization');
}
if (Combination::isFeatureActive()) {
$sql->select('
product_attribute_shop.`price` AS price_attribute, product_attribute_shop.`ecotax` AS ecotax_attr,
IF (IFNULL(pa.`reference`, \'\') = \'\', p.`reference`, pa.`reference`) AS reference,
(p.`weight`+ pa.`weight`) weight_attribute,
IF (IFNULL(pa.`ean13`, \'\') = \'\', p.`ean13`, pa.`ean13`) AS ean13,
IF (IFNULL(pa.`isbn`, \'\') = \'\', p.`isbn`, pa.`isbn`) AS isbn,
IF (IFNULL(pa.`upc`, \'\') = \'\', p.`upc`, pa.`upc`) AS upc,
IFNULL(product_attribute_shop.`minimal_quantity`, product_shop.`minimal_quantity`) as minimal_quantity,
IF(product_attribute_shop.wholesale_price > 0, product_attribute_shop.wholesale_price, product_shop.`wholesale_price`) wholesale_price
');
$sql->leftJoin('product_attribute', 'pa', 'pa.`id_product_attribute` = cp.`id_product_attribute`');
$sql->leftJoin('product_attribute_shop', 'product_attribute_shop', '(product_attribute_shop.`id_shop` = cp.`id_shop` AND product_attribute_shop.`id_product_attribute` = pa.`id_product_attribute`)');
} else {
$sql->select(
'p.`reference` AS reference, p.`ean13`, p.`isbn`,
p.`upc` AS upc, product_shop.`minimal_quantity` AS minimal_quantity, product_shop.`wholesale_price` wholesale_price'
);
}
$sql->select('image_shop.`id_image` id_image, il.`legend`');
$sql->leftJoin('image_shop', 'image_shop', 'image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop='.(int)$this->id_shop);
$sql->leftJoin('image_lang', 'il', 'il.`id_image` = image_shop.`id_image` AND il.`id_lang` = '.(int)$this->id_lang);
$result = Db::getInstance()->executeS($sql);
// Reset the cache before the following return, or else an empty cart will add dozens of queries
$products_ids = array();
$pa_ids = array();
if ($result) {
foreach ($result as $key => $row) {
$products_ids[] = $row['id_product'];
$pa_ids[] = $row['id_product_attribute'];
$specific_price = SpecificPrice::getSpecificPrice($row['id_product'], $this->id_shop, $this->id_currency, $id_country, $this->id_shop_group, $row['cart_quantity'], $row['id_product_attribute'], $this->id_customer, $this->id);
if ($specific_price) {
$reduction_type_row = array('reduction_type' => $specific_price['reduction_type']);
} else {
$reduction_type_row = array('reduction_type' => 0);
}
$result[$key] = array_merge($row, $reduction_type_row);
}
}
// Thus you can avoid one query per product, because there will be only one query for all the products of the cart
Product::cacheProductsFeatures($products_ids);
Cart::cacheSomeAttributesLists($pa_ids, $this->id_lang);
$this->_products = array();
if (empty($result)) {
return array();
}
if ($fullInfos) {
$ecotax_rate = (float)Tax::getProductEcotaxRate($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')});
$apply_eco_tax = Product::$_taxCalculationMethod == PS_TAX_INC && (int)Configuration::get('PS_TAX');
$cart_shop_context = Context::getContext()->cloneContext();
$gifts = $this->getCartRules(CartRule::FILTER_ACTION_GIFT);
$givenAwayProductsIds = array();
if ($this->shouldSplitGiftProductsQuantity && count($gifts) > 0) {
foreach ($gifts as $gift) {
foreach ($result as $rowIndex => $row) {
if (!array_key_exists('is_gift', $result[$rowIndex])) {
$result[$rowIndex]['is_gift'] = false;
}
if (
$row['id_product'] == $gift['gift_product'] &&
$row['id_product_attribute'] == $gift['gift_product_attribute']
) {
$row['is_gift'] = true;
$result[$rowIndex] = $row;
}
}
$index = $gift['gift_product'] . '-' . $gift['gift_product_attribute'];
if (!array_key_exists($index, $givenAwayProductsIds)) {
$givenAwayProductsIds[$index] = 1;
} else {
$givenAwayProductsIds[$index]++;
}
}
}
foreach ($result as &$row) {
if (!array_key_exists('is_gift', $row)) {
$row['is_gift'] = false;
}
$additionalRow = Product::getProductProperties((int)$this->id_lang, $row);
$row['reduction'] = $additionalRow['reduction'];
$row['price_without_reduction'] = $additionalRow['price_without_reduction'];
$row['specific_prices'] = $additionalRow['specific_prices'];
unset($additionalRow);
$givenAwayQuantity = 0;
$giftIndex = $row['id_product'] . '-' . $row['id_product_attribute'];
if ($row['is_gift'] && array_key_exists($giftIndex, $givenAwayProductsIds)) {
$givenAwayQuantity = $givenAwayProductsIds[$giftIndex];
}
if (!$row['is_gift'] || (int)$row['cart_quantity'] === $givenAwayQuantity) {
$row = $this->applyProductCalculations($row, $cart_shop_context);
} else {
// Separate products given away from those manually added to cart
$this->_products[] = $this->applyProductCalculations($row, $cart_shop_context, $givenAwayQuantity);
unset($row['is_gift']);
$row = $this->applyProductCalculations(
$row,
$cart_shop_context,
$row['cart_quantity'] - $givenAwayQuantity
);
}
$this->_products[] = $row;
}
} else {
$this->_products = $result;
}
return $this->_products;
}
Notez l’ajout de pl.custom_field_lang_wysiwyg, pl.custom_field_lang, dans la requête SQL.
Une fois que c’est modifié, supprimez le fichier de cache suivant : www/app/cache/prod/class_index.php
Enfin, vous pouvez afficher les nouveaux champs dans le fichier www/prestashop/themes/mon_theme/templates/checkout/_partials/cart-detailed-product-line.tpl.tpl en utilisant :
Comment gagner de l’argent avec ce tuto PrestaShop ?
La réponse est assez simple vous allez voir.
Aujourd’hui, vous savez à présent comment afficher de nouveaux champs sur vos fiches produits. Très bien, et alors ??
Et bien, vous allez donc pouvoir proposer une fiche produit avec les infos clés en haut de page et un bouton d’ajout panier visible même sur les écrans de taille moyenne.
Enfin, vous allez pouvoir travailler votre référencement en ajoutant du contenu à vos fiches produits.
Je peux conseiller le format suivant :
description courte : avis du marchand avec un ton vendeur
champs supplémentaires : points clés du produit avec des faits
description longue : détails du produits avec des phrases et des informations pointues, le tout organisé avec des titres et visuels
Le résultat :
une fiche produit optimisée pour la lecture par vos clients, un meilleur taux de conversion à la clé
une visibilité de vos pages produits améliorée par un contenu plus riche et optimisé pour le SEO : meilleur référencement donc !
Vous avez un bel outil aujourd’hui pour développer votre business alors faites en bon usage 😉
Bonjour,
Avant tout pour votre travail, il correspond exactement a ce que je souhaite faire !
J’ai néanmoins un soucis, aprés l’installation et la suppression du fichier cache, l’inteface admin du produit n’est pas modifiée. J’ai bien votre module dans l’onglet modules sur la fiche produit mais aucun champs.
Auriez vous une idée ? https://i.imgur.com/unDJImh.png
Cordialement,
Merci pour votre réponse, j’ai bien supprimer le class_index.php ( cf imprime écran ci dessus ), j’ai essayer de tout supprimer ou de recrée le cache.
J’ai essayer de réinstaller plusieurs fois le module, pourtant il semble actif.
Il y a une subtilité que je n’ai pas compris, pourtant la précédure est trés bien écrite !
Bonjour,
J’utilise la version 1.7.1.2, je peux la mettre à jours si besoin.
La case désactiver toutes les surcharges est bien sur non https://i.imgur.com/MUySgt2.png
En regardant votre premier imprime écran, vous n’avez pas la partie » ajouter une caractéristique, marque ou produit » sous le résumé. J’ai peut etre un conflit de module.
J’ai fais quelques recherches et le module enregistrait bien les informations dans la base de données mais il ne les affichait pas dans le back office une fois sauvegardées.
C’est corrigé et le lien de téléchargement est à jour dans l’article.
J’ai testé sur PrestaShop 1.7.3.0 et c’est fonctionnel.
Bon téléchargement et pensez à laisser un avis sur le sujet 😉
A très vite
Bonjour, merci pour tout ce boulot et de le partager. J’ai le même souci que YOANN, si tu as trouvé la solution pour lui peux tu m’aider à mon tour. Merci beaucoup.
Bonsoir,
J’ai installé votre module et j’ai fait exactement ce que vous avez décrit. Tout fonctionne parfaitement.
Je vois les trois champs que vous avez créé. J’ai essayé de modifier le fichier product.php ainsi que le fichier .tpl afin de mettre à la place de vos champs un simple champ texte que j’ai nommé « modele ».
Il ne se passe rien. J’ai supprime le fichier de cache mais ça ne change rien. Seuls vos trois champs s’affichent. De plus, j’ai essayé d’entrer des données dans ces champs et de les enregistrer et lorsque je reviens sur la fichie produit, ces champs sont vide. Qu’est-ce que je n’ai pas compris dans votre explication? Comment modifier les fichiers afin de changer les champs que vous avez mis par défaut en y mettant ceux que je désire? Merci.
Thanks for this tutorial. I followed your steps and got my field on the right place … but: the values are not saved to the database? On refresh the values are gone .. do you have any idea?
Merci beaucoup pour les instructions très pratiques ! J’ai essayé de transférer la méthode aux ps-marques.. Malheureusement, il ne fonctionne pas et la documentation de PrestaShop ne contient aucune aide. Est-ce que quelqu’un a déjà réussi à ajouter son propre champ de marque à PrestaShop 1.7 ?
Pardonnez mon français insuffisant !
Bonjour,
Merci pour ce module il fonctionne très bien 🙂
Cependant, je ne peux pas traduire les champs, les valeurs dans les champs restent les mêmes pour toutes les langues, y a-t-il une procédure pour activer cette fonctionnalité ?
Merci pour votre commentaire.
Par défaut, un seul champ est traduisible dans ce module, vous pouvez donc l’utiliser en multilingue sans problème.
Vous pouvez aussi dupliquer ce champ et son fonctionnement dans le module si besoin 🙂
merci pour le précieux module fonctionne parfaitement sur certaines parties mais j’ai besoin d’aide car je ne sais pas comment faire et je ne suis pas un programmeur.
J’ai utilisé le champ supplémentaire pour remplacer le nom du produit, le nom n’apparaît pas ici:
– lors de l’achat du produit ajouté au panier
– barre de recherche, recherche par nom de produit et non par champ personnalisé
– section ci-dessous le produit: « vous pourriez l’aimer aussi » (je pense que c’est crosselling)
J’ai de sérieux ennuis, pourriez-vous m’aider rapidement? Je suis sur le point de publier et je suis toujours.
Merci beaucoup d’avance!
ver prestashop 1.7.2.4
Merci pour le commentaire,
En fait il faut suivre le tuto car le module permet d’enregistrer en base de données les informations supplémentaires du produit.
Il faut ensuite les afficher et pour cela, il faut placer les variables, c’est l’étape 4 du tuto 😉
Bonjour, Je me permets ce message parce que j’ai besoin, pour diverses raisons, non pas de créer les produits par le back office de prestashop mais par les tables mysql. Je travaille sous prestashop 1,7,4,0. J’ai ajouté une table mysql à la base de données prestashop. Certains éléments de cette table vont aller « alimenter » les tables existantes de prestashop, de façon à créer dans le bak office d’une part et aussi dans le front office le produit. Pour arriver à un résultat concluant, j’ai donc à partir du back office créer deux produits. J’ai édité les tables PRODUCT, PRODUCT LANG, PRODUCT SHOP, STOCK AVAILABLE et STOCK MVT, qui à mon sens sont les tables qui permettent le travail sur la création d’un produit. J’ai regardé comment s’articulait les ajouts des produits dans les tables en passant par le back office. J’ai aussi avant tout créer les catégories nécessaires. En alimentant ces tables décrites plus haut, par mysql admin dans l’onglet « INSERER » le produit apparaît bien dans la partie back office avec tous les autres produits, mais n’est pas dans le front office. Pourquoi ?
Merci d’une réponse
Merci pour votre commentaire,
Si le produit apparait bien dans l’admin, je pense qu’il doit tout simplement y avoir une valeur à 0 sur le champ « active » ou différent de both pour le champ « visibility ».
C’est de ce côté là qu’il faut regarder à mon avis.
Bonnes recherches et pensez à partager votre solution pour les autres 😉
Suite à ma demande de ce jour 17 juillet a 10h58, j’ai réussi à trouver ce qu’il fallait faire. Il faut que dans la table CATEGORY PRODUCT, une ligne correspondant au nouveau produit créé figure. Exemple le nouvel id product est 5, il faut une nouvelle ligne comprenant l’ID de la category choisie, l’ID product qui sera donc 5 et la position qui sera implémentée de 1 par rapport au produit qui précedait.
Après les autres tables PRODUCT, PRODUCT LANG, PRODUCT SHOP, STOCK AVAILABLE et STOCK MVT, si elles sont correctement remplies, le nouveau produit apparait aux yeux de tous dans le front office.
Cordialement
Edmond
Ca marche parfaitement en front sur fiche produit, quick-view, miniature etc…! un grand merci Arnaud pour ce tuto.
J’aurais souhaité également ajouter le nouveau champs sur le récapitulatif du panier, mais en appliquant l’étape 4 du tuto dans cart.tpl, j’ai un message d’erreur :
ContextErrorException in smarty_internal_templatebase.php(157) : eval()’d code line 696:
Notice: Undefined index: custom_field
in smarty_internal_templatebase.php(157) : eval()’d code line 696
at ErrorHandler->handleError(‘8’, ‘Undefined index: custom_field’, ‘/home/directtrp/www/2017/vendor/prestashop/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()’d code’, ‘696’, array(‘_smarty_tpl’ => object(Smarty_Dev_Template))) in smarty_internal_templatebase.php(157) : eval()’d code line 696
at content_5b51d82ce143e4_24560705(object(Smarty_Dev_Template)) in smarty_internal_templatebase.php(157) : eval()’d code line 659
at content_5b51d82ce0aef4_36988028(object(Smarty_Dev_Template)) in smarty_internal_templatebase.php(157) : eval()’d code line 209
at content_5b51d82ced5474_71490027(object(Smarty_Dev_Template)) in smarty_internal_templatebase.php line 188
at Smarty_Internal_TemplateBase->fetch(‘checkout/cart.tpl’, null, ‘layouts/layout-full-width.tpl’, object(SmartyDev), false, true, false) in SmartyDev.php line 41
at SmartyDev->fetch(‘checkout/cart.tpl’, null, ‘layouts/layout-full-width.tpl’) in FrontController.php line 660
at FrontControllerCore->smartyOutputContent(‘checkout/cart.tpl’) in FrontController.php line 644
at FrontControllerCore->display() in Controller.php line 225
at ControllerCore->run() in Dispatcher.php line 369
at DispatcherCore->dispatch() in index.php line 28
cart.tpl est il gérer différemment que product.tpl?
Merci pour le commentaire,
Je viens de mettre à jour l’article avec une section dédiée à l’affichage des champs sur la page panier.
J’espère que ça vous aidera 😉
Merci pour le commentaire,
Comme c’est indiqué par David, il faut reprendre les variable smarty de la fiche produit et les insérer dans le .tpl souhaité.
Dans certains cas comme pour la page panier, il faut aussi modifier le controller pour que la requête sur les produits prenne en compte les nouveaux champs 😉
Bonjour,
Merci pour ce module.
Après la mise à jour du fichier j’ai encore le même problème que YOAN. Les champs ne s’affichent pas dans le back office après installation..
Merci pour votre message.
Il faut bien utiliser la dernière version du module via le lien dans l’article.
Aussi, quelle est votre version de PrestaShop ?
Bonjour,
Je reviens un peu tardivement avec le même problème. Je n’arrive pas à faire apparaître les champs dans le back office sur un serveur distant (tout marche en local). La version prestashop que j’utilise est la version 1.7.1.2.
Bonjour,
Vérifiez déjà que le module est bien installé, activé et qu’il est présent sur les hooks dans la section positions dans l’admin.
Si non, réinstallez-le en ligne.
A bientôt 🙂
Bonjour, non malheureusement lorsqu’on a plusieurs langue d’activées et qu’on a installé le module, effectivement il y a les trois nouveaux champs qui s’affichent sur les fiches produit dans le BO, mais ils ne deviennent pas traduisible. Lorsqu’on change la langue de la fiche produit on a tout les champs natif prestashop de la fiche produit qui changent mais pas les deux derniers champs du module AMProductfield. Vu sur presta 1.7.4.2 et 1.7.4.3
Ce serait bie nd’en faire un module traditionnel qu’on installe par glisser/déposer dans le BO et qui fonctionne en plusieurs langue.
Merci pour ce module en tous cas car il n y a pas de module alternatif pour mettre du texte référençable dans la première colonne des fiches produit (sous les photos).
Bonjour Arnaud,
Merci pour ce module.
Cependant, aprés avoir suivi à la lettre le tuto j’ai le même problème que YOAN.
Les champs ne s’affichent pas dans le back office après installation.
Quelle solution SVP / Merci
Je viens de tester sur PS 1.7.2.0 et il peut y avoir un blocage et dans ce cas, il faut désinstaller le module si possible puis supprimer le dossier module et amproductfields.zip dans le dossier modules.
Une fois que c’est bon, il faut uploader manuellement le dossier amproductfields dans /modules/ et installer via le back office le module.
Je viens de tester sur PS 1.7.2.0 et il peut y avoir un blocage et dans ce cas, il faut désinstaller le module si possible puis supprimer le dossier module et amproductfields.zip dans le dossier modules.
Une fois que c’est bon, il faut uploader manuellement le dossier amproductfields dans /modules/ et installer via le back office le module.
»
La méthode fonctionne avec Presta 1.7.4.3
Bonjour, Tout mes produits ont besoin d’être expliqué avec des détails techniques et autre, et je ne trouve aucun module qui permette d’écrire un paragraphe personnalisé pour chaque produit sur leurs fiches sous les photos. J’ai regarder du coté de mypresta.eu le module « Prestashop HTML Box Pro » ça sert a accrocher des blocs texte n’importe ou sur le site, mais c’est des bloc texte unique qui apparaissent sur toutes les pages qui ont le « hook » ou l’on a accroché le bloc texte. Je n’ai essayé que la version gratuite « Prestashop HTML box » mais avec tout ce que j’ai essayer je suis pas arrivé a créé de champ personnalisé pour mes produits comme le permet votre module « AmProductsField ».
Vu que vous l’avez devellopé pour PS 1.7, mais sur ma version 1.7.4.2 le multilingue ne fonctionne pas, c’est vraiment domage.
Est ce que vous pourriez mettre a jour le module pour qu’il fonctionne en multilingue svp ? Je dois démarrer ma boutique sans plus tarder, j’en ai vraiment besoin.
Énorme merci si vous pouvez solutionner ce problème.
Bonjour,
Merci pour le commentaire.
Le module n’est pas encore à jour faute de temps.
Je posterai un update sur cet article lorsque se sera le cas.
A bientôt 🙂
j’ai le même problème que mes collègues sur 1.7.1.2 sauf que les correctifs proposés ne fonctionnent pas. Une fois installé le module fait bien les ALTER TABLE mais les champs n’apparaissent pas dans la page admin produit.
Cela semble venir du hook car le hookDisplayAdminProductsMainStepLeftColumnMiddle n’est pas déclenché dans la page produits. Preuve en est que lorsque je glisse une erreur dans le code de amproductfiels.php la page produit n’est pas du tout affectée.
Tandis que la page Admin Positions affiche bien mon erreur.
Bravo et merci pour ce tuto.
Fonctionne parfaitement sur la version 1.7.5.0.
Pour ma part, j’ai placé ce nouveau champ sur le côté droit, sous le le bouton « Ajouter au panier ».
Cordialement,
Roger.
Bonjour, je viens d’installer le module et j’ai le problème cité plus haut, à savoir la valeur n’est pas enregistrée dans la base de donnée lors de la soumission.
@rogers750172 Est ce que le champs multilingue affiche un texte différent en chaque langue voulue dans le back & front office ?
Moi sur 1.7.4.4 ça ne fonctionne pas..
Très bonne expérience : Arnaud a été très présent pour m´aider à configurer le module qui fonctionne parfaitement. Le module correspond tout à fait à mes attentes. Je recommande ce développeur à 100 %
manque un poil de sens de l'humour en fin d'année mais quel professionnalisme ! (attention, cette phrase contient du second degré)
Rapide, efficace, et pédagogue : que demande le peuple ?
Vous cherchez un expert spécialiste Wordpress, Prestashop, WooCommerce ? Contactez-moi pour tous vos projets web en précisant vos coordonnées, l'url de votre site web, et le type de demande : création de site, refonte de site, intégration de maquettes, modifications, etc.
Ce site utilise des cookies pour vous offrir le meilleur service. En poursuivant votre navigation, vous acceptez l’utilisation de cookies de ce site. En savoir plusOK
Bonjour,
Avant tout pour votre travail, il correspond exactement a ce que je souhaite faire !
J’ai néanmoins un soucis, aprés l’installation et la suppression du fichier cache, l’inteface admin du produit n’est pas modifiée. J’ai bien votre module dans l’onglet modules sur la fiche produit mais aucun champs.
Auriez vous une idée ?
https://i.imgur.com/unDJImh.png
Cordialement,
Bonjour Yoann,
Avec plaisir 🙂 Avez-vous bien supprimé le fichier de cache suivant : www/app/cache/prod/class_index.php ?
Bonne journée.
Merci pour votre réponse, j’ai bien supprimer le class_index.php ( cf imprime écran ci dessus ), j’ai essayer de tout supprimer ou de recrée le cache.
J’ai essayer de réinstaller plusieurs fois le module, pourtant il semble actif.
Il y a une subtilité que je n’ai pas compris, pourtant la précédure est trés bien écrite !
Bonjour Yoann,
Dans l’admin de PrestaShop > Paramètres avancés > Performances, il faut que l’option « Désactiver toutes les surcharges » soit sur « non » aussi.
Quelle est la version de PS ?
Bonjour,
J’utilise la version 1.7.1.2, je peux la mettre à jours si besoin.
La case désactiver toutes les surcharges est bien sur non
https://i.imgur.com/MUySgt2.png
En regardant votre premier imprime écran, vous n’avez pas la partie » ajouter une caractéristique, marque ou produit » sous le résumé. J’ai peut etre un conflit de module.
Bonjour Yoann,
Je viens de tester sur une 1.7.1.2 et je n’ai aucun problème.
Si vous le souhaitez, je peux regarder : contactez-moi par e-mail 😉
Bonjour Yoann,
J’ai fais quelques recherches et le module enregistrait bien les informations dans la base de données mais il ne les affichait pas dans le back office une fois sauvegardées.
C’est corrigé et le lien de téléchargement est à jour dans l’article.
J’ai testé sur PrestaShop 1.7.3.0 et c’est fonctionnel.
Bon téléchargement et pensez à laisser un avis sur le sujet 😉
A très vite
Bonjour, merci pour tout ce boulot et de le partager. J’ai le même souci que YOANN, si tu as trouvé la solution pour lui peux tu m’aider à mon tour. Merci beaucoup.
Bonjour eric,
Je viens de modifier l’article avec le lien du module corrigé. J’ai répondu à Yoann avec le problème qui se produisait également.
Bon téléchargement 🙂
A très vite
Bonjour,
Merci pour d’avoir partagé, c’est super.
J’ai le même problème que yoann, si la solution a été trouver je suis preneur.
Merci d’avance
Hello, nice tutorial, it works!
How can the custom field be added to faceted search filter block?
thanks
Hi,
Hum it’s possible but it’s an another deep work 😉
You can send me an email to work on it.
Regards
Bonsoir,
J’ai installé votre module et j’ai fait exactement ce que vous avez décrit. Tout fonctionne parfaitement.
Je vois les trois champs que vous avez créé. J’ai essayé de modifier le fichier product.php ainsi que le fichier .tpl afin de mettre à la place de vos champs un simple champ texte que j’ai nommé « modele ».
Il ne se passe rien. J’ai supprime le fichier de cache mais ça ne change rien. Seuls vos trois champs s’affichent. De plus, j’ai essayé d’entrer des données dans ces champs et de les enregistrer et lorsque je reviens sur la fichie produit, ces champs sont vide. Qu’est-ce que je n’ai pas compris dans votre explication? Comment modifier les fichiers afin de changer les champs que vous avez mis par défaut en y mettant ceux que je désire? Merci.
Bonjour Antoine,
J’ai modifié l’article avec le lien de téléchargement du module PrestaShop corrigé. J’ai répondu à Yoann avec le souci en question
Bon téléchargement et n’hésitez pas à faire un retour si c’est bon 😉
A très vite
Hello!
Thanks for this tutorial. I followed your steps and got my field on the right place … but: the values are not saved to the database? On refresh the values are gone .. do you have any idea?
kind regards,
Hi Andre,
I have notice to Yoann (first comment) that the post and the download link is modified and working right now.
You can download it now and tell me here if all is okay 😉
Regards
Merci beaucoup pour les instructions très pratiques ! J’ai essayé de transférer la méthode aux ps-marques.. Malheureusement, il ne fonctionne pas et la documentation de PrestaShop ne contient aucune aide. Est-ce que quelqu’un a déjà réussi à ajouter son propre champ de marque à PrestaShop 1.7 ?
Pardonnez mon français insuffisant !
Bonjour Gabriel,
Merci pour le commentaire,
Non je n’ai pas encore pris le temps de faire un tuto sur ce sujet mais je le note 🙂
A bientôt !
Bonjour,
Merci pour ce module il fonctionne très bien 🙂
Cependant, je ne peux pas traduire les champs, les valeurs dans les champs restent les mêmes pour toutes les langues, y a-t-il une procédure pour activer cette fonctionnalité ?
Merci d’avance pour votre aide 🙂
Bonjour,
Merci pour votre commentaire.
Par défaut, un seul champ est traduisible dans ce module, vous pouvez donc l’utiliser en multilingue sans problème.
Vous pouvez aussi dupliquer ce champ et son fonctionnement dans le module si besoin 🙂
merci pour le précieux module fonctionne parfaitement sur certaines parties mais j’ai besoin d’aide car je ne sais pas comment faire et je ne suis pas un programmeur.
J’ai utilisé le champ supplémentaire pour remplacer le nom du produit, le nom n’apparaît pas ici:
– lors de l’achat du produit ajouté au panier
– barre de recherche, recherche par nom de produit et non par champ personnalisé
– section ci-dessous le produit: « vous pourriez l’aimer aussi » (je pense que c’est crosselling)
J’ai de sérieux ennuis, pourriez-vous m’aider rapidement? Je suis sur le point de publier et je suis toujours.
Merci beaucoup d’avance!
ver prestashop 1.7.2.4
Bonjour Gianluca,
Merci pour le commentaire,
En fait il faut suivre le tuto car le module permet d’enregistrer en base de données les informations supplémentaires du produit.
Il faut ensuite les afficher et pour cela, il faut placer les variables, c’est l’étape 4 du tuto 😉
Bonjour, je veux implémenter ça via un module!
sur quel hook ça doit être accrocher?
merciii
Bonjour,
Vous avez l’info dans le fichier php du module dans la fonction install tout simplement avec la liste des hooks.
A bientôt 🙂
Bonjour, Je me permets ce message parce que j’ai besoin, pour diverses raisons, non pas de créer les produits par le back office de prestashop mais par les tables mysql. Je travaille sous prestashop 1,7,4,0. J’ai ajouté une table mysql à la base de données prestashop. Certains éléments de cette table vont aller « alimenter » les tables existantes de prestashop, de façon à créer dans le bak office d’une part et aussi dans le front office le produit. Pour arriver à un résultat concluant, j’ai donc à partir du back office créer deux produits. J’ai édité les tables PRODUCT, PRODUCT LANG, PRODUCT SHOP, STOCK AVAILABLE et STOCK MVT, qui à mon sens sont les tables qui permettent le travail sur la création d’un produit. J’ai regardé comment s’articulait les ajouts des produits dans les tables en passant par le back office. J’ai aussi avant tout créer les catégories nécessaires. En alimentant ces tables décrites plus haut, par mysql admin dans l’onglet « INSERER » le produit apparaît bien dans la partie back office avec tous les autres produits, mais n’est pas dans le front office. Pourquoi ?
Merci d’une réponse
Bonjour Edmond,
Merci pour votre commentaire,
Si le produit apparait bien dans l’admin, je pense qu’il doit tout simplement y avoir une valeur à 0 sur le champ « active » ou différent de both pour le champ « visibility ».
C’est de ce côté là qu’il faut regarder à mon avis.
Bonnes recherches et pensez à partager votre solution pour les autres 😉
Suite à ma demande de ce jour 17 juillet a 10h58, j’ai réussi à trouver ce qu’il fallait faire. Il faut que dans la table CATEGORY PRODUCT, une ligne correspondant au nouveau produit créé figure. Exemple le nouvel id product est 5, il faut une nouvelle ligne comprenant l’ID de la category choisie, l’ID product qui sera donc 5 et la position qui sera implémentée de 1 par rapport au produit qui précedait.
Après les autres tables PRODUCT, PRODUCT LANG, PRODUCT SHOP, STOCK AVAILABLE et STOCK MVT, si elles sont correctement remplies, le nouveau produit apparait aux yeux de tous dans le front office.
Cordialement
Edmond
Bonjour Arnaud,
Ca marche parfaitement en front sur fiche produit, quick-view, miniature etc…! un grand merci Arnaud pour ce tuto.
J’aurais souhaité également ajouter le nouveau champs sur le récapitulatif du panier, mais en appliquant l’étape 4 du tuto dans cart.tpl, j’ai un message d’erreur :
ContextErrorException in smarty_internal_templatebase.php(157) : eval()’d code line 696:
Notice: Undefined index: custom_field
in smarty_internal_templatebase.php(157) : eval()’d code line 696
at ErrorHandler->handleError(‘8’, ‘Undefined index: custom_field’, ‘/home/directtrp/www/2017/vendor/prestashop/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()’d code’, ‘696’, array(‘_smarty_tpl’ => object(Smarty_Dev_Template))) in smarty_internal_templatebase.php(157) : eval()’d code line 696
at content_5b51d82ce143e4_24560705(object(Smarty_Dev_Template)) in smarty_internal_templatebase.php(157) : eval()’d code line 659
at content_5b51d82ce0aef4_36988028(object(Smarty_Dev_Template)) in smarty_internal_templatebase.php(157) : eval()’d code line 209
at content_5b51d82ced5474_71490027(object(Smarty_Dev_Template)) in smarty_internal_templatebase.php line 188
at Smarty_Internal_TemplateBase->fetch(‘checkout/cart.tpl’, null, ‘layouts/layout-full-width.tpl’, object(SmartyDev), false, true, false) in SmartyDev.php line 41
at SmartyDev->fetch(‘checkout/cart.tpl’, null, ‘layouts/layout-full-width.tpl’) in FrontController.php line 660
at FrontControllerCore->smartyOutputContent(‘checkout/cart.tpl’) in FrontController.php line 644
at FrontControllerCore->display() in Controller.php line 225
at ControllerCore->run() in Dispatcher.php line 369
at DispatcherCore->dispatch() in index.php line 28
cart.tpl est il gérer différemment que product.tpl?
Merci pour tes lumières!
David
Bonjour David,
Merci pour le commentaire,
Je viens de mettre à jour l’article avec une section dédiée à l’affichage des champs sur la page panier.
J’espère que ça vous aidera 😉
Bonjour et merci pour ce tuto. Est-il possible d’ajouter ce nouveau champ à la fenêtre Quickview du produit ? Merci.
Bonjour illucom,
Merci pour le commentaire,
Comme c’est indiqué par David, il faut reprendre les variable smarty de la fiche produit et les insérer dans le .tpl souhaité.
Dans certains cas comme pour la page panier, il faut aussi modifier le controller pour que la requête sur les produits prenne en compte les nouveaux champs 😉
Bonjour,
Merci pour ce module.
Après la mise à jour du fichier j’ai encore le même problème que YOAN. Les champs ne s’affichent pas dans le back office après installation..
Merci.
Bonjour Bou,
Merci pour votre message.
Il faut bien utiliser la dernière version du module via le lien dans l’article.
Aussi, quelle est votre version de PrestaShop ?
Merci de votre réponse.
La version que j’utilise est la version 1.7.1.2
Le problème vient peut-être de là…
Merci
Bonjour Bouderbala,
Aucun souci avec cette version de PrestaShop 🙂
Bonjour,
Je reviens un peu tardivement avec le même problème. Je n’arrive pas à faire apparaître les champs dans le back office sur un serveur distant (tout marche en local). La version prestashop que j’utilise est la version 1.7.1.2.
Avez-vous des idées sur ce problème ?
Cordialement,
Matthias
Bonjour,
Vérifiez déjà que le module est bien installé, activé et qu’il est présent sur les hooks dans la section positions dans l’admin.
Si non, réinstallez-le en ligne.
A bientôt 🙂
C’est pour des champs simples, une idée de comment faire pour ajouter un select multiple ?
Doc inexistante pour la 1.7 ……
Voici la documentation pour PrestaShop 1.7 : http://doc.prestashop.com/display/PS17/Premiers+pas+avec+PrestaShop+1.7#PremierspasavecPrestaShop1.7-Languesdelaboutique
Les deux derniers champs, une fois le module installé et plusieurs langues activés, deviennent traduisibles dans les langues actives.
Bonjour, non malheureusement lorsqu’on a plusieurs langue d’activées et qu’on a installé le module, effectivement il y a les trois nouveaux champs qui s’affichent sur les fiches produit dans le BO, mais ils ne deviennent pas traduisible. Lorsqu’on change la langue de la fiche produit on a tout les champs natif prestashop de la fiche produit qui changent mais pas les deux derniers champs du module AMProductfield. Vu sur presta 1.7.4.2 et 1.7.4.3
Ce serait bie nd’en faire un module traditionnel qu’on installe par glisser/déposer dans le BO et qui fonctionne en plusieurs langue.
Merci pour ce module en tous cas car il n y a pas de module alternatif pour mettre du texte référençable dans la première colonne des fiches produit (sous les photos).
Bonjour Abc,
Merci pour votre retour.
Je prends note de votre demande pour voir à développer ce type de module.
A bientôt !
Bonjour Arnaud,
Merci pour ce module.
Cependant, aprés avoir suivi à la lettre le tuto j’ai le même problème que YOAN.
Les champs ne s’affichent pas dans le back office après installation.
Quelle solution SVP / Merci
Cache supprimé
version Prestashop 1.7.1.2
Merci de votre aide.
Bonne journée
Sophie
Bonjour,
Je viens de tester sur PS 1.7.2.0 et il peut y avoir un blocage et dans ce cas, il faut désinstaller le module si possible puis supprimer le dossier module et amproductfields.zip dans le dossier modules.
Une fois que c’est bon, il faut uploader manuellement le dossier amproductfields dans /modules/ et installer via le back office le module.
Bonsoir Arnaud Merigeau.
»
Bonjour,
Je viens de tester sur PS 1.7.2.0 et il peut y avoir un blocage et dans ce cas, il faut désinstaller le module si possible puis supprimer le dossier module et amproductfields.zip dans le dossier modules.
Une fois que c’est bon, il faut uploader manuellement le dossier amproductfields dans /modules/ et installer via le back office le module.
»
La méthode fonctionne avec Presta 1.7.4.3
Bonjour, Tout mes produits ont besoin d’être expliqué avec des détails techniques et autre, et je ne trouve aucun module qui permette d’écrire un paragraphe personnalisé pour chaque produit sur leurs fiches sous les photos. J’ai regarder du coté de mypresta.eu le module « Prestashop HTML Box Pro » ça sert a accrocher des blocs texte n’importe ou sur le site, mais c’est des bloc texte unique qui apparaissent sur toutes les pages qui ont le « hook » ou l’on a accroché le bloc texte. Je n’ai essayé que la version gratuite « Prestashop HTML box » mais avec tout ce que j’ai essayer je suis pas arrivé a créé de champ personnalisé pour mes produits comme le permet votre module « AmProductsField ».
Vu que vous l’avez devellopé pour PS 1.7, mais sur ma version 1.7.4.2 le multilingue ne fonctionne pas, c’est vraiment domage.
Est ce que vous pourriez mettre a jour le module pour qu’il fonctionne en multilingue svp ? Je dois démarrer ma boutique sans plus tarder, j’en ai vraiment besoin.
Énorme merci si vous pouvez solutionner ce problème.
Bonjour,
Merci pour le commentaire.
Le module n’est pas encore à jour faute de temps.
Je posterai un update sur cet article lorsque se sera le cas.
A bientôt 🙂
bonjour et merci pour votre module
j’ai suivis toutes les instructions mais après sauvegarde je rentre dans la fiche produit et le champs wizwig est vide ?
d’autre part j’aimerai en fait pouvoir renter un code html dans le champs wizwig est il possible de le faire
Merci d’avance pour votre aide
Bonjour Keren,
Quelle est la version de PrestaShop utilisée ?
Merci 🙂
Bonjour et bonne année 2019
j’ai le même problème que mes collègues sur 1.7.1.2 sauf que les correctifs proposés ne fonctionnent pas. Une fois installé le module fait bien les ALTER TABLE mais les champs n’apparaissent pas dans la page admin produit.
Cela semble venir du hook car le hookDisplayAdminProductsMainStepLeftColumnMiddle n’est pas déclenché dans la page produits. Preuve en est que lorsque je glisse une erreur dans le code de amproductfiels.php la page produit n’est pas du tout affectée.
Tandis que la page Admin Positions affiche bien mon erreur.
Bonsoir, est ce que cette modification est compatible avec prestashop 1.6.1.17 ?
Merci d’avance de votre réponse… Je tourne en rond…
Cordialement
Bonjour Laura,
Pour PrestaShop 1.6 voici un tuto de Webbax : https://www.webbax.ch/2011/06/24/comment-ajouter-un-nouveau-champ-sur-la-fiche-produit-et-dans-le-back-office-prestashop/
A bientôt 🙂
Bravo et merci pour ce tuto.
Fonctionne parfaitement sur la version 1.7.5.0.
Pour ma part, j’ai placé ce nouveau champ sur le côté droit, sous le le bouton « Ajouter au panier ».
Cordialement,
Roger.
Merci Roger !
Bonjour, je viens d’installer le module et j’ai le problème cité plus haut, à savoir la valeur n’est pas enregistrée dans la base de donnée lors de la soumission.
@rogers750172 Est ce que le champs multilingue affiche un texte différent en chaque langue voulue dans le back & front office ?
Moi sur 1.7.4.4 ça ne fonctionne pas..