[EDGE] Afficher masquer les catégories sous forme d'onglets

Voir le sujet précédent Voir le sujet suivant Aller en bas

Milouze14
avatar
Fondateur

MessageMilouze14

  • 16px
  • 24px
  • Zoom
Hello les ami(e)s,

un très grand merci à mon ami @no_way (Arnaud ) pour m'avoir tiré une bonne épine du pied concernant la mémorisation du choix de l’utilisateur.

Par conséquent, l'astuce sera visible pour tous.

Un petit merci sera apprécié  clin oeil .


Pour que cette dernière fonctionne, il faudra que les catégories soient séparées et cocher le choix sur complet:

Affichage/Page d'acceuil/ Structure et hiérarchie/Niveau de compression de l'index

Séparer les catégories sur l'index :

Cocher sur complet

Hum, l'astuce consiste:
A afficher une barre au dessus de la première catégorie ( si on a cliqué sur un titre d'une catégorie).
Si cliqué, on masque la catégorie en question et on affiche son onglet dans la barre.
Un comptage/décomptage sera affiché mentionnant le nombre de catégories masquées.
Une petite croix sera déposée afin d'afficher toutes les catégories.
Mais rassurez vous, vous pourrez aussi cliquez sur l'onglet pour afficher sa catégorie.


Les aperçus imagés:











Ensuite, on va intervenir dans le template afin de tout modifier pour que l'astuce soit fonctionnelle.
La barre sera en relation avec le thème du fofo.

Dans le template index_box:
Affichage/Templates/Général/index_box

Supprimez tout le contenu et remplacez par:

Code:

<style>
/*ON CACHE LES CATEGORIE*/
div[id^="/c"].forum-category{display:none;}

/*LA BARRE DES ONGLETS*/
#M14_get_onglet
{
display:none;
width:99%;
padding:4px;
height: 30px;
line-height: 30px;
border-radius:6px;
margin: 16px 0px 0px 0px;
}
/*LES ONGLETS*/
a.M14_onglet
{
line-height: 30px;
height: 24px;
font-size: 14px !important;
padding:3px;
margin-left: 5px;
background:white;
color:black;
top: -3px;
position: relative;
border-radius: 6px;
cursor:pointer;
}
/*NOMBRE DE CATEGORIES*/
.M14_onglets
{
position:absolute;
width: 16px;
height: 16px;
margin-top:-20px;
margin-left: 10px;
text-align:center;
cursor:pointer;
-webkit-border-top-left-radius: 6px;
-webkit-border-top-right-radius: 6px;
-moz-border-radius-topleft: 6px;
-moz-border-radius-topright: 6px;
border-top-left-radius: 6px;
border-top-right-radius: 6px;
}
/*APPARENCE DU TEXTE DU NOMBRE DE CATEGORIES CACHEES*/
.M14_onglets span
{
color:white;
font-weight:bold;
font-size:11px;
width: 16px;
height: 16px;
top: -8px;
position: relative;  
}
/*LE BOUTON D OUVERTURE DE TOUTES LES CATEGORIES*/
#M14_ongletsAlls
{
display:none;
position:absolute;
width: 16px;
height: 16px;
margin-top:-20px;
margin-left:40px;
text-align:center;
cursor:pointer;
-webkit-border-top-left-radius: 6px;
-webkit-border-top-right-radius: 6px;
-moz-border-radius-topleft: 6px;
-moz-border-radius-topright: 6px;
border-top-left-radius: 6px;
border-top-right-radius: 6px;
}
/*APPARENCE DU TEXTE D OUVERTURE DE TOUTES LES CATEGORIES*/
#M14_ongletsAlls span
{
color:white;
font-weight:bold;
font-size:11px;
width: 16px;
height: 16px;
top: -8px;
position: relative;  
}

</style>
<ul id="search-links" class="linklist">
 <!-- BEGIN switch_user_logged_in -->
 <li><a href="{U_SEARCH_NEW}">{L_SEARCH_NEW}</a> • </li>
 <li><a href="{U_SEARCH_SELF}">{L_SEARCH_SELF}</a> • </li>
 <!-- END switch_user_logged_in -->
 <li><a href="{U_SEARCH_UNANSWERED}">{L_SEARCH_UNANSWERED}</a></li>
 <!-- BEGIN switch_user_logged_in -->
 <li class="right"><a href="{U_MARK_READ}" accesskey="m">{L_MARK_FORUMS_READ}</a></li>
 <!-- END switch_user_logged_in -->
</ul>



<!-- BEGIN catrow -->
 <!-- BEGIN tablehead -->

   <div class="forum-category">
    <noscript>
      <div class="title M14_maintitle">{catrow.tablehead.L_FORUM}</div>
      <div id="{catrow.tablehead.ID}">
    </noscript>
    <script type="text/javascript">(function() {
      var state = my_getcookie('fae_{catrow.tablehead.ID}') == 'hidden';
      document.write('<div class="title M14_maintitle">{catrow.tablehead.L_FORUM}</div>');
    }());</script>
      

 <!-- END tablehead -->

  <!-- BEGIN forumrow -->
    <div class="forum-block color-primary">
      <div class="forum-block-inner">
        <div class="forum-status" title="{catrow.forumrow.L_FORUM_FOLDER_ALT}" style="background-image:url('{catrow.forumrow.FORUM_FOLDER_IMG}');">
        </div>

        <div class="forum-info">

          <h{catrow.forumrow.LEVEL} class="hierarchy M14_anchor">
            <a href="{catrow.forumrow.U_VIEWFORUM}" class="forumtitle">{catrow.forumrow.FORUM_NAME}</a>
          </h{catrow.forumrow.LEVEL}>
          <div class="forum-description">{catrow.forumrow.FORUM_DESC}<div class="clear"></div></div>

          <!-- BEGIN switch_moderators_links -->
            <div class="forum-moderators">{catrow.forumrow.switch_moderators_links.L_MODERATOR}{catrow.forumrow.switch_moderators_links.MODERATORS}</div>
          <!-- END switch_moderators_links -->
          <div class="sub-forum-links">{catrow.forumrow.L_LINKS}{catrow.forumrow.LINKS}
          <strong>{forumrow.L_SUBFORUM_STR}</strong> {forumrow.SUBFORUMS}</div>

        </div>

        <div class="forum-stats">

          <div class="topics">
            <span class="number">{catrow.forumrow.TOPICS}</span><br/>
            <small>{L_TOPICS}</small>
          </div>

          <div class="posts">
            <span class="number">{catrow.forumrow.POSTS}</span><br/>
            <small>{L_POSTS}</small>
          </div>

        </div>

        <div class="forum-lastpost"style="float:right;">

          <!-- BEGIN ads -->
           <span class="AD_LastPA">
                                          <span class="lastpost-avatar"><img src="{catrow.forumrow.ads.IMG}" alt="{catrow.forumrow.ads.TITLE}" /></span>
                                          <span class="AD_LastInfos">
                                              <b><a href="{catrow.forumrow.ads.LINK}">{catrow.forumrow.ads.TITLE}</a></b><br />
                                              {catrow.forumrow.ads.DATE}<br />
                                              {catrow.forumrow.ads.LOCATION}
                                          </span>
           </span>
          <!-- END ads -->

          <!-- BEGIN avatar -->
          <span class="lastpost-avatar">{catrow.forumrow.avatar.LAST_POST_AVATAR}</span>
          <!-- END avatar -->

          <span>
            <!-- BEGIN switch_topic_title -->
            <span class=" M14_anchor">
            <a href="{catrow.forumrow.U_LATEST_TOPIC}" title="{catrow.forumrow.LATEST_TOPIC_TITLE}">
              {catrow.forumrow.LATEST_TOPIC_NAME}</a></span><br />
            <!-- END switch_topic_title -->
            {catrow.forumrow.USER_LAST_POST}
          </span>

        </div>

        <div class="clear"></div>
      </div>
    </div>
  <!-- END forumrow -->

 <!-- BEGIN tablefoot -->
    <div class="clear"></div>
    </div>
  </div>
 <!-- END tablefoot -->
<!-- END catrow -->
    <br />
<!-- BEGIN switch_on_index -->
<ul id="stat-links" class="linklist title">
 <li><a href="{U_TODAY_ACTIVE}">{L_TODAY_ACTIVE}</a> • </li>
 <li><a href="{U_TODAY_POSTERS}">{L_TODAY_POSTERS}</a> •&nbsp;</li>
 <li class="last"><a href="{U_OVERALL_POSTERS}">{L_OVERALL_POSTERS}</a></li>
 <!-- BEGIN switch_delete_cookies -->
 <li class="right"><a href="{switch_on_index.switch_delete_cookies.U_DELETE_COOKIES}" rel="nofollow">{switch_on_index.switch_delete_cookies.L_DELETE_COOKIES}</a></li>
 <!-- END switch_delete_cookies -->
</ul>
<!-- END switch_on_index -->






Pensez à enregistrer puis à valider en cliquant respectivement sur Enregistrer  puis  Ajout







Puis le script ou vous pourrez modifier le texte des infobulles comme bon vous semble les ami(e)s, attention toutefois a bien respecter
certaine information disponible en commentaire.


Modules/HTML JAVASCRIPT/Gestion des codes JavascriptCréer un nouveau javascript


Mettez un titre explicite.
Cochez sur l'index


Déposez ceci:
Code:

$(function(){
    /*
     * localStorage
     */
    var _lS=localStorage['_M14Cat']?JSON.parse(localStorage['_M14Cat']):[];
    //ON DONNE UNE INFOBULLE POUR OUVRIR TOUTES LES CATEGORIES
    var M14_affichAll="Afficher toutes les catégories";
    //ON DONNE UNE INFOBULLE AUX CATEGORIES MASQUEES
    var M14_numberInfobulleMasquees="Nombre de catégories masquées";
    //INFOBULLE CATEGORIE (laissez l espace a droite)
    var M14_CaTinfobulle="Masquer la catégorie ";  
    //INFOBULLE ONGLET (laissez l espace a droite)
    var M14_infobulle="Afficher la catégorie ";
    //ON INSERE UNE DIV RECEVANT LES ONGLETS
    $('.forum-category:eq(0)').before('<div id="M14_get_onglet"class="color-primary"><div class="M14_onglets color-primary"title="'+M14_numberInfobulleMasquees+'"><span>0</span></div><div id="M14_ongletsAlls"class="color-primary"title="'+M14_affichAll+'"><span>X</span></div></div>');
    // AU CLIC SUR LE TITRE DES CATEGORIES
    $('.M14_maintitle').each(function(){

        //ON CHERCHE LE TEXTE DE LA CATEGORIE
        var M14_textCat=$(this).find('h2').text();
        //ON CHERCHE LE LIEN DE LA CATEGORIE
        var M14_GetLink=$(this).closest('.forum-category').find('a.forumtitle').attr('href');
        if(_lS.indexOf(M14_GetLink)!=-1){
          $('#M14_get_onglet').fadeIn();
            $('#M14_ongletsAlls').fadeIn();
            $(this).closest('div.forum-category').attr('id',M14_GetLink);
            $('#M14_get_onglet').append('<a class="M14_onglet" id="'+M14_GetLink+'" title="'+M14_infobulle + M14_textCat+'">'+M14_textCat+'</a>');
            //AU CLIC SUR LA PETITE CROIX ON AFFICHE TOUT
            $('#M14_ongletsAlls').click(function(){
                localStorage['_M14Cat']='';
              $('#M14_get_onglet').fadeOut();
                //on cache la petite croix
                $(this).hide();
                //on supprime les onglets
                $('.M14_onglet').remove();
                //on remet le compteur a zero
                $('.M14_onglets span').text(0);
                //on supprime les ids des categories
                $('.forum-category[id^="/c"]').removeAttr('id').show();
            });
            $('.M14_onglets span').text($('#M14_get_onglet').find('.M14_onglet').length);
            $('a[id="'+M14_GetLink+'"]').click(function(){
                var _lS=localStorage['_M14Cat']?JSON.parse(localStorage['_M14Cat']):[];
                if(_lS.indexOf(this.id)!=-1)_lS.splice(_lS.indexOf(this.id),1);
                localStorage['_M14Cat']=JSON.stringify(_lS);
                $(this).remove();
                $('.M14_onglets span').text($('#M14_get_onglet').find('.M14_onglet').length);
                //ON SUPPRIME L ID DE LA CATEGORIE
                $('.forum-category[id="'+M14_GetLink+'"]').removeAttr('id',M14_GetLink).show();  

                //Si pas d onglet
                if(!$('#M14_get_onglet').find('.M14_onglet').length){
                    $('#M14_ongletsAlls').fadeOut();
$('#M14_get_onglet').fadeOut();
                }
            });
        }
        $(this).css('cursor','pointer').attr('title',M14_CaTinfobulle+M14_textCat);
        //AU CLIC SUR LE TITRE DE LA CATEGORIE
        $(this).click(function(){
            /*
             * localStorage
             */
            var _lS=localStorage['_M14Cat']?JSON.parse(localStorage['_M14Cat']):[];
            _lS.indexOf(M14_GetLink)!=-1?_lS.splice(_lS.indexOf(M14_GetLink),1):_lS.push(M14_GetLink);
            localStorage['_M14Cat']=JSON.stringify(_lS);
$('#M14_get_onglet').fadeIn();
            //ON AFFICHE LA PETITE CROIX
            $('#M14_ongletsAlls').fadeIn();
            //ON AJOUTE L ID A LA CATEGORIE( en display none dans la css)
            $(this).closest('div.forum-category').attr('id',M14_GetLink);
            //ON AJOUTE L ONGLET CORRESPONDANT A LA DIV
            $('#M14_get_onglet').append('<a class="M14_onglet" id="'+M14_GetLink+'" title="'+M14_infobulle + M14_textCat+'">'+M14_textCat+'</a>');
            //LE NOMBRE D ONGLET ACTIF
            var M14_onglets=$('#M14_get_onglet').find('.M14_onglet').length;
            //ON AFFICHE LE NOMBRE D ONGLET ACTIF
            $('.M14_onglets span').text(M14_onglets);
            //AU CLIC SUR L ONGLET      
            $('a[id="'+M14_GetLink+'"]').click(function(){
                var _lS=localStorage['_M14Cat']?JSON.parse(localStorage['_M14Cat']):[];
                if(_lS.indexOf(this.id)!=-1)_lS.splice(_lS.indexOf(this.id),1);
                localStorage['_M14Cat']=JSON.stringify(_lS);
                $(this).remove();
                $('.M14_onglets span').text($('#M14_get_onglet').find('.M14_onglet').length);
                //ON SUPPRIME L ID DE LA CATEGORIE
                $('.forum-category[id="'+M14_GetLink+'"]').removeAttr('id',M14_GetLink).show();  
                //Si pas d onglet on affiche la gestion des categorie et on cache la petite croix
                if(!$('#M14_get_onglet').find('.M14_onglet').length){
                    $('#M14_ongletsAlls').fadeOut();
                  $('#M14_get_onglet').fadeOut();
                }
  
            });
        });
var M14_GetIndex=$('img[id="i_icon_mini_index"]').closest('a').attr('href');
if(location.pathname != ''+M14_GetIndex+''){$('#M14_get_onglet').remove();$('.M14_maintitle').unbind();};

      
    });
});


Pensez a cliquer sur le bouton Valider





Pour les petites têtes de linotte MDR , un petit rappel:


Pour que cette dernière fonctionne, il faudra que les catégories soient séparées et cocher le choix sur complet:

Affichage/Page d'acceuil/ Structure et hiérarchie/Niveau de compression de l'index

Séparer les catégories sur l'index :

Cocher sur complet



Voilà,c'est tout pour le moment.
Un soucis?
Direction l'entraide clin oeil
https://www.milouze14.com/f108-entraide-tous-supports


Dernière édition par Milouze14 le Mar 10 Avr 2018 - 15:20, édité 1 fois



-Le respect de nos semblables est la règle de notre conduite.-

Fondateur des forums





clost
avatar
Membre

Messageclost

  • 16px
  • 24px
  • Zoom
merci Philippe  hinhin

Voir le sujet précédent Voir le sujet suivant Revenir en haut

Créer un compte ou se connecter pour répondre

Vous devez être membre pour répondre.

S'enregistrer

Rejoignez notre communauté ! C'est facile !


S'enregistrer

Connexion

Vous êtes déjà membre ? Aucun soucis, cliquez ici pour vous connecter.


Connexion

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum