Masquer/insérer du contenu sur la page d'accueil

J’ai créé une page d’accueil personnalisée en :
a) ajoutant la classe .custom-homepage à la page de destination. Je l’utilise pour cibler simplement le contenu que je veux masquer/ajuster sur cette page spécifique via mon CSS personnalisé.
b) ajoutant de nouveaux composants directement dans le fichier head de mon thème par défaut, dans le HTML personnalisé.

Voici à quoi cela ressemble :

<script type="text/discourse-plugin" version="0.8">
  api.registerConnectorClass("above-main-container", "custom-homepage", {
    setupComponent(args, component) {
     var topMenuRoutes =
        component.siteSettings.top_menu.split('|')
        .map(function(route) {return '/' + route});
      
     // La première page listée dans le paramètre 'top_menu' est votre page d'accueil
     var homeRoute = topMenuRoutes[0];
  
     // Ceci appelle notre code à chaque changement de page
     api.onPageChange((url) => {
        // Vérifier si nous sommes sur la page d'accueil 
        if (url === "/" || url === homeRoute ){ 
          // S'il s'agit de la page d'accueil, ajouter la classe 'custom-homepage' à la balise HTML
          // et définir 'displayCustomHomepage' sur true
          
          document.querySelector("html").classList.add("custom-homepage"); 
          component.set("displayCustomHomepage", true); 
        } else {  
          // Si nous ne sommes pas sur la page d'accueil, supprimer la classe
          // et définir `displayCustomHomepage` sur false
          document.querySelector("html").classList.remove("custom-homepage"); 
          component.set("displayCustomHomepage", false); 
        }
      });
    }
    
  });
</script>

<script type="text/x-handlebars" data-template-name="/connectors/above-main-container/custom-homepage">
  {{#if displayCustomHomepage}}
    <div class="custom-homepage-wrapper mask-polygon">
       <div class="custom-welcome-banner">
        <h1 class="welcome-header-text">Välkommen till Sveriges idéburna byggrörelse</h1>
        <p>Här kan du se färdiga och planerade projekt, hitta kunskap, få råd - och få kontakt med andra som bygger och bor ihop över hela landet.</p>
       </div>
    </div>
    {{whos-online}}
    {{search-menu}}
<div class="two-column-layout">
  <div>
   (Mon propre code pour l'image de la carte est ici, je vous épargne les détails)
  </div>
       	
  <WANTED DIV>
  (C'est ici que je veux mettre mon flux, peut-être quelque chose comme {{categories-topic- list topics=latest filter=“latest” limit=“10” … }})
  </WANTED DIV>
</div>
  {{/if}}
</script>

Jusqu’ici tout va bien. La page ressemble à ceci :

Le problème est que je n’ai aucun contrôle sur le flux actuel. C’est simplement le flux par défaut dont j’ai grossièrement ajusté la largeur et la position dans mon CSS personnalisé avec .custom-homepage + class pour faire de la place à la carte de gauche. Il est, par exemple, actuellement infini. J’ai besoin qu’il n’affiche que, disons, les 10 derniers articles.

Mes questions sont :

  • Quelle classe dois-je masquer pour masquer le flux actuel ?
  • Quelle est la syntaxe correcte pour ajouter mes derniers articles dans mon propre code à la place ? Veuillez voir la section ‘WANTED DIV’ dans le code ci-dessus.

Site en direct : https://bygg.boihop.co/

Merci beaucoup pour toute aide.

Je vous recommande plutôt d’utiliser le modificateur custom-homepage pour ajouter une route de page d’accueil dédiée à votre site : Utilisation de la nouvelle fonctionnalité de page d’accueil personnalisée.

Ensuite, vous pouvez construire votre page d’accueil de manière modulaire et épurée. Vous pouvez ajouter des composants dans le code de votre thème. Ou vous pourriez essayer un composant comme Homepage Blocks et ajouter des composants via son éditeur.

Voici deux exemples récents de sites que j’ai construits avec la route de page d’accueil personnalisée et les blocs. Vous pouvez inspecter le code pour voir la structure résultante. La page d’accueil de Zolidar donne également un exemple de la façon dont vous pouvez utiliser les requêtes de conteneur et une mise en page en grille sur la page d’accueil, afin d’avoir un meilleur contrôle sur la mise en page de votre page d’accueil.

3 « J'aime »

Merci pour cette astuce ! Ça a l’air super. En attendant que j’aie l’occasion de la tester, connaissez-vous un moyen de limiter dans les paramètres le nombre de publications du fil d’actualité ‘dernier’ actuel ? Je n’arrive pas à trouver comment faire.

Les listes de sujets sont généralement des listes infinies qui s’étendent lorsque vous faites défiler jusqu’en bas. Je ne suis pas sûr quelle serait la solution la plus simple… Je cacherais probablement la liste par défaut sur la page d’accueil et utiliserais un composant comme Listes mises en avant. Vous avez alors le contrôle sur la longueur de la liste, etc., sans interférer avec le comportement de la liste par défaut.

3 « J'aime »

Merci !

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.