Ajout d'un en-tête et d'un pied de page fixes

Salut tout le monde,

Je cherche à héberger des publicités. J’utilise le plugin officiel de publicité qui est génial car il permet d’ajouter des éléments à divers endroits du site.

Cependant, en discutant avec l’agence publicitaire, il semble que pour obtenir la meilleure visibilité des publicités sur mobile, ce qui représente la majorité de mon trafic, il faille utiliser des publicités « collantes » (sticky ads) dans l’en-tête ou le pied de page.

Le problème est bien sûr qu’une publicité collante en bas de page recouvrira des boutons importants et impactera l’expérience utilisateur, ce qui est à proscrire.

Existe-t-il un moyen de rembourrer le bas du site à la hauteur d’une bannière, afin que la bannière collante n’impacte pas les éléments importants de l’expérience utilisateur ? Je ne veux pas que les utilisateurs aient à fermer la bannière publicitaire avant de pouvoir répondre ou utiliser le compteur de messages pour faire défiler un fil de discussion.

De plus, avec l’en-tête collant sur Discourse, sera-t-il impacté par une bannière collante ou la bannière pourrait-elle se placer au-dessus de la barre de navigation de Discourse ?

Ou est-ce quelque chose que l’agence publicitaire devrait être en mesure de résoudre avec sa technologie publicitaire ?

Merci,

Shane

Je pense que je pourrais ajouter un peu de marge intérieure en bas du corps pour que la bannière publicitaire du pied de page fixe ne chevauche pas les boutons de réponse, puis sur la boîte de contrôle de réponse qui apparaît, je pourrais peut-être définir un z-index afin qu’elle apparaisse par-dessus la bannière publicitaire ?

Je me demande juste si quelqu’un a réussi à implémenter des bannières publicitaires fixes en haut et/ou en bas sur mobile sans impacter l’expérience utilisateur.

Bonjour :wave:

C’est possible mais cela dépend de beaucoup de choses. Pouvez-vous partager l’URL de votre site ?

J’utiliserais un “plugin outlet” et y placerais la bannière. Définissez la hauteur du “plugin-outlet” égale à la hauteur de la bannière, cela ajoutera les espaces nécessaires.

Quelque chose comme ça. Remarque : ce n’est qu’un exemple rapide, j’espère que cela vous donnera quelques idées pour y parvenir. Nous pourrons faire plus si vous partagez plus d’informations et l’URL de votre site pour vérifier cela, etc. :slightly_smiling_face:

Mobile / En-tête

<script type="text/x-handlebars" data-template-name="/connectors/above-site-header/top-banner">
  <div class="test-top-banner"></div>
</script>

<script type="text/x-handlebars" data-template-name="/connectors/below-footer/bottom-banner">
  <div class="test-bottom-banner"></div>
</script>

Mobile / CSS

body {
  --banner-height: 40px;
  
  .d-header-wrap {
    top: var(--banner-height);
  }

  .above-site-header-outlet.top-banner {
    @include sticky;
    top: 0;
    width: 100%;
    height: var(--banner-height);
    z-index: z("header");
    .test-top-banner {
      width: 100%;
      height: var(--banner-height);
      background: red;
    }
  }

  .below-footer-outlet.bottom-banner {
    @include sticky;
    bottom: env(safe-area-inset-bottom);
    width: 100%;
    height: var(--banner-height);
    z-index: z("header");
    .test-bottom-banner {
      width: 100%;
      height: var(--banner-height);
      background: red;
    }
  }
  
  #topic-progress-wrapper:not(.docked) {
    margin-bottom: var(--banner-height);
  }  
}

3 « J'aime »

Salut @Don - merci de ta réponse, je pensais que quelque chose comme ça serait nécessaire.

1 « J'aime »

Salut @Don Comment fonctionnerait cette implémentation lorsque vous essayez de répondre sur mobile ?

Cela fonctionne, mais la bannière supérieure réduit la taille du compositeur.

Il serait probablement préférable de masquer la bannière lorsque le compositeur est ouvert.

Il y a une classe .composer-open que vous pouvez cibler ici pour masquer la bannière lorsque le compositeur est ouvert.

Mobile / CSS
body {
--banner-height: 40px;
  // Header
  .d-header-wrap {
    top: var(--banner-height);
    transition: top 0.25s ease-in;
    .composer-open & {
      top: 0;
    }
  }
  // Top banner
  .above-site-header-outlet.top-banner {
    @include sticky;
    top: 0;
    width: 100%;
    height: var(--banner-height);
    transition: height 0.25s ease-in;
    z-index: z("header");
    .test-top-banner {
      width: 100%;
      height: var(--banner-height);
      background: red;
      transition: height 0.25s ease-in;
      .composer-open & {
        height: 0;
      }
    }
    .composer-open & {
      height: 0;
    }
  }
  // Bottom banner
  .below-footer-outlet.bottom-banner {
    @include sticky;
    bottom: env(safe-area-inset-bottom);
    width: 100%;
    height: var(--banner-height);
    z-index: z("header");
    .test-bottom-banner {
      width: 100%;
      height: var(--banner-height);
      background: red;
    }
  }
  // Move topic progress wrapper the top of the bottom banner
  #topic-progress-wrapper:not(.docked) {
    margin-bottom: var(--banner-height);
    .composer-open & {
      margin-bottom: 0;
    }
  }
  // Add banner height to composer max height calculation
  &:not(.ios-safari-composer-hacks) #reply-control.open {
    max-height: calc(100vh - var(--header-offset) + var(--banner-height));
  }
}

Edit : J’ai apporté quelques corrections au code.

3 « J'aime »

Ah, merci mille fois pour cette aide - c’est du génie !

2 « J'aime »

Salut @Don - j’ai un test qui fonctionne très bien sur mobile, je l’ajoute juste sur ordinateur et ça semble fonctionner mais il y a un léger problème quand on répond, contrairement au mobile où la zone de collage disparaît, sur ordinateur elle reste en place, y a-t-il un crochet CSS pour l’ouverture du compositeur sur ordinateur ?

Salut @Don - une idée sur la façon de fermer le pied de page sur ordinateur ? La version mobile fonctionne très bien, mais je n’arrive pas à trouver comment supprimer l’élément fixe lorsque vous ouvrez la zone de réponse sur ordinateur en cliquant sur répondre. C’est du CSS au-delà de mes compétences.

Merci

Bonjour @Shaneod :wave:

Désolé pour le retard. Le code que j’ai écrit ci-dessus est placé dans la section mobile, il ne fonctionne donc que sur mobile. J’ai modifié le code pour qu’il s’adapte également au bureau. Vous devez placer ceci dans la section commune et supprimer celui existant de la section mobile.

Voici la mise à jour qui fonctionne sur ordinateur et mobile.

Commun / En-tête
<script type="text/x-handlebars" data-template-name="/connectors/above-site-header/top-banner">
  <div class="test-top-banner"></div>
</script>

<script type="text/x-handlebars" data-template-name="/connectors/below-footer/bottom-banner">
  <div class="test-bottom-banner"></div>
</script>

Commun / CSS
body {
  --banner-height: 40px;
}

.d-header-wrap {
  top: var(--banner-height);
  transition: top 0.25s ease-in;
  .composer-open & {
    top: 0;
  }
}
  
.sidebar-wrapper {
  html:not(.composer-open) & {
    height: calc(var(--composer-vh, var(--1dvh)) * 100 - var(--header-offset, 0px) - var(--banner-height));
  }
}

.above-site-header-outlet.top-banner {
  @include sticky;
  top: 0;
  width: 100%;
  height: var(--banner-height);
  transition: height 0.25s ease-in;
  z-index: z("header");
  .test-top-banner {
    width: 100%;
    height: var(--banner-height);
    background: red;
  }
  .composer-open & {
    height: 0;
  }
}

.below-footer-outlet.bottom-banner {
  @include sticky;
  bottom: env(safe-area-inset-bottom);
  width: 100%;
  html:not(.composer-open) & {
    height: var(--banner-height);
  }
  z-index: z("composer", "content") - 1;
  .test-bottom-banner {
    width: 100%;
    height: var(--banner-height);
    background: red;
  }
}
  
#topic-progress-wrapper:not(.docked) {
  margin-bottom: var(--banner-height);
  .composer-open & {
    margin-bottom: 0;
  }
}
  
body:not(.ios-safari-composer-hacks) #reply-control.open {
  max-height: calc(100vh - var(--header-offset) + var(--banner-height));  
}

5 « J'aime »

Les Google Ads peuvent-elles être diffusées dans ces zones ? @Don

Merci @Don, j’apprécie beaucoup, mon pote ! :+1:

1 « J'aime »

Ouais, j’ai placé une annonce fixe dans la zone du pied de page. La dissimulation de la zone fixe par Don lorsque vous répondez signifie que l’annonce n’interfère pas avec l’utilisabilité du site !

2 « J'aime »

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