Wie fügt man benutzerdefiniertes HTML nach „post_1“ ein (Teil 2)

Laut diesem Beitrag How to add customer HTML after "post_1"
und diesem Beispiel:

<script type="text/discourse-plugin" version="0.8">
api.decorateWidget("post:after", helper => {
  const firstPost = helper.attrs.firstPost;
  const h = helper.h;
  if (firstPost) {
    return h("div#custom-ad", [
      h(
        "a.custom-ad-link",
        { href: "example.com" },
        h("img", { src: "https://picsum.photos/id/74/750/90" })
      )
    ]);
  }
});
</script>

können wir das gewünschte Bild festlegen. Wie stellen wir jedoch korrekt sicher, dass das Bild zentriert ist und auf mobilen Geräten skaliert wird?

Derzeit wird es so angezeigt:

1 „Gefällt mir“

Hallo,

Du musst dafür etwas CSS verwenden. :slightly_smiling_face:

Füge im Common (CSS)-Ansicht für Mobile und Desktop eine Breite von 100 % für das Bild hinzu.

#custom-ad {
  .custom-ad-link {
    img {
      width: 100%;
    }
  }
}

Füge in der Desktop-(CSS)-Ansicht eine maximale Breite für die ID #custom-ad hinzu, um die Bannerbreite gleich der Topic-Avatar- plus Topic-Body-Breite zu setzen. Das entspricht der 100 %-Breite des Bildes, die wir oben im Common-Bereich hinzugefügt haben.

#custom-ad {
  max-width: calc(45px + 690px + (11px * 2));
}

45px = Breite des Topic-Avatars
690px + (11px * 2) = Breite des Topic-Body sowie die linke und rechte 11px-Padding, die auf der Klasse .cooked verwendet werden.

Es wird so aussehen: :arrow_down:

Desktop-Ansicht (vollständig)


Desktop-Ansicht (responsiv)


Mobile-Ansicht

2 „Gefällt mir“

Alles zusammen wird dann ungefähr so aussehen?

<script type="text/discourse-plugin" version="0.8">
api.decorateWidget("post:after", helper => {
  const firstPost = helper.attrs.firstPost;
  const h = helper.h;
  if (firstPost) {
    return h("div#custom-ad", [
      h(
        "a.custom-ad-link",
        { href: "example.com" },
        h("img", { src: "https://picsum.photos/id/74/750/90" })
      )
    ]);
  }
});
</script>
#custom-ad {
  .custom-ad-link {
    img {
      width: 100%;
    }
  }
}
#custom-ad {
  max-width: calc(45px + 690px + (11px * 2));
}

Nein, du musst diese in die CSS-Bereiche einfügen.

Das Ganze sieht also so aus.

Common / Header :arrow_down:

<script type="text/discourse-plugin" version="0.8">
api.decorateWidget("post:after", helper => {
  const firstPost = helper.attrs.firstPost;
  const h = helper.h;
  if (firstPost) {
    return h("div#custom-ad", [
      h(
        "a.custom-ad-link",
        { href: "example.com" },
        h("img", { src: "https://picsum.photos/id/74/750/90" })
      )
    ]);
  }
});
</script>


Common / CSS :arrow_down:

#custom-ad {
  .custom-ad-link {
    img {
      width: 100%;
    }
  }
}


Desktop / CSS :arrow_down:

#custom-ad {
  max-width: calc(45px + 690px + (11px * 2));
}

2 „Gefällt mir“

Vielen, vielen Dank! :+1:

2 „Gefällt mir“

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