Jump to content

Search the Community

Showing results for tags 'plusieurs valeurs'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Community Help and Support
    • PrestaShop Download
    • PrestaShop Marketplace
  • News and Announcements
    • PrestaShop news and releases
    • PrestaShop Beta
    • PrestaShop Blogs
    • PrestaShop Meetups
  • International community (English)
    • General topics
    • PrestaShop Merchants
    • PrestaShop Developers
    • Taxes, Translations & Laws
    • Community Modules and Themes
  • Forum francophone
    • Discussion générale
    • Aide et support communautaire
    • PrestaShop pour les marchands
    • PrestaShop pour les développeurs
    • Adaptation aux lois Québécoises
    • Modules et thèmes gratuits
    • Modules et thèmes payants
  • Foro en Español
    • Discusión general
    • Soporte de la comunidad y ayuda
    • Comerciantes PrestaShop
    • Desarrolladores PrestaShop
    • Módulos y plantillas gratuitas
  • Forum italiano
    • Forum generale
    • Aiuto e supporto della Community
    • Commercianti PrestaShop
    • Sviluppatori PrestaShop
    • Aspetti legali sull'eCommerce
    • Moduli e template gratuiti
  • Deutsches Forum
    • Generelle Fragen
    • Support und Hilfe aus der Community
    • e-Commerce/Versand-Handel mit Prestashop
    • Prestashop-Entwickler
    • Anpassung an deutsches Recht
    • Kostenlose Module und Templates
    • Generelle Fragen Copy
  • Nederlandstalig forum
    • Algemeen
    • Hulp en ondersteuning, van en voor de community
    • PrestaShop-winkeliers
    • PrestaShop-ontwikkelaars
    • Het aanpassen van PrestaShop
    • Gratis modules en templates
  • Fórum em Português
    • Fórum Geral
    • Ajuda e Suporte da Comunidade
    • Lojistas que utilizam o PrestaShop
    • Desenvolvedores PrestaShop
    • Legislação específica
    • Módulos e temas gratuitos
  • Polskie forum
    • Forum ogólne
    • Wsparcie i pomoc użytkowników
    • Oferty twórców PrestaShop
    • Deweloperzy PrestaShop
    • Darmowe Moduły i Szablony
  • Dansk forum
    • Generelt forum
    • Hjælp og support fra fællesskabet
    • PrestaShop for købmænd
    • PrestaShop for udviklere
    • Love og regler
    • Gratis moduler og temaer
  • České fórum
    • Instalasi, Konfigurasi dan upgrade
    • Obecná diskuze
    • Bezplatné moduly a šablony
    • PrestaShop vývojáři
    • PrestaShop obchodníci
  • Bahasa Indonesia
    • Diskusi Umum
    • Podpora a pomoc komunity
    • Laporan Bug
    • Jasa, Promosi & Lowongan Kerja
  • Svenskt forum
    • Allmän diskussion
    • Installation, konfigurering och uppdatering
  • Forumul românesc
    • Discuţii generale
    • Instalare, configurare şi upgrade
  • Pусский язык
    • Обсуждение скрипта
    • Установка, Настройка, Обновление
    • Прием багов
  • Slovenské fórum
    • Všeobecná diskusia
    • Podpora a pomoc komunity
    • PrestaShop obchodníci
    • PrestaShop vývojári
    • Bezplatné moduly a šablóny
  • Türkçe Topluluğu
    • Genel Konular
    • Topluluk desteği ve yardım
    • PrestaShop Tüccarları
    • Prestashop Geliştiricileri
    • Ücretsiz Modül ve Temalar
  • Diễn đàn tiếng Việt
    • Thảo luận chung
    • Hỗ trợ từ cộng đồng
    • Dành cho chủ doanh nghiệp / cửa hàng
    • Dành cho lập trình viên
  • PrestaShop Communities
    • اللغه العربيه [Arabic]
    • Ελληνικά [Greek]
    • עִבְרִית [Hebrew]
    • 中文
    • Magyar [Hungarian]
    • 日本語 [Japanese]
    • Lietuviškai [Lithuanian]
    • انجمن فارسی [Persian]
    • ไทย [Thai]
    • Malaysia [Malaysian]
    • Eesti [Estonian]
    • Slovenščina [Slovenian]
    • Српски [Serbian]
  • IP. Board Forum
    • IP. Board Forum Questions and Issues
  • Archive
    • Zapłać Moduły i Szablony [ARCHIVE]
    • Moduly, upravy a dizajn [ARCHIVE]
    • Phát triển và các mô-đun [ARCHIVE]
    • Yazılım, Modül ve Tema [ARCHIVE]
    • Модули, Шаблоны [ARCHIVE]
    • Module şi teme [ARCHIVE]
    • Pengembangan dan Modul [ARCHIVE]
    • Moduler och teman [ARCHIVE]
    • Ecommerce x PrestaShop [ARCHIVE BOARD]
    • Vývoj a moduly [ARCHIVE]
    • Kostenpflichtige Module, Templates [ARCHIVE]
    • Módulos y temas pagos [ARCHIVE]
    • Módulos e temas pagos [ARCHIVE]
    • Servizi commerciali [ARCHIVE]
    • Forum - Feedback Contributor
    • PrestaShop Cloud

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Found 1 result

  1. Same topic in English Bon, je sais que le forum n'encourage pas les modifs du coeur de PrestaShop mais je crois que cette fonctionnalité manque vraiment à beaucoup de monde. Voici donc les modifications que j'ai effectué sur PS 1.4.8.2 pour pouvoir utiliser des caractéristiques à multiples valeurs : Pour PS v1.5.x voir ce post : http://www.prestasho...post__p__967310 Maintenant il existe également un module pour PS1.5.x http://www.prestasho...s-par-produits/ Merci à Flo_180 Tout d'abord il faut modifier la structure de la table ps_feature_product pour autoriser l’insertion de plusieurs lignes avec les mêmes id_feature et id_product. (je suppose ici que le préfixe de vos tables est "ps", sinon il suffit de remplacer ps par votre préfixe) - Accédez à votre base de donnée via phpmyadmin, et affichez la structure de la table ps_feature_product - Dans la zone Index, supprimez la caractéristique PRIMERY des champs id_feature et id_product. - Si la zone index n'apparait pas, cliquez sur l'onglet SQL et exécutez la commande : ALTER TABLE ps_feature_product DROP PRIMARY KEY Maintenant votre base de données est prête à recevoir plusieurs valeurs pour une même caractéristique. Ensuite il faut modifier le fichier AdminProducts.php qui se trouve dans le sous dossier tabs de votre répertoire admin. Éditez le fichier AdminProducts.php pour faire les modifications suivantes : Dans la fonction postProcess, ligne 668 (pour PS 1.4.8.2, peut-être une autre ligne pour une autre version...) Remplacez : if ($val) $product->addFeaturesToDB($match[1], $val); Par : if ($val && $val[0] != 0) foreach ($val AS $feature_val) $product->addFeaturesToDB($match[1], $feature_val); La variable $val sera devenu un tableau contenant les différentes valeurs de la caractéristique. On va donc ajouter une ligne pour chacune de ces valeurs dans la table ps_feature_product. Dans la fonction displayFormFeatures (ligne 3578 - PS 1.4.8.2) Remplacez : foreach ($feature AS $tab_features) { $current_item = false; $custom = true; foreach ($obj->getFeatures() as $tab_products) if ($tab_products['id_feature'] == $tab_features['id_feature']) $current_item = $tab_products['id_feature_value']; $featureValues = FeatureValue::getFeatureValuesWithLang((int)$cookie->id_lang, (int)$tab_features['id_feature']); echo ' <tr> <td>'.$tab_features['name'].'</td> <td style="width: 30%">'; if (sizeof($featureValues)) { echo ' <select id="feature_'.$tab_features['id_feature'].'_value" name="feature_'.$tab_features['id_feature'].'_value" onchange="$(\'.custom_'.$tab_features['id_feature'].'_\').val(\'\');"> <option value="0">--- </option>'; foreach ($featureValues AS $value) { if ($current_item == $value['id_feature_value']) $custom = false; echo '<option value="'.$value['id_feature_value'].'"'.(($current_item == $value['id_feature_value']) ? ' selected="selected"' : '').'>'.substr($value['value'], 0, 40).(Tools::strlen($value['value']) > 40 ? '...' : '').' </option>'; } echo '</select>'; } else echo '<input type="hidden" name="feature_'.$tab_features['id_feature'].'_value" value="0" /><span style="font-size: 10px; color: #666;">'.$this->l('N/A').' - <a href="index.php?tab=AdminFeatures&addfeature_value&id_feature='.(int)$tab_features['id_feature'].'&token='.Tools::getAdminToken('AdminFeatures'.(int)(Tab::getIdFromClassName('AdminFeatures')).(int)($cookie->id_employee)).'" style="color: #666; text-decoration: underline;">'.$this->l('Add pre-defined values first').'</a></span>'; echo ' </td> <td style="width:40%" class="translatable">'; $tab_customs = ($custom ? FeatureValue::getFeatureValueLang($current_item) : array()); foreach ($this->_languages as $language) echo ' <div class="lang_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $this->_defaultFormLanguage ? 'block' : 'none').'; float: left;"> <textarea class="custom_'.$tab_features['id_feature'].'_" name="custom_'.$tab_features['id_feature'].'_'.$language['id_lang'].'" cols="40" rows="1" onkeyup="if (isArrowKey(event)) return ;$(\'#feature_'.$tab_features['id_feature'].'_value\').val(0);" >'.htmlentities(Tools::getValue('custom_'.$tab_features['id_feature'].'_'.$language['id_lang'], FeatureValue::selectLang($tab_customs, $language['id_lang'])), ENT_COMPAT, 'UTF-8').'</textarea> </div>'; echo ' </td> </tr>'; } Par : foreach ($feature AS $tab_features) { $current_item = false; $custom = true; foreach ($obj->getFeatures() as $tab_products) if ($tab_products['id_feature'] == $tab_features['id_feature']) $current_item[] = $tab_products['id_feature_value']; $featureValues = FeatureValue::getFeatureValuesWithLang((int)$cookie->id_lang, (int)$tab_features['id_feature']); echo ' <tr> <td>'.$tab_features['name'].'</td> <td style="width: 30%">'; if (sizeof($featureValues)) { echo '<div style="width:200px;max-height:200px;margin:4px 0px;padding:2px;border:1px solid #e0d0b1;overflow: auto;text-align:left;">'; if (!$current_item) $current_item[0] = null; foreach ($featureValues AS $value) if (in_array($value['id_feature_value'], $current_item)) $custom = false; echo '<input type="checkbox" style="display:none;" name="feature_'.$tab_features['id_feature'].'_value[]" id="feature_'.$tab_features['id_feature'].'_value" value="" '.($custom ? 'checked="checked"' : '').'/>'; foreach ($featureValues AS $value) { echo '<label style="padding:2px;text-align:left;cursor:pointer;width:98%;'.((in_array($value['id_feature_value'], $current_item)) ? 'background-color:#acd8fe;' : '').'"> <input type="checkbox" name="feature_'.$tab_features['id_feature'].'_value[]" class="feature_'.$tab_features['id_feature'].'_value" value="'.$value['id_feature_value'].'"'.((in_array($value['id_feature_value'], $current_item)) ? ' checked="checked"' : '') .'onchange="$(\'.custom_'.$tab_features['id_feature'].'_\').val(\'\'); $(\'#feature_'.$tab_features['id_feature'].'_value\').attr(\'checked\', false); if ($(this).attr(\'checked\')) $(this).closest(\'label\').css(\'background-color\', \'#acd8fe\'); else $(this).closest(\'label\').css(\'background-color\', \'#ffffff\');"> ' .substr($value['value'], 0, 40).(Tools::strlen($value['value']) > 40 ? '...' : '').' </label><br />'; } echo '</div>'; } else echo '<input type="hidden" name="feature_'.$tab_features['id_feature'].'_value" value="0" /><span style="font-size: 10px; color: #666;">'.$this->l('N/A').' - <a href="index.php?tab=AdminFeatures&addfeature_value&id_feature='.(int)$tab_features['id_feature'].'&token='.Tools::getAdminToken('AdminFeatures'.(int)(Tab::getIdFromClassName('AdminFeatures')).(int)($cookie->id_employee)).'" style="color: #666; text-decoration: underline;">'.$this->l('Add pre-defined values first').'</a></span>'; echo ' </td> <td style="width:40%" class="translatable">'; $tab_customs = ($custom ? FeatureValue::getFeatureValueLang($current_item[0]) : array()); foreach ($this->_languages as $language) echo ' <div class="lang_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $this->_defaultFormLanguage ? 'block' : 'none').'; float: left;"> <textarea class="custom_'.$tab_features['id_feature'].'_" name="custom_'.$tab_features['id_feature'].'_'.$language['id_lang'].'" cols="40" rows="1" onkeyup="if (isArrowKey(event)) return; $(\'#feature_'.$tab_features['id_feature'].'_value\').attr(\'checked\', true); $(\'.feature_'.$tab_features['id_feature'].'_value\').attr(\'checked\', false); $(\'.feature_'.$tab_features['id_feature'].'_value\').closest(\'label\').css(\'background-color\', \'#ffffff\');" >' .htmlentities(Tools::getValue('custom_'.$tab_features['id_feature'].'_'.$language['id_lang'], FeatureValue::selectLang($tab_customs, $language['id_lang'])), ENT_COMPAT, 'UTF-8').'</textarea> </div>'; echo ' </td> </tr>'; } La variable $current_item est transformée en tableau et récupère les différentes valeurs enregistrées de la caractéristique. La zone de sélection est remplacée par une liste avec des cases à cocher dont les valeurs seront récupérées par la fonction postProcess modifiée précédemment. Maintenant vous pouvez sélectionner plusieurs valeurs pour vos caractéristiques en cliquant sur les valeurs désirées. Pour ceux qui sont sous PS 1.4.8.2, voici mon fichier AdminProducts.php modifié : AdminProducts.php Toujours pour PS 1.4.8.2, voici les fichiers ProductController.php et CompareController.php, à AJOUTER dans /override/controllers/ pour corriger l'affichage des caractéristiques à valeurs multiples dans la fiche produit et dans la comparaison de produits (voir captures d'écrans) ProductController.php CompareController.php Si vous êtes sur une autre version de prestashop ou si vous avez déjà ces fichiers dans votre dossier override, ouvrez les fichiers et repérez le code à changer pour effectuer vous-même les modifs sur vos fichiers (les modifs sont commentés) J'ai fais beaucoup d'essais sur un site que je développe en local, et tout semble fonctionner sans problème. - La navigation à facettes prend bien en compte ces valeurs de caractéristiques multiples, sans aucune modif suplémentaire - On peut toujours entrer des caractéristiques personnalisées (non gérées par la navigation à facettes) - Avec les deux fichiers override joints, les caractéristiques à plusieurs valeurs s'affichent correctement dans la fiche technique produit et dans la comparaison de produits. Voila, je pense que cette modif pourra intéresser pas mal de monde... Mais, malgré tous mes essais, il est toujours possible que cette modification interfère avec d'autres parties du code, alors si vous rencontrez des problèmes faites le savoir ici.
×
×
  • Create New...