Search the Community
Showing results for tags 'astuce'.
-
Bonjour, Je vous partages une petite astuce (Grand Merci au Foum et à Vous) pour afficher en Verticale sur votre page Produit, les petites images (thumbs_list) au lieu d'un affichage Horizontal. Ceci, une fois appliqué, ils vous faudras modifiez votre "product.css" Cette modification fonctionne sur Prestashop 1.5. Ouvrir => /thèmes/defaut/js/product.js Ligne 481: $('#thumbs_list_frame').scrollTo('li:eq(0)', 700, {axis:'x'}); Remplacer par: $('#thumbs_list_frame').scrollTo('li:eq(0)', 700, {axis:'y'}); Ligne 492: var thumb_width = $('#thumbs_list_frame >li').width()+parseInt($('#thumbs_list_frame >li').css('marginRight')); $('#thumbs_list_frame').width((parseInt((thumb_width)* i) + 3) + 'px'); // Bug IE6, needs 3 pixels more ? Remplacer par: var thumb_height = $('#thumbs_list_frame >li').height()+parseInt($('#thumbs_list_frame >li').css('marginRight')); $('#thumbs_list_frame').height((parseInt((thumb_height)* i) + 3) + 'px'); // Bug IE6, needs 3 pixels more ? OUVRIR => /thèmes/default/css/product.css Ligne 7: #pb-right-column {float: left;width: 266px;} Remplacer par: #pb-right-column {float: left;width: 350px;} Ligne 46: #pb-right-column #views_block {margin-top: 10px;width: 266px;} Remplacer par: #pb-right-column #views_block {margin-top: 10px;height: 266px;width:80px;float:left} Ligne 51: #thumbs_list {float: left;margin-left: 4px;overflow: hidden;width: 216px;} Remplacer par: #thumbs_list {float: left;margin-left: 4px;overflow: hidden;height: 216px;} OUVRIR => /thèmes/default/product.tpl Ligne 190 @ 211, Sélectionner et Couper: {if isset($images) && count($images) > 0} <!-- thumbnails --> <div id="views_block" class="clearfix {if isset($images) && count($images) < 2}hidden{/if}"> {if isset($images) && count($images) > 3}<span class="view_scroll_spacer"><a id="view_scroll_left" class="hidden" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}">{l s='Previous'}</a></span>{/if} <div id="thumbs_list"> <ul id="thumbs_list_frame"> {if isset($images)} {foreach from=$images item=image name=thumbnails} {assign var=imageIds value="`$product->id`-`$image.id_image`"} <li id="thumbnail_{$image.id_image}"> <a href="{$link->getImageLink($product->link_rewrite, $imageIds, 'thickbox')}" rel="other-views" class="thickbox {if $smarty.foreach.thumbnails.first}shown{/if}" title="{$image.legend|htmlspecialchars}"> <img id="thumb_{$image.id_image}" src="{$link->getImageLink($product->link_rewrite, $imageIds, 'medium')}" alt="{$image.legend|htmlspecialchars}" height="{$mediumSize.height}" width="{$mediumSize.width}" /> </a> </li> {/foreach} {/if} </ul> </div> {if isset($images) && count($images) > 3}<a id="view_scroll_right" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}">{l s='Next'}</a>{/if} </div> {/if} {if isset($images) && count($images) > 1}<p class="resetimg clear"><span id="wrapResetImages" style="display: none;"><img src="{$img_dir}icon/cancel_11x13.gif" alt="{l s='Cancel'}" width="11" height="13"/> <a id="resetImages" href="{$link->getProductLink($product)}" onclick="$('span#wrapResetImages').hide('slow');return (false);">{l s='Display all pictures'}</a></span></p>{/if} Coller le code en dessous de la Ligne 176: <!-- right infos--> <div id="pb-right-column"> <!-- product img--> <div id="image-block"> =======COLLER LE CODE ICI======= Ils ne vous restent plus qu'a modifier votre "product.css" a fin d'obtenir l'affichage que vous désirez et remplacer les flêches du scroll par des flêches "haut" "bas" ou tout simplement ajouter un "display:none" pour les désactivés.
- 7 replies
-
- 1
-
- astuce
- product.tpl
-
(and 5 more)
Tagged with:
-
Bonjour, Pour ceux que ça intéresse voila le code inséré sur Prestashop 1.6.1.4 - Attention je ne suis pas sur du bon fonctionnement même si sur le site de test cela fonctionne. Vu que je ne suis pas pour (même pour 35€) achetés des modules à Prestashop car ce sont pour moi des réglages de base qui devrait être présent dans la solution au lieu de nous les faire acheter. Et surtout pour corriger des bug Prestashop la presta team n'est jamais la et fait n'importe quoi. Mais pour nous vendre des modules inutiles la ils sont opérationnels. (une autre discussion) Donc pour en revenir à notre modification prenons en exemple avec le dernier module Paypal à ce jour. Sur la page OPC ça se met bien à jour lorsque l'on change les quantités. C'est basé sur le total du panier inclus port et taxes. Dans la fonction hookPayment de paypal.php (env ligne 624 sur la dernière version à ce jour) ajouter : { $total = floatval(number_format($params['cart']->getOrderTotal(true, 3), 2, '.', '')); if ($total<20) { return false; } } Ceci enlève Paypal pour les montant de moins de 20€ (changer 20 par la valeur désiré)
-
Bonjour! Bonjour! Une nouvelle contribution aujourd'hui, la 3eme! ceci comme toujours graçe au forum et à vous! - Fonctionne sur Prestahop 1.5 OUVRIR ==> /modules/homefeatured/homefeatured.php Ligne 102: $products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10)); Remplacer par: $products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10),NULL,NULL,false,true,true,($nb ? $nb : 50)); 50 = Nombre Total de Produits Aléatoire. (Vérifier dans le BO vos Produits en "Catégorie => Accueil") 10 = Nombre de Produits Phares à afficher.
- 34 replies
-
- 3
-
- Prestashop 1.5
- homefeatured
- (and 6 more)
-
Voici comment pour ajouter le logo de la marque d’un article et rendre ainsi la fiche produit plus professionnelle. Nous partons du principe que nous gérons les marques avec la notion de fabricant (manufacturer).
- 49 replies
-
- 4
-
- prestatips
-
(and 1 more)
Tagged with:
-
Bonjour, Aujourd'hui je partage une ch'tite astuce, que je viens de mettre en application avec succès Pour créer le symbole de Copyright quand on est sur un pc : Il faut appuyer simultanément sur Alt tout en tapant 0169 = © Si vous travaillez sur mac : Saisissez Option + G Cette astuce vaut pour tous ceux qui n'achètent pas un thème tout fait et qui ont mis les mains dans le cambouis pour créer et ou modeler l'aspect graphique de leur boutique. Je vous souhaite une bonne après-midi à tous et à toutes.
-
Bonsoir la communauté, Je vais donc lister ici tous les trucs et astuces sur la 1.5.6 qui permettront j'espère de solutionner certains de vos tracas. Testé et approuvé par mes soins. Je vais essayer d'être concise mais ne me demandez pas d'assistance ;-) J'ai po le temps !!!! CONCERNANT LES IMAGES En multiboutique, si vous régénérez toutes les images produits, cela permettra d'avoir toutes les bonnes liaisons entre les produits et les images. Quelques fois, les associations se font mal et donc il y a des problèmes d'affichage sur les différentes boutiques. Si il n'y a qu'une image, elle sera par défaut la photo principale (cover = 1) et en position 1. Pour plus de précision, intervenez sur la base de données dans la table ps_image_shop et passez toutes les images ayant une position 1 en cover 1. Oui je sais, si votre photo par défaut est celle en position 2, ça pose un problème... oui je sais mais là, je n'ai pas trouvé de solution sinon que celle de faire cela à la main!!!! Oui je sais aussi qu'il serait intelligent de télécharger en premier l'image de couverture... mais chacun fait comme il a envie heinnnn !!! Ensuite, si pour certains vous n'avez pas encore de photos, personnalisez les photos par défaut qui se trouvent dans le dossier img/p/. Ce sera toujours plus agréable que l'image initiale de PS (mettez du texte ou une autre image). CONCERNANT L'IMPORT Choisissez la boutique par défaut, importez votre csv avec une colonne IDSHOP contenant l'ID de la boutique sur laquelle vous souhaitez importer les informations. Cela évitera de modifier l'ID SHOP par défaut dans la base de données qui génère pas mal de soucis. Vous pouvez modifiez le nom, la description courte, la description longue, les métas, les prix, url réécrite... pour chaque boutique pour pouvoir personnaliser vos produits. Concernant les catégories : je cherche encore comment modifier description et métas sans modifier la boutique par défaut. Là il y a un vrai soucis ! ATTENTION : lors de l'import d'un csv, le fait de mapper une colonne avec "ignorer cette colonne" crée des problèmes. CONCERNANT LES PRIX Vous pouvez cumuler une baisse de prix par un groupe client et par une règle de prix catalogue. Celle du groupe client passe en premier. CONCERNANT LA SAUVEGARDE Par cron: La sauvegarde de la base de données : mysqldump --user=X1 --password=X2 X3 > /var/www/vhosts/.../DOSSIERDESAUVEGARDE/BACKUP-`/bin/date +\%Y\%m\%d`.sql Remplacez X1, X2 et X3(nom de la base de données) et /.../ par le chemin complet jusqu'à votre dossier de sauvegarde. La sauvegarde des fichiers : tar -cvzf /var/www/vhosts/.../DOSSIERDESAUVEGARDE/backupfichiers-`/bin/date +\%Y\%m\%d`.tar.gz /var/www/.... Remplacez /.../ par le chemin complet et remplacez /.... par le chemin jusqu'à la racine de votre site. Pensez à récupérer sur un disque dur externe vos sauvegardes tous les jours. CONCERNANT LE MODULE DE NAVIGATION A FACETTE Si vous faites une réindexation (url, prix ou attribut), le module disparait du site. Donc inutile d'en faire tous les jours. Faites-le uniquement lors de l'ajout de nouveaux produits ou de modification de prix, d'url ou de caractéristiques. Ensuite, allez dans la configuration du module, choisissez le modèle, cliquez sur le choix des catégories et validez. Même si le nombre de catégories sélectionnées n'est pas affiché, elles sont quand même en mémoire dans le modèle donc validez tout simplement. Puis enregistrez le modèle et votre bloc réapparaitra. Vous pouvez ajouter des images ou des informations supplémentaires sur la fiche produit ou sur la liste des produits en utilisant les caractéristiques (voir mon site pour les pictos des hommes, femmes,livraison gratuite (que je vais modifier encore pour l'améliorer) et nouveau (que je vais bientôt ajouter). Vous n'êtes pas obligé de faire afficher un filtre dans la navigation à facette pour ces caractéristiques. Un exemple : Pour une promo ou une mise en avant ou définir un top vente, ajouter une caractéristique par un import pourrait être plus rapide que de mettre les produits dans une catégorie. Vous pourriez aussi créer une page "Promo" qui serait un doublon de product-list avec des infos supplémentaires grâce à ses caractéristiques. CONCERNANT VOTRE BLOG Connectez-vous à votre blog par word, c'est plus rapide et bien plus pratique : http://www.blogoergosum.com/2303-guide-publier-sur-wordpress-depuis-word-2007 Ensuite, importez vos articles en masse grâce à CSV importer (chargez le plugin par votre blog) et vous pouvez même programmer à l'avance la publication... MAGIQUE !!! CONCERNANT LA BASE DE DONNEES Encore une astuce pour effectuer une requête sur votre base de donnée par une tâche cron : mysql -u user_name -p password basededonnees -e "commande1;commande2" Remplacez user_name par le nom de l'utilisateur, password par le mot de passe et basededonnees par le nom de la base de données. J'en ai encore plein d'autres alors je les ajouterai au fur et à mesure que le temps me le permettra. N'hésitez pas à faire partager vos trucs, je les remonterai sur mon post pour centraliser l'info.
-
Bonjour Je créé ce topic qui ne sera modifiable que par les modérateurs afin qu'il soit préservé de post inutile ou du spam. Dans ce topic seront recensées toutes les astuces que les membres de la communauté ont proposées et mises en pratique. Pour qu'une astuce soit présente dans ce topic, merci de vous référer à un modérateur. -------------------------- Nouvelle astuce par : @Schwitchboard Afficher les adresses IP de tous les visiteurs dans l'administration : http://www.prestasho...-les-visiteurs/
-
Bonsoir, Je vous propose ma 2eme contribution, une petite astuce fort sympathique! Cette astuce va vous permetres d'ajouter la Marque (manufacturer) dans le Titre/Nom du produit sur la Page Produit avec Redirection en Lien vers tous les produits de cette Marque. - Fonctionne sur Prestashop 1.5 / 1.4 / OUVRIR => /thème/default/product.tpl Ligne 223: <h1>{$product->name|escape:'htmlall':'UTF-8'}</h1> Remplacer par: <h1>{$product->name|escape:'htmlall':'UTF-8'}<a href="{$link->getmanufacturerLink($product->id_manufacturer, $product->link_rewrite)}"style="color:#000;font-size:12px;"> ({$product->manufacturer_name|escape:'htmlall':'UTF-8'})</a></h1> Vous pouvez personaliser la Couleur et la Taille de la Police dans le Code remplacé ci dessus.
- 11 replies
-
- 1
-
- product.tpl
- Prestashop 1.5
-
(and 3 more)
Tagged with:
-
Salut Je me permet de décrire ici une astuce que j'utilise pour être notifié des paniers abandonnés lors du paiement. J'ai regardé ce que proposait Prestashop et les modules payants mais je n'ai pas été convaincu, car je ne veux pas d'une solution qui contact directement le client, je préfère le faire moi même. Et accessoirement je n'étais pas prêt à dépenser plus de 100 euros pour cela. Finalement j'ai trouvé dans ma solution de paiement Payzen un astuce qui me semble intéressante. Dans Payzen il y a une fonction qui s'appelle les règles de notification, cela me permet de recevoir un SMS quand un paiement a été effectué, c'est utile pour moi car je ne suis pas devant l'ordinateur toute la journée. J'ai joué un peu avec les fonctions de notification disponibles et j'en ai adaptée une à mon besoin : dans le cas où le client abandonne sa commande lors du paiement et même s'il ferme la fenêtre de son navigateur et si le montant de la commande est supérieur au montant que j'ai indiqué Payzen va m'envoyer un mail J'ai configuré le texte du message avec l'url pour accéder aux paniers en un clic Ensuite il ne me reste plus qu'à contacter le client, par téléphone ou mail pour le convaincre ou l'aider à finaliser sa commande. J'ai fait de même pour les paiements refusés par la banque du client, quand c'est lié à un plafond dépassé je lui propose de finaliser sa commande par un autre moyen.
-
- panier abandonné
- notification
-
(and 3 more)
Tagged with:
-
Petit script suite à erreur Google merchant
asf21 posted a topic in PrestaShop pour les développeurs
Bonjour à tous. Suite à une erreur dans le fichier xls généré pour Google merchant, nous avions tous les liens des images des produits que nous désirions référencer chez eux depuis prestashop, erronés. Quand il s'agit de deux ou trois erreurs, à la main ça va vite à corriger. Mais quand il s'agit de 269 erreurs, là il faut trouver une solution pour éviter de se taper les corrections pendant trois jours... J'ai écris cette routine afin de, à partir de la liste de liens générés par Google merchant, retrouver les images idouane et qu'elles correspondent avec leurs liens respectifs, afficher, copier/coller dans le bloc-note, par exemple, la liste ainsi recréée, corriger les erreurs puis réintroduire la colonne d'url d'images dans la feuille de calcul Google merchant et recharger le flux (déjà que Google merchant est une usine à gaz inutilement redondante d'absurdités...). J'espère avoir été clair jusque là. Ci dessous le code php (qui aurait sûrement pu être optimisé ou en utilisant PDO mais pas fait pour des raisons de version php de différents serveurs): /* ***** listing.php à poser à la racine de prestashop (au plus simple) ***** */ <?php $op = $_POST["op"]; $mode = $_POST["mode"]; // Dessous, les url sont à importer de la liste que Google merchant génère, donc uniquement les produits en erreur dans leur feuille de calcul $tableau = array('url1'=>'http://www.lemagasin.com/product.php?id_product=xxx','url2'=>'...ecaetera...'); if (!$op) { foreach($tableau as $valeur) { echo "<pre>"; echo $valeur ,'<br/>'; echo "</pre>"; } // Affichage des couples clé / valeur //foreach($tableau as $cle => $valeur) //{ //echo $cle ,' : ', $valeur ,'<br/>'; //} echo "<pre>"; ?> <form action="listing.php" method="post" enctype="multipart/form-data" name="tracer" target="_self"> <input name="op" type="hidden" value="start" /> <label>Type d'affichage</label></br> <label>Mode texte</label><input name="mode" type="radio" value="text" checked /> <label>Mode image</label><input name="mode" type="radio" value="pic" /> <input name="" type="submit" value="Tracer" /> </form> <?php echo "</pre>"; } else { $countvalues = count(array_values($tableau));// on compte le nombre de valeurs dans le array $tableau en haut if($mode=="pic")// mode pictures pas nécessaire mais c'est juste pour visualiser si les images sont bien présentes et conformes { // Ci dessous, à part <table>, les 4 colonnes entre <tr></tr> pas forcément nécessaires ?> <table> <tr> <th style="width:<?php echo round(100/$nbCols);?>%;"></th> <th style="width:<?php echo round(100/$nbCols);?>%;"></th> <th style="width:<?php echo round(100/$nbCols);?>%;"></th> <th style="width:<?php echo round(100/$nbCols);?>%;"></th> </tr> <?php } $nbCols = 4; // nombre de colonnes du tableau $cpt = 0; // compteur d'éléments // Mise en tableau, adaptée du tuto viPHP http://forum.phpfrance.com/faq-tutoriels/nombre-colonnes-dynamique-operateur-modulo-t241626.html while ($cpt<=$countvalues/6) // $countvalues=la totalité des arrays du $tableau et /6 car sinon on se retrouve avec 2x2 doublons donc 4 fois la même image à chaque image... { // parcours des résultats // début d'une ligne if ($cpt%$nbCols==0) // on divise le nb d'élément par le nb de colonnes. Si le reste est de 0 ... echo '<tr>'; // ..., alors on est sur le premier élément d'une ligne // On place chaque élément dans une cellule du tableau for ($i=1; $i<$countvalues+1; $i++) { $adresse = $tableau['url'.$i]; $handle = @fopen($adresse, "r"); $contents = @file_get_contents($adresse); @fclose($handle); //Recherche des liens $pattern = '/<div id="image-block">(.*?)<\/div>/si'; if(preg_match_all($pattern, $contents, $matches)) { foreach($matches as $values) { if (preg_match('/src="([^"]+)"/i', $values[0], $matches)) { $imageUrl = $matches[1]; switch ($mode) { case "text": //Afficher en mode text echo "<td></td></tr><pre>"; echo $adresse.' => ' .$matches[1]. '<br>'; echo "</pre><tr><td></td>"; break; case "pic": //Afficher en mode images echo '<td><a href="'.$adresse.'" target="_blank"><img src="'.$matches[1].'" border="0" /></a></td>'; break; } } break; } } // fin d'une ligne if ($cpt%$nbCols==($nbCols-1)) // on divise le nb d'élément par le nb de colonnes. Si le reste est de ($nbCols-1) ... echo '</tr>'; // ..., on est sur le dernier élément d'une ligne $cpt++; // on incrémente le compteur pour savoir où on en est } // Au cas où ... if ($cpt!=0 && $cpt%$nbCols!=0) { // S'il n'y a pas eu assez de cellules dans la boucle pour finir la ligne ... echo '<td colspan="'.($nbCols - ($cpt%$nbCols) ).'"> </td>'; // ... on complète avec une cellule vide de la bonne taille... echo '</tr>'; // ... et on ferme la ligne } } ?> </table> <?php } ?> Cela peut être utile pour ceux qui seraient dans mon cas et ce source peut être adapté pour différentes applications. Cordialement. SagittariuS -
Marre de toujours utiliser "Bienvenue" (welcome) pour saluer vos visiteurs... Rendez votre site intelligent (ou presque) et polie ! Apprenez-lui à lire l'heure et saluez vos visiteurs en conséquence. PrestaTIPS - BONJOUR BONSOIR - PRESTASHOP.pdf
-
Bonjour, J'ai pensé que ca pourrait toujours servir à quelqu'un d'overrider une AdminTab core. Je vous donne ma méthode ci-dessous donc. L'exemple, c'est l'override de l'AdminCatalog mais ca marche avec tout. 1. structure du module + /modules/nom_module + classes (répertoire - si besoin) + js (répertoire - si besoin) + css (répertoire - si besoin) + ...etc (autres répertoires - si besoin) - AdminCatalog.gif (logo de l'AdminTab à overrider ou à étendre) - AdminCatalog.php (AdminTab à overridé ou à étendre) - nom_module.php ('controlleur' du module) - en, es, fr.php (fichiers de trads) - license.txt (license du module, si besoin) - logo.gif (votre logo) 2. 'Détournement' de la classe Core à l'install du module L'idée est simple, il s'agit de prévenir Prestashop que la classe AdminCatalog qui sera utilisée sera désormais celle du module, et ca passe par une gestion des onglets directement via la base de données. Pour ca, j'ai 2 fonctions : - Remplacement de l'endroit de référence de l'AdminTab par celle du module (pour l'install) - Remise en l'état de l'AdminTab de référence (pour la désintall) Fonction de déclaration de l'override : /** * Update a tab classname from a module * * @author Luc Lérot Freelance <[email protected]> * * @param string $originalTabClassName Orignal class name of the tab to replace * @param array $newTabClassName Class name of new tab * @param bool $changeTabIcon Add or not module icond to new tab * @return bool */ public function changeAdminTabClass($originalTabClassName, $newTabClassName, $changeTabIcon=false) { //Manage Tab Icon if ($changeTabIcon) { @copy(_PS_MODULE_DIR_.$this->name.'/logo.gif', _PS_IMG_DIR_.'t/'.$newTabClassName.'.gif'); @copy(_PS_MODULE_DIR_.$this->name.'/logo.gif', _PS_MODULE_DIR_.$this->name.'/'.$newTabClassName.'.gif'); } else { @copy(_PS_IMG_DIR_.'t/'.$originalTabClassName.'.gif', _PS_IMG_DIR_.'t/'.$newTabClassName.'.gif'); @copy(_PS_IMG_DIR_.'t/'.$originalTabClassName.'.gif', _PS_MODULE_DIR_.$this->name.'/'.$newTabClassName.'.gif'); } //Get id from original Tab class $idTab = Tab::getIdFromClassName($originalTabClassName); //If found, proceed to override if($idTab != 0) { $tab = new Tab ($idTab); $tab->class_name = $newTabClassName; $tab->module = $this->name; return $tab->save(); } return false; } Fonction de remise en état : /** * Reset a tab from a module * * @author Luc Lérot Freelance <[email protected]> * * @param string $originalTabClassName Original class name of the tab * @param string $replacedByTabClassName Class name that replaced the orginal one * @param string $originalTabModule Module name of original tab * @return bool */ public function resetAdminTabClass ($originalTabClassName, $replacedByTabClassName, $originalTabModule=null) { $idTab = Tab::getIdFromClassName($replacedByTabClassName); if($idTab != 0) { $tab = new Tab ($idTab); $tab->class_name = $originalTabClassName; $tab->module = $originalTabModule; return $tab->save(); } return false; } 3. Utilisation des fonctions à l'install et désintall du module Install : /** * Install procedure */ function install () { if ( !parent::install() || !$this->changeAdminTabClass('AdminCatalog','AdminCatalog') ) return false; return true; } Désinstall : /** * Uninstall Procedure */ function uninstall () { if ( !parent::uninstall() OR !$this->resetAdminTabClass('AdminCatalog','AdminCatalog') ) return false; return true; } 4. Astuces - Les 2 fonctions citées peuvent servir plusieurs fois, et il est tout à fait possible (voire mieux) de les insérer directement dans un override de la classe Module (via le répertoire Override cette fois-ci) - La gestion des trads peut poser pb parfois avec ce genre de procédé (et notamment dans le cas précis d'AdminCatalog ou AdminProducts). Je vous propose donc aussi la fonction l() telle que je l'ai ré-écrite, à insérer dans les override des AdminTabs Core. /** * * Override - use translations files to replace english expression. * * @param mixed $string term or expression in english * @param string $class * @param boolan $addslashes if set to true, the return value will pass through addslashes(). Otherwise, stripslashes(). * @param boolean $htmlentities if set to true(default), the return value will pass through htmlentities($string, ENT_QUOTES, 'utf-8') * @return string the translation if available, or the english default text. */ protected function l($string, $class = 'AdminTab', $addslashes = FALSE, $htmlentities = TRUE) { global $_LANGADM, $_MODULE; //set MD5 key $md5Key = md5(str_replace('\'', '\\\'', $string)); //set module key $moduleKey = ''; //Manage Module translations $currentClass = get_class($this); if (Module::getModuleNameFromClass($currentClass)) { $currentKey = '<{'.strtolower(Module::$classInModule[$currentClass]).'}'.strtolower(_THEME_NAME_).'>'.strtolower($currentClass).'_'.$md5Key; $defaultKey = '<{'.strtolower(Module::$classInModule[$currentClass]).'}prestashop>'.strtolower($currentClass).'_'.$md5Key; } //Tries to find translation within default admin translation or module translations if (key_exists('AdminProducts'.$md5Key, $_LANGADM)) $str = $_LANGADM['AdminProducts'.$md5Key]; elseif (key_exists('AdminCatalog'.$md5Key, $_LANGADM)) $str = $_LANGADM['AdminCatalog'.$md5Key]; elseif (key_exists($defaultKey, $_MODULE)) $str = $_MODULE[$defaultKey]; elseif (key_exists($currentKey, $_MODULE)) $str = $_MODULE[$currentKey]; else $str = $string; $str = $htmlentities ? htmlentities($str, ENT_QUOTES, 'utf-8') : $str; return str_replace('"', '"', ($addslashes ? addslashes($str) : stripslashes($str))); }
- 2 replies
-
- admintab
- backoffice
-
(and 3 more)
Tagged with:
-
Par sécurité et éventuellement pour des raisons légales, Il n’est pas possible d’effacer des commandes dans l’administration de Prestashop. Il est possible de contourner cette limitation mais attention à manipuler avec précaution. PrestaTIPS - BYE BYE JOHN DOE - PRESTASHOP.pdf PrestaTIPS - BYE BYE JOHN DOE - PRESTASHOP.pdf