cyril_fr903 Posted April 14, 2023 Share Posted April 14, 2023 (edited) Version prestashop: 1.7.8.8 Thème : classic J'aurai voulu savoir si quelqu'un sait comment faire un saut de ligne dans un titre et changer la taille d'écriture? En gros je voudrais faire un truc dans ce genre la. Par exemple: Nintendo Switch (taille 12px) The Legend of Zelda : Breath of the Wild (taille 20px) Ça donnerai un résultat de ce genre la:https://www.faireparterie.fr/faire-part-de-mariage-portrait-romantique.html?diecut=D53 Edited April 17, 2023 by cyril_fr903 (see edit history) Link to comment Share on other sites More sharing options...
cyril_fr903 Posted April 14, 2023 Author Share Posted April 14, 2023 (edited) Pour précision par rapport à ma question plus haut. Afin de faire un retour à la ligne dans le nom d'un produit, j'ai ça qui fonctionne : {$product.name|replace:'/n':'<br>' nofilter} Il suffit d'écrire le titre de votre produit et d'y ajouter "/n" à l'endroit où on veut faire le saut de ligne. ==> themes/classic/templates/catalog/product.tpl Il suffit de remplacer cette ligne là : <h1 class="h1">{block name='page_title'}{$product.name}{/block}</h1> par <h1 class="h1">{block name='page_title'}{$product.name|replace:'/n':'<br>' nofilter}{/block}</h1> Et il faut faire pareil pour tout les {$product.name} du thème. Bref, la question est plus de savoir, quelle méthode / astuce permettrai d'ajouter à ça des informations CSS ? Edited April 14, 2023 by cyril_fr903 (see edit history) Link to comment Share on other sites More sharing options...
cyril_fr903 Posted April 15, 2023 Author Share Posted April 15, 2023 Ne sachant pas si c'est techniquement possible de faire ce que j'avais prévu plus haut, je me suis tourné sur une autre approche. Ajouter un champ perso, que je mettrai en "sous-titre" à mes pages produits J'ai trouve ce tuto sur internet : https://www.inrage.fr/blog/comment-ajouter-nouveau-champ-produit-prestashop Mais n'ayant jamais crée/installé de module (hors module officiel), j'ai tenté de suivre le tuto, mais sans succès. Est ce que quelqu'un qui s'y connait un peu, pourrait m'aider, svp? Je récapitule ci-dessous ce que j'ai fait:Création d'un fichier: Product.tpl qui j'ai mis dans le dossier ==> override/classes/Product.tpl <?php class Product extends ProductCore { public $composition; public function __construct( $id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null ) { self::$definition['fields']['composition'] = array( 'type' => self::TYPE_HTML, 'lang' => false, 'required' => false, 'validate' => 'isCleanHtml' ); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } } Création d'un dossier "composition" que j'ai mis dans le dossier /modules/ puis création d'un fichier composition.php que j'ai mis dans: /modules/composition/composition.php <?php if (!defined('_PS_VERSION_')) { exit; } class Composition extends Module { public function __construct() { $this->name = 'composition'; $this->tab = 'others'; $this->version = '1.0.0'; $this->author = 'Pascal GAULT'; $this->need_instance = 0; $this->ps_versions_compliancy = [ 'min' => '1.6', 'max' => _PS_VERSION_ ]; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Customize Admin Product'); $this->description = $this->l('Allows us to add others fields to product'); $this->confirmUninstall = $this->l('Are you sure you want to uninstall?'); } } public function install() { if (!parent::install() || !$this->_installSql() || !$this->registerHook('displayAdminProductsMainStepLeftColumnMiddle') ) { return false; } return true; } public function uninstall() { return parent::uninstall() && $this->_unInstallSql(); } protected function _installSql() { $sqlInstall = "ALTER TABLE " . _DB_PREFIX_ . "product ADD composition TEXT NULL"; $returnSql = Db::getInstance()->execute($sqlInstall); return $returnSql; } protected function _unInstallSql() { $sqlInstall = "ALTER TABLE " . _DB_PREFIX_ . "product DROP composition"; $returnSql = Db::getInstance()->execute($sqlInstall); return $returnSql; } public function hookDisplayAdminProductsMainStepLeftColumnMiddle($params) { $product = new Product($params['id_product']); $this->context->smarty->assign(array( 'composition' => $product->composition, )); return $this->display(__FILE__, 'views/hook/admin/product/extra_fields.tpl'); } Et enfin, création d'un fichier : extra_fields.tpl que j'ai mi dans : /modules/composition/views/hook/admin/product/extra_fields.tpl <div class="form-group"> <h4>Composition</h4> <div class="translations tabbable"> <div class="translationsFields tab-content bordered"> <div class="tab-pane translation-label-fr active"> <textarea class="rte autoload_rte" name="composition"> {$composition} </textarea> </div> </div> </div> </div> Je ne sais pas si jusque là j'ai bien compris le tuto mais impossible de retrouver mon module dans prestashop pour l'installer. Link to comment Share on other sites More sharing options...
Ariane Web et Plus Posted April 15, 2023 Share Posted April 15, 2023 Bonjour Ca ne fonctionne pas du tout comme ca. Soit vous créez un module il sera à installer dans les modules Soit vous modifier un fichier tpl (comme votre product.tp) et il est à mettre dans votre thème. Les overides concernent des class qui sont en PHP Sur l'exemple que vous montrez il y a une catégorie et un titre. Sinon oui si vous souhaitez deux mises en page il faut faire 2 champs pour deux titres. Link to comment Share on other sites More sharing options...
cyril_fr903 Posted April 15, 2023 Author Share Posted April 15, 2023 Une méthode ou une autre, peut m'importe.Je vous avouerai que dans le tuto que j'ai trouvé (voir lien), c'était une création de module, mais comme vous me le dites, ça ne fonctionne pas du tout comme ça. Si vous pouviez m'expliquer un peu comment ça fonctionne, je pourrais essayé. Après peut être que c'est plus simple d'ajouter direct dans la fiche produit une entrée avec un champ dédié en bdd ? Link to comment Share on other sites More sharing options...
Mediacom87 Posted April 15, 2023 Share Posted April 15, 2023 Bonjour, https://stackoverflow.com/questions/8355745/break-explode-string-in-smarty Link to comment Share on other sites More sharing options...
cyril_fr903 Posted April 16, 2023 Author Share Posted April 16, 2023 Parfait, ça fonctionne. Pour ceux qui auront besoin à l'avenir voici le morceau de code. themes/classic/templates/catalog/product.tpl J'ai changé ça: <div class="col-md-6"> {block name='page_header_container'} {block name='page_header'} <h1 class="h1">{block name='page_title'}{$product.name}{/block}</h1> {/block} {/block} En ça: {block name='page_header_container'} {block name='page_header'} {assign var=nomproduit value="|"|explode: $product.name} <h1 class="h1">{block name='page_title'} <div class="nomproduit"> <div id="nomproduit0">{$nomproduit[0]}</div> <div id="nomproduit1">{$nomproduit[1]}</div> <div> {/block}</h1> {/block} {/block} Et j'ai ajouté ça à mon CSS: /*Mise en forme du titre des produits*/ #nomproduit0{text-align:center; font-size: 12px; padding: 5px;} #nomproduit1{text-align:center; font-size: 25px; padding: 5px;text-transform: none;} .nomproduit {padding: 5px; font-weight: 300;} Je ne sais pas sui le code est parfait (je ne suis pas développeur) mais je bidouille juste un peu et apprend sur le tas, mais en tout cas ça marche et j'ai le rendu final voulu. Link to comment Share on other sites More sharing options...
Mediacom87 Posted April 16, 2023 Share Posted April 16, 2023 Bonjour, ne mettez pas de div dans votre H1. Encapsulez juste le second élément de la chaine obtenu par un <span> <span>{$nomproduit[1]}</span> Soit <h1 class="h1">{block name='page_title'}{$nomproduit[0]}<br><span>{$nomproduit[1]}</span>{/block}</h1> j'ai ajouté un <br> tout simple, mais vous pouvez gérer le retour à la ligne directement en css dans le span. Link to comment Share on other sites More sharing options...
prestaotop Posted April 16, 2023 Share Posted April 16, 2023 Bonjour @cyril_fr903, bravo pour vos efforts ! Pourriez-vous marquer le post comme résolu pour la communauté ? Merci. Link to comment Share on other sites More sharing options...
Mediacom87 Posted April 16, 2023 Share Posted April 16, 2023 1 Link to comment Share on other sites More sharing options...
cyril_fr903 Posted April 17, 2023 Author Share Posted April 17, 2023 C'est fait, j'ai mis en résolu. Merci pour l'information concernant le div dans la balise H1. Du coup afin de garder la mise en forme, j'ai mis: themes/classic/templates/catalog/product.tpl {block name='page_header_container'} {block name='page_header'} {assign var=produitnom value="|"|explode: $product.name} <h1 class="h1">{block name='page_title'} <span class="fiche-produitnom"> <span id="fiche-produitnom0">{$produitnom[0]}</span> <span id="fiche-produitnom1">{$produitnom[1]}</span> </span> {/block}</h1> {/block} {/block} Et dans le CSS: /*Mise en forme du nom des produits dans la fiche produit*/ #fiche-produitnom0{display: block; text-align:center; font-size: 12px; padding: 5px; letter-spacing : 2px; font-weight: 300;} #fiche-produitnom1{display: block; text-align:center; font-size: 34px; padding-top: 5px; text-transform: none; font-weight: 300; letter-spacing : 2px;} .fiche-produitnom {display: block; padding: 30px; border-bottom: 1px solid #d5d5d5;} J'espère que c'est bon? Link to comment Share on other sites More sharing options...
Ariane Web et Plus Posted April 18, 2023 Share Posted April 18, 2023 (edited) L'approche est interessante mais qu'est ce que vous mettez coté back-office ? A quoi correspond $nomproduit[0] et $nomproduit[1] Edited April 18, 2023 by Ariane Web et Plus (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted April 18, 2023 Share Posted April 18, 2023 Il y a 2 heures, Ariane Web et Plus a dit : L'approche est interessante mais qu'est ce que vous mettez coté back-office ? A quoi correspond $nomproduit[0] et $nomproduit[1] Dans le titre, il met un truc du style : La blague de Toto|Pour les nuls 1 Link to comment Share on other sites More sharing options...
cyril_fr903 Posted April 18, 2023 Author Share Posted April 18, 2023 Merci à tous pour votre aide. $nomproduit[0] et $nomproduit[1] --> C'est le nom du produit (titre du produit) sur la fiche produit. Et j'ai fait peu ou prou le même code avec un CSS un peu différent pour la miniature/product.tpl Ce que j'ai trouvé intéressant avec l'approche que tu m'as proposé, c'est que la méthode est vraiment facile, peut intrusive, flexible et adaptable à tous les utilisateurs. En plus, il suffit d'ajouter un : <span id="fiche-produitnom0">{$produitnom[0]}</span> <span id="fiche-produitnom1">{$produitnom[1]}</span> <span id="fiche-produitnom2">{$produitnom[2]}</span> <span id="fiche-produitnom3">{$produitnom[3]}</span> <span id="fiche-produitnom4">{$produitnom[4]}</span> ...etc... Si on veut mettre sur 3 ligne ou plus avec un CSS propre à chaque ligne. Bref, merci à vous pour l'aide , encore une fois. 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