pliciweb_stephane Posted December 15, 2016 Share Posted December 15, 2016 Bonjour à tous, Cela fait maintenant un bon moment que nous réalisons des sites pour nos clients et jusqu'ici nous n'avons jamais pris le temps de vous donner notre solution interne pour dupliquer un module. Notre solution c'est de lancer un script bash (sous linux) que l'on a créé. Ce script copie un module et renomme les fichiers ainsi que le contenu des fichiers. Son utilisation est la suivante en ligne de commande : duplicate_module.sh modulename prefix toreplace modulename : Nom du répertoire du module que l'on va dupliquer prefix : Prefix que l'on va ajouter pour le nouveau module toreplace : Elements à remplacer séparés par un pipe | Par exemple, si on veut copier le module ps_imageslider de Prestashop 1.7, il faut taper : ./duplicate_module.sh "ps_imageslider" "new_" "imageslider|homeslide" J'espère que ce script pourra vous servir tout autant qu'à nous. Voici le contenu du script : #!/bin/bash # SCRIPT Created by Pliciweb Solutions / www.pliciweb.com # Author Stéphane TRICHET cn='\e[0;m' cv='\e[0;32m' cr='\e[0;31m' if [ "$#" -ne 3 ]; then echo -e " Usage : duplicate_module ${cv}modulename prefix toreplace${cn} ${cv}modulename${cn} : Nom du répertoire du module que l'on va dupliquer ${cv}prefix${cn} : Prefix que l'on va ajouter pour le nouveau module ${cv}toreplace${cn} : Elements à remplacer séparés par un pipe | Exemple : duplicate_module \"ps_imageslider\" \"new_\" \"imageslider|homeslide\" " exit fi modulename="$1" prefix="$2" toreplace="$3" sed_regex="s/\(${toreplace/|/\\|}\)/${prefix}\1/ig" rename_regex="s/(${toreplace})/${prefix}\$1/ig" new_modulename=$(echo "${modulename}" | sed "${sed_regex}" ) if [ ! -d "${modulename}" ];then echo -e "${cr}ERROR${cn} : Le module ${modulename} n'existe pas. Stop!"; exit fi if [ -d "${new_modulename}" ];then echo -e "${cr}ERROR${cn} : Un module de meme nom (${new_modulename}) existe déjà. Stop!"; exit fi echo -e "1/ Copie du module de ${modulename} vers ${new_modulename}" cp -rf "${modulename}/." "${new_modulename}" if [ ! -d "${new_modulename}" ];then echo -e "${cr}ERROR${cn} : La copie n'a pas fonctionnée. Stop!"; exit fi echo -e " ${cv}OK${cn}"; cd "${new_modulename}" echo "2/ Remplacement du contenu des fichiers" find ./ -type f -exec sed -i "${sed_regex}" {} \; echo -e " ${cv}OK${cn}"; echo "3/ Renommage des fichiers et répertoires" find ./ -exec rename "${rename_regex}" {} \; echo -e " ${cv}OK${cn}"; echo "" echo -e "${cv}RESULTAT${cn} : Module dupliqué avec succès, voici son nouveau nom : ${cv}${new_modulename}${cn} " echo "" 1 Link to comment Share on other sites More sharing options...
BeComWeb Posted December 22, 2016 Share Posted December 22, 2016 Bonjour Stéphane, Déjà félicitations pour cette initiative. Avez-vous prévu le cas où le module dupliqué utilise sa propre table dans la base de données ? Ou autrement dit avez vous fait en sorte que le module original et son "clone" n'enregistre pas leurs infos dans la même table ? Link to comment Share on other sites More sharing options...
pliciweb_stephane Posted December 22, 2016 Author Share Posted December 22, 2016 Bonjour, Oui tout à fait, le script le gère, au travers du paramètre toreplace (Liste des éléments à remplacer séparés par un pipe | ) Dans l'exemple pour le module ps_imageslider on met justement "imageslider|homeslide" dans ce paramètre car certaines variables de configuration contiennent "homeslide" et certaines tables aussi. Mais bon, normalement, "imageslider" aurait dû suffire car en principe un module crée des tables contenant son propre nom. Du coup, cela veut dire qu'il faut quand même lire un peu le code du module à dupliquer pour s'assurer une bonne copie du module. Mais ensuite le script fait tout le travail tout seul. Stéphane, 1 Link to comment Share on other sites More sharing options...
AD01 Posted February 8, 2017 Share Posted February 8, 2017 Bonjour, Pouvez-vous m'aider Je souhaite dupliquer le Bloc Catégories v2.9.4 dans Prestashop 1.6 pour l'ajouter en dessous du Diaporama Slider et bien sur pouvoir l'éditer indépendamment du premier en haut Merci bien pour votre aide Cdt AD Link to comment Share on other sites More sharing options...
pliciweb_stephane Posted February 8, 2017 Author Share Posted February 8, 2017 Bonjour, Si vous avez des connaissances Linux, vous pouvez utiliser le script de ce topic avec ces paramètres (non testé) : ./duplicate_module.sh "blockcategories" "new_" "BLOCK_CATEG_|BlockCategories" Les éléments à remplacer sont déduit en principe de la fonction "install" du module. Link to comment Share on other sites More sharing options...
AD01 Posted February 8, 2017 Share Posted February 8, 2017 Merci pour votre réponse, (Je suis novice) J'ai réussi a dupliquer et modifié dans la racine de mon net2ftp le fichier blockategories comme expliqué dans ce topic : 1. Go to your modules folder and make a copy/duplicate of your blockcategories folder and rename it with blockcategories2 for example.2. Enter in the blockcategories2 folder and rename the blockcategories.tpl and blockcategories.php to blockcategories2.tpl and blockcategories2.php.3. Open up your blockcategories2.php and replace all blockcategories words to blockcategories2.4. In blockcategories2.php find this string: function getTree($resultParents, $resultIds, $maxDepth, $id_category = 1, $currentDepth = 0)In $id_category = 1 replace the 1 with your desired subcategory id number5.Open your blockcategories2.tpl and in line 5 replace the Categories string with your desired block name.For example i have used this for one of my blocks: {l s='Perifericos' mod='blockcategories'}That´s all,if you use a language that is not english open up your languague file in the blockcategories2 folder and rename all the blockcategories strings to blockcategories2 Quand j'ouvre mon backoffice et que je vais dans modules et services et que je tape "categories" j'ai bien mes deux bloc, que j'ai activé, mais cela ne change rien sur ma page Je me demande si ils ne sont pas superposés, mais je ne sais pas comment faire pour en déplacer 1, par exemple en dessous du Diaporama Ou peut être y a t il une manipulation pour activer le Block 2 pour savoir si il fonctionne bien Link to comment Share on other sites More sharing options...
AD01 Posted February 8, 2017 Share Posted February 8, 2017 J'ai bien mes deux blocs dans mon back office que j'ai renommé différemment : http://www.casimages.com/i/170208100824899190.jpg.html Link to comment Share on other sites More sharing options...
AD01 Posted February 8, 2017 Share Posted February 8, 2017 J'aimerai pouvoir positionner les deux menus comme ça : (Le second menu sera renommé différemment et totalement indépendant du premier) http://www.casimages.com/i/170208101244358882.jpg.html Link to comment Share on other sites More sharing options...
AD01 Posted February 9, 2017 Share Posted February 9, 2017 J'ai besoin de faire la manipe.. Cordialement AD Link to comment Share on other sites More sharing options...
AD01 Posted March 10, 2017 Share Posted March 10, 2017 Bonjour, Comment puis je faire, pour dupliquer un Bloc avec liens dans le bas de page FOOTER de 1.6, car j'aimerai pouvoir rajouter un bloc "Distributeur" Merci bien. Link to comment Share on other sites More sharing options...
Hicham Alami Posted September 10, 2019 Share Posted September 10, 2019 Bonjour le script ne fonctionne pas à chaque fois il envoie un message que le module existe deja cordialement, Link to comment Share on other sites More sharing options...
pliciweb_stephane Posted September 11, 2019 Author Share Posted September 11, 2019 Bonjour Hicham, Quelle est la ligne de commande que vous saississez ? Link to comment Share on other sites More sharing options...
Amorino Posted December 8, 2019 Share Posted December 8, 2019 (edited) Bonjour @pliciweb_stephane Tout d'abord merci beaucoup pour cette belle initiative Je voudrais dupliquer le module Transfert bancaire ps_wirepayment et avoir un autre transfert postal Pourriez-vous svp m'aider à le faire en step by step ? Je suis sous 1.7.6.2 Merci à l'avance Edited December 8, 2019 by Amorino (see edit history) Link to comment Share on other sites More sharing options...
pliciweb_stephane Posted December 9, 2019 Author Share Posted December 9, 2019 Bonjour @Amorino, En fait, vous devez déposer le script sous un environnement Linux, le rendre exécutable et ensuite le jouer. Malheureusement, je ne peux pas faire un scénario pas à pas, sans oublier que ce script commence à dater En théorie ça donnerait une exécution de ce type : ./duplicate_module.sh "ps_wirepayment" "new_" "wirepayment" En espérant avoir aidé un peu. Link to comment Share on other sites More sharing options...
Guillaume77 Posted January 30, 2020 Share Posted January 30, 2020 Bonjour @Amorino, Est-ce que la solution a fonctionné pour vous ? Je souhaite faire la même chose. Merci pour votre réponse. Link to comment Share on other sites More sharing options...
Thierry L Posted June 5, 2020 Share Posted June 5, 2020 Bonjour, je viens de tester sous mac, le script se lance mais ca ne duplique rien 🙂 Last login: Fri Jun 5 21:02:17 on ttys001 Tiri ~ % /Users/Tiri/Desktop/TEST.sh ; exit; Usage : duplicate_module \e[0;32mmodulename prefix toreplace\e[0;m \e[0;32mmodulename\e[0;m : ps_imageslider \e[0;32mprefix\e[0;m : 2 \e[0;32mtoreplace\e[0;m : duplicate_module "ps_imageslider" "new_" "imageslider|homeslide" [Opération terminée] Link to comment Share on other sites More sharing options...
pliciweb_stephane Posted June 8, 2020 Author Share Posted June 8, 2020 Bonjour, Vous devez lui passer des paramètres pour qu'il fonctionne. Par exemple : duplicate_module.sh "ps_imageslider" "new_" "imageslider|homeslide" 1 Link to comment Share on other sites More sharing options...
Thierry L Posted June 8, 2020 Share Posted June 8, 2020 3 hours ago, pliciweb_stephane said: Vous devez lui passer des paramètres pour qu'il fonctionne. Par exemple : duplicate_module.sh "ps_imageslider" "new_" "imageslider|homeslide" Merci, je teste ça cette semaine ... Très bonne journée 😉 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now