Astuces Forumactif
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Membres connectés récemment
Voir tous les membres

[PHPBB3] Révision script sur liste des sujets

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

avatar
photoclic
https://photoclic.forum-pro.fr/

Messagephotoclic Mer 27 Oct 2021 - 22:19

  • Version du forum :
    PHPBB3
  • Templates modifiés :
    oui
  • Navigateur :
    Firefox
Bonjour à tous les milouziens,

Philippe m'a écrit un script pour la liste des sujets permettant à partir d'un bouton "Voir les Best-of" de remonter certains sujets  de la page en hauts de page (ceux tagués en best-of).

La liste des sujets avec le bouton "Voir les Best-of":
Spoiler:

Au clic sur le bouton:
Spoiler:

Le script:
Code:
//Bouton liste sujets en Best Of  sur sous forum    
$(document).ready(function(){
$('dd.dterm[style*="https://i.servimg.com/u/f58/18/97/96/21/index13.png"]').closest('li').addClass('M14_Verr');
if($('.M14_Verr').length)
{
$('.forumbg.announcement ul.topiclist.topics.bg_none li:last').after('<li class="header bestof"style="display:none;"><dl class="icon" style="">
<dt style="margin-top: 10px;">Les Photos gagnantes en Best-Of de la page</dt><dd class="posts" style="margin-left: 18px;margin-top: 8px;">Réponses BestOf</dd>
<dd class="lastpost" style="margin-top: 8px;"><span>Derniers Messages des BestOf</span></dd></dl></li>');
$('div.topic-actions p.nomargin.path').after('<a id="M14_bloc_Verrou"title="Afficher les Photos gagnantes de cette page">Voir les Best-Of</a><a class="M14_bloc_Verrou"title="Masquer les Photos gagnantes de cette page"style="display:none;">Masquer les Best-Of</a>');
$('.M14_Verr').each(function(){
$(this).clone().insertAfter('.forumbg.announcement ul.topiclist.topics.bg_none li.bestof');
});
$('#M14_bloc_Verrou').click(function(){
$(this).hide().next().show();
$('.M14_forumbg .M14_Verr').hide();
$('li.bestof ,.forumbg.announcement .M14_Verr').show();
});
$('.M14_bloc_Verrou').click(function(){
$(this).hide().prev().show();  
$('li.bestof ,.forumbg.announcement .M14_Verr').hide();
$('.M14_forumbg .M14_Verr').show();
});      
};
});

Ce script fonctionne parfaitement, mais pourrait-il être complété pour:
. Quand on clique sur ce bouton et que les sujet Best-of sont remontés, masquer les annonces et notes.
(remettre les annonces et notes quand on reclique sur le bouton quand les sujets reviennent à leur place)

. Récupérer aussi pour chacun des sujets remontés, la photo miniature qui est présentée sous le titre.

merci pour votre aide.



Dernière édition par photoclic le Jeu 28 Oct 2021 - 10:52, édité 1 fois
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Jeu 28 Oct 2021 - 6:40

Coucou Serge,

Hum, je vais revoir le script dans ce cas car on importe directement dans le bloc
des annonces et on le cache via la css car j'ai était fouiller sur ton fofo :

Code:
.forumbg.announcement .M14_Verr {
    display: none;
}

Et comme tu souhaites masquer les annonces, tu n'aurais plus rien dans ce cas impeccable .

L'astuce à donc était revue.
En faite, on va ajouter un autre bloc ou tous les bests viendront se positionner dans celui-ci et non plus après la dernière
balise li des annonces.
En gros on aura:
Le bloc des annonces notes etc
Le bloc ou va recevoir les bests (masqué dans la css) :

Voir l'aperçu ici avec effet slide :
https://testphpbb3.1fr1.net/f8-essais-sous-fofo-test-dd

Code:
#M14_recept_bestof{display:none;}
Le bloc des sujets

Remplaces donc:

Code:
.forumbg.announcement .M14_Verr {
    display: none;
}

Par:

Code:
#M14_recept_bestof{display:none;}


Dans le premier script dans la gestion du même nom tu as déjà ceci qui ajoute une class aux annonces notes etc etc:
Code:
$('span.M14_type_post strong').closest('div.forumbg').addClass('M14_Annonc');

Il faut le retirer car je vais l'ajouter dans le script.

Je viens de constater un soucis avec les sondages qui sont considérés comme des annonces note.
Si tu as des sondages, le script ne fonctionnera pas ..

J'ai donc corrigé:
Code:
$('span.M14_type_post strong').closest('div.forumbg').addClass('M14_Annonc');
Par
Code:

$('span.M14_type_post strong').not(":contains(Sondage)").closest('div.forumbg').addClass('M14_Annonc');

Afin de palier à ce problème ok .



Tu as le choix entre un masquage /affichage direct ou un autre avec effet slide.

Affichage direct:
Code:

//Bouton liste sujets en Best Of  sur sous forum    
$(document).ready(function(){
$('span.M14_type_post strong').not(":contains(Sondage)").closest('div.forumbg').addClass('M14_Annonc');
    $('dd.dterm[style*="https://i.servimg.com/u/f58/18/97/96/21/index13.png"]').closest('li').addClass('M14_Verr');
    if($('.M14_Verr').length)
    {
$('.forumbg:not(.M14_Annonc)').before('<div id="M14_recept_bestof"class="forumbg"><div class="inner"><span class="corners-top"><span></span></span><ul class="topiclist topics"><li class="header bestof"><dl class="icon" style=""><dt style="margin-top: 10px;">Les Photos gagnantes en Best-Of de la page</dt><dd class="posts" style="margin-left: 18px;margin-top: 8px;">Réponses BestOf</dd><dd class="lastpost" style="margin-top: 8px;"><span>Derniers Messages des BestOf</span></dd></dl></li></ul><ul class="topiclist topics bg_none M14_recept_bestof"></ul><span class="corners-bottom"><span></span></span></div></div>');
    $('div.topic-actions p.nomargin.path').after('<a id="M14_bloc_Verrou"title="Afficher les Photos gagnantes de cette page">Voir les Best-Of</a><a class="M14_bloc_Verrou"title="Masquer les Photos gagnantes de cette page"style="display:none;">Masquer les Best-Of</a>');
    $('.M14_Verr').each(function(){
    $(this).clone().appendTo('.M14_recept_bestof');
    });
    $('#M14_bloc_Verrou').click(function(){
      $(this).hide().next().show();
    $('#M14_recept_bestof').show();
    $('#M14_recept_bestof').prev().hide();
    $('#M14_recept_bestof').next().hide();
    
    });
    $('.M14_bloc_Verrou').click(function(){
      $(this).hide().prev().show();  
     $('#M14_recept_bestof').hide();
    $('#M14_recept_bestof').prev().show();
    $('#M14_recept_bestof').next().show();
    });      
    };
    });

Effet slide:

Code:
//Bouton liste sujets en Best Of  sur sous forum    
$(document).ready(function(){
$('span.M14_type_post strong').not(":contains(Sondage)").closest('div.forumbg').addClass('M14_Annonc');
    $('dd.dterm[style*="https://i.servimg.com/u/f58/18/97/96/21/index13.png"]').closest('li').addClass('M14_Verr');
    if($('.M14_Verr').length)
    {
$('.forumbg:not(.M14_Annonc)').before('<div id="M14_recept_bestof"class="forumbg"><div class="inner"><span class="corners-top"><span></span></span><ul class="topiclist topics"><li class="header bestof"><dl class="icon" style=""><dt style="margin-top: 10px;">Les Photos gagnantes en Best-Of de la page</dt><dd class="posts" style="margin-left: 18px;margin-top: 8px;">Réponses BestOf</dd><dd class="lastpost" style="margin-top: 8px;"><span>Derniers Messages des BestOf</span></dd></dl></li></ul><ul class="topiclist topics bg_none M14_recept_bestof"></ul><span class="corners-bottom"><span></span></span></div></div>');
    $('div.topic-actions p.nomargin.path').after('<a id="M14_bloc_Verrou"title="Afficher les Photos gagnantes de cette page">Voir les Best-Of</a><a class="M14_bloc_Verrou"title="Masquer les Photos gagnantes de cette page"style="display:none;">Masquer les Best-Of</a>');
    $('.M14_Verr').each(function(){
    $(this).clone().appendTo('.M14_recept_bestof');
    });
    $('#M14_bloc_Verrou').click(function(){
      $(this).hide().next().show();
    $('#M14_recept_bestof').fadeIn();
    $('#M14_recept_bestof').prev().slideUp();
    $('#M14_recept_bestof').next().slideUp();
    
    });
    $('.M14_bloc_Verrou').click(function(){
      $(this).hide().prev().show();  
     $('#M14_recept_bestof').fadeOut();
    $('#M14_recept_bestof').prev().slideDown();
    $('#M14_recept_bestof').next().slideDown();
    });      
    };
    });

Récupérer aussi pour chacun des sujets remontés, la photo miniature qui est présentée sous le titre.

Hum, ce sera très compliqué de les récupérer vu que l'on agit avec un autre script.

Dans le script on peut tester ceci:

Remplaces:
Code:
 
$('.M14_Verr').each(function(){
    $(this).clone().appendTo('.M14_recept_bestof');
    });

Par:
Code:
$('.M14_Verr').each(function(){
      var a=$(this).html();
      $('.M14_recept_bestof').append(a);
    
    });

Tu peux aussi ajouter ceci pour afficher le texte "Réponses BestOf" sur une seule ligne:
Code:
#M14_recept_bestof .posts{width:12%!important;}
hinhin

photoclic aime ce message

avatar
photoclic
https://photoclic.forum-pro.fr/

Messagephotoclic Jeu 28 Oct 2021 - 10:51

Bonjour Philippe,

Encore une pépite que tu m'as concocté là.
Tout fonctionne parfaitement super

J'ai adopté le script avec effet slide.

Pour la récupération des miniatures, il n'a pas été nécessaire de modifier cette partie:
Code:
 
$('.M14_Verr').each(function(){
    $(this).clone().appendTo('.M14_recept_bestof');
    });
Les miniatures sont bien là.


Un énorme merci l'ami pour tout ça tape la

Message envoyé via la réponse rapide par: @photoclic

Milouze14 aime ce message

Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Jeu 28 Oct 2021 - 10:55

De rien Serge,
j'avoue que je me régale avec ce genre de codage ok .


Hello


Sujet résolu et déplacé dans le forum adéquate

A bientôt pour une prochaine demande clin oeil



Message envoyé via la réponse rapide par: @Milouze14

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