gmcms Posted June 11, 2010 Share Posted June 11, 2010 Bonjour à tous, existe-t-il un moyen de personnalisation de la mise en page par un principe de "surcharge à la SPIP" pour avoir un template spécifique par catégorie ?Pour rappel et de façon simplifiée, le principe de surcharge de SPIP est le suivant :* category.html pour toutes les catégories* category-1.html pour la catégorie ayant l’identifiant 1 et pour toutes ses sous-catégories* category=1.html uniquement pour la catégorie 1Merci Link to comment Share on other sites More sharing options...
success3 Posted July 22, 2010 Share Posted July 22, 2010 Bonjouril est possible de créer de nouvelles pages "Template".Je viens de le faire pour les catégories et sous catégories. J'explique :La maquette graphique de mon client m'impose une mise en page différente entre la catégorie, la sous catégorie et la sous sous catégorie.J'ai donc fabriqué deux fichiers supplémentaires en dupliquant le fichier category.tpl et en leur appliquant une mise en page différente :1 - category-sous.tpl2 - category-sous-sous.tplIl faut aussi dupliquer le fichier : category.php (à la base de ton site), ce qui donne :1 - category-sous.phpAttention : modifier la ligne : $smarty->display(_PS_THEME_DIR_.'category.tpl'); par $smarty->display(_PS_THEME_DIR_.'category-sous.tpl'); 2 - category-sous-sous.phpAttention : modifier la ligne : $smarty->display(_PS_THEME_DIR_.'category.tpl'); par $smarty->display(_PS_THEME_DIR_.'category-sous-sous.tpl'); Maintenant il faut modifier le fichier category-tree-branch.tpl : {include file=$tpl_dir./category-tree-branch.tpl node=$child last='true'} {else} {include file=$tpl_dir./category-tree-branch.tpl node=$child last='false'} par {include file=$tpl_dir./category-sous-tree-branch.tpl node=$child last='true'} {else} {include file=$tpl_dir./category-sous-tree-branch.tpl node=$child last='false'} et dupliquer ce fichier :1 - category-sous-tree-branch.tplAttention : modifier la ligne : par et les lignes {include file=$tpl_dir./category-sous-tree-branch.tpl node=$child last='true'} {else} {include file=$tpl_dir./category-sous-tree-branch.tpl node=$child last='false'} par {include file=$tpl_dir./category-sous-sous-tree-branch.tpl node=$child last='true'} {else} {include file=$tpl_dir./category-sous-sous-tree-branch.tpl node=$child last='false'} 2 - category-sous-sous-tree-branch.tpl par et les lignes {include file=$tpl_dir./category-sous-tree-branch.tpl node=$child last='true'} {else} {include file=$tpl_dir./category-sous-tree-branch.tpl node=$child last='false'} par {include file=$tpl_dir./category-sous-sous-tree-branch.tpl node=$child last='true'} {else} {include file=$tpl_dir./category-sous-sous-tree-branch.tpl node=$child last='false'} Et voila ça fonctionne !Mais, car il y a souvent un mais, quand on active l'URL simplifié, l'URL de ces nouveaux fichiers n'est pas réécris Je sais d'où vient le problème (enfin je crois) :en remplaçant par La réécriture URL ne s'applique plus.Il faudrait trouver un moyen de faire rediriger $node.link Vers "category-sous.php" et pour l'autre fichier vers category-sous-sous.phpSi quelqu'un à la solution ça serait avec grand plaisir.Voila, j'espère que ce petit tuto t'aura permis d'avancerCordialement Link to comment Share on other sites More sharing options...
prestamodules.net Posted July 28, 2010 Share Posted July 28, 2010 Moi, j'ai fait autrement après est ce plus simple ou plus complexe.Même principe que pour un site vitrine.J'ai créer différents css et si la catégorie est 1 le css à charger est global1.cssSi la catégorie est 2 le css est global2.css etc...Si c'est une autre catégorie, je renvoi vers la 1. Link to comment Share on other sites More sharing options...
success3 Posted July 28, 2010 Share Posted July 28, 2010 Moi, j'ai fait autrement après est ce plus simple ou plus complexe.Même principe que po..... Hum mais pourquoi n'y ais-je pas pensé du tout.... :/Pouvez-vous me préciser où appliquer cette solution ? svpMerci bienCordialement Link to comment Share on other sites More sharing options...
success3 Posted July 28, 2010 Share Posted July 28, 2010 Bonsoirj'ai contourné le problème en ne gardant qu'un seul fichier category et en jouant avec les CSS pour avoir trois présentations différentes par niveaux de catégories et sous catégoriesdans mon fichier category.tpl je récupère l'ID de la catégorie où je me trouve en ajoutant "_{$category->id}" à mes class et/ou id ... ... ... Link to comment Share on other sites More sharing options...
prestamodules.net Posted July 29, 2010 Share Posted July 29, 2010 L'explication plus précise :Dans header.phpJ'ai rajouté$category = new Category(intval(Tools::getValue('id_category')), intval($cookie->id_lang));Pour récuperer la catégorie/* Hooks are volontary out the initialize array (need those variables already assigned) */$smarty->assign(array( 'HOOK_HEADER' => Module::hookExec('header'), 'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn'), 'HOOK_TOP' => Module::hookExec('top'), 'static_token' => Tools::getToken(false), 'token' => Tools::getToken(), 'priceDisplayPrecision' => _PS_PRICE_DISPLAY_PRECISION_, 'nav' => $nav,'id_category' => intval($category->id), 'content_only' => intval(Tools::getValue('content_only'))));et ajouter aussi ici pour assigner.et dans header.tpl{if isset($css_files)} {foreach from=$css_files key=css_uri item=media}{if $id_category == '0'} <link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" /> {elseif $id_category=='2'}<link href="{$base_dir}themes/prestashop/css/global2.css" rel="stylesheet" type="text/css" media="{$media}" /> {elseif $id_category=='3'}<link href="{$base_dir}themes/prestashop/css/global3.css" rel="stylesheet" type="text/css" media="{$media}" /> {elseif $id_category=='4'}<link href="{$base_dir}themes/prestashop/css/global4.css" rel="stylesheet" type="text/css" media="{$media}" /> {elseif $id_category=='5'}<link href="{$base_dir}themes/prestashop/css/global5.css" rel="stylesheet" type="text/css" media="{$media}" /> {elseif $id_category=='6'}<link href="{$base_dir}themes/prestashop/css/global6.css" rel="stylesheet" type="text/css" media="{$media}" /> {else}<link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" />{/if} {/foreach}{/if}a la place de {if isset($css_files)} {foreach from=$css_files key=css_uri item=media}<link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" /> {/foreach}{/if}Ensuite il faut créer les différents global1.css, 2, 3 etc..Voila pour l'explication ;-) Link to comment Share on other sites More sharing options...
samsab Posted August 18, 2010 Share Posted August 18, 2010 bonjour à tous.ma demande est plus basique, pour autant je ne sais pas le faire......j'aimerais simplement changer le header (dans mon cas un swf) pour chaque catégorie, et garder le header principal pour la page d'accueil.qui saurait me dire comment faire?A+ Link to comment Share on other sites More sharing options...
Camille Frisch Posted October 14, 2010 Share Posted October 14, 2010 Ce MOD peut peut etre vous interesserhttp://www.prestashop.com/forums/viewthread/68565/modules_tiers/mod_template_dynamique__utilisez_plusieurs_themes_sur_votre_boutique/mika Link to comment Share on other sites More sharing options...
titeuf913 Posted January 15, 2011 Share Posted January 15, 2011 Bonjour,Si ca peut vous intéresser j'ai fait sa pour afficher une template en fonction d'une catégorie : define('__PS_BASE_URI__', '/'); switch ($_GET['id_category']) { // CONDITIONS POUR AFFICHER UNE TEMPLATE SPECIFIQUE EN FONCTION D'UNE CATEGORIE : // BOUTIQUE SECURITE INCENDIE : // CATEGORIE MERE : case '10000050': // SOUS CATEGORIES : case '10000057': case '10000139': case '10000095': case '10000089': case '10000081': case '10000094': case '10000055': case '10000058': case '100000144': case '10000054': case '10000088': define('_THEME_NAME_', 'securite_incendie'); break; // FIN BOUTIQUE SECURITE INCENDIE : // FIN CONDITIONS POUR AFFICHER UNE TEMPLATE SPECIFIQUE EN FONCTION D'UNE CATEGORIE : // SI AUCUNE CONDITION AFFICHER LA TEMPLATE PAR DEFAULT default: define('_THEME_NAME_', 'prestashop'); } Link to comment Share on other sites More sharing options...
canel Posted February 9, 2011 Share Posted February 9, 2011 Bonjour,Je recherche aussi cette fonction, et ta solution prestamodules.net me parait très bien. Malheureusement lorsque j'insère ton code dans le fichier header.tpl je n'ai plus rien à l'écran ! Voici mon code : {if isset($css_files)} {foreach from=$css_files key=css_uri item=media} {if $id_category '0'} <link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" /> {elseif $id_category'2'}<link href="{$base_dir}themes/prestashop/css/global.css" rel="stylesheet" type="text/css" media="{$media}" /> {else}<link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" />{/if} {/foreach} {/if} Je suis en local, c'est peut-etre cela ?Merci Link to comment Share on other sites More sharing options...
canel Posted February 9, 2011 Share Posted February 9, 2011 Bonjour,Je recherche aussi cette fonction, et ta solution prestamodules.net me parait très bien. Malheureusement lorsque j'insère ton code dans le fichier header.tpl je n'ai plus rien à l'écran ! Voici mon code :{if isset($css_files)} {foreach from=$css_files key=css_uri item=media} {if $id_category '0'} <link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" /> {elseif $id_category'2'}<link href="{$base_dir}themes/prestashop/css/global.css" rel="stylesheet" type="text/css" media="{$media}" /> {else}<link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" />{/if} {/foreach} {/if} Je suis en local, c'est peut-etre cela ?Merci Au final j'ai pris la solution de success3 ! ça marche nikel ! merci beaucoup ! Link to comment Share on other sites More sharing options...
Centaure Posted February 5, 2014 Share Posted February 5, 2014 Bonjour, Je cherche aussi à avoir un thème différents par catégories, ne trouvant pas de solutions adéquates je me suis penché sur le multi-boutique de prestashop ... mais ça impose pas mal de contraintes ... En cherchant un peu je suis donc arrivé sur votre fil de discution mais il date de 2011 et je me demande si aujourd'hui il n'y à pas de solutions plus simples pour faire cela, sans toucher au code de prestashop ... Je vous remercie par avance pour vos réponses 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