モバイルでFeatured Tilesコンポーネントのカルーセルスライダー?

サイトのホームページとカテゴリページの上部にカルーセルスライダーを設置したいと考えています。設定パネルから注目のトピックや画像を選択・指定できるようにしたいです。

以前は、デスクトップとモバイルデバイスの両方で以下の効果を求めていました:point_down:

これはヒントになりますが、作業はまだ進行中です

そこで、@Moin のアドバイスを受けて Featured Tiles コンポーネントを試しました。しかし、カルーセル効果がなく、モバイルフレンドリーではありませんでした。これを実現するためにいくつか作業を行いました:point_down:

デスクトップ

モバイル

しかし、モバイル側には2つの問題があります。

  1. トピックページからホームページに移動すると、カルーセル効果が失敗します。ホームボタンを再度クリックするまで、javascriptがロードされていないようです。

  2. Uncaught TypeError が発生します。

使用しているJavascriptは次のとおりです:point_down:

<script type="text/discourse-plugin" version="0.8.13">
window.onload = function() {

let slideshowInterval;

function initSlideshow() {
  const container = document.querySelector(".featured-tiles-container");
  const tiles = document.querySelectorAll(".featured-tile");
  const slideWidth = tiles[0].offsetWidth;
  let currentIndex = 0;
  let canSlide = true;

  function slideLeft() {
    if (canSlide) {
      canSlide = false;
      currentIndex = (currentIndex + 1) % tiles.length;
      const offset = -currentIndex * slideWidth;
      container.style.transition = "transform 0.5s ease-in-out";
      container.style.transform = `translateX(${offset}px)`;

      setTimeout(() => {
        canSlide = true;
        container.style.transition = "none";
      }, 500);
    }
  }

  function startSlideshow() {
    slideLeft();
    slideshowInterval = setInterval(slideLeft, 3000);
  }

  startSlideshow();
}

function destroySlideshow() {
  clearInterval(slideshowInterval);
}

api.onPageChange((url) => {
  destroySlideshow();
  if (url === "/" || url.indexOf("/c/") === 0) {
    initSlideshow();
  }
});

}
</script>

@Arkshine @Lilly 何か解決策やアイデアはありますか?

「いいね!」 1

Hi @Dennis_P_Z :wave:

このコンポーネントでご希望のことを実現できると思います。

「いいね!」 1

ありがとうございます。しかし、それは異なります。

リンクには「作業中」と書かれています。

「いいね!」 2

これらの中から、代替となるコンポーネントがあるかもしれません。トピックを一番上に配置することはできますが、カルーセルはありません。

「いいね!」 1

@Moinさん、アドバイスありがとうございます。カルーセルが実現可能かどうか試してみますね😉

試しに好奇心で試してみました。コンポーネントは正常に動作します。
少なくとも2つの画像が必要で、なぜか /categories ルートに制限されています。:slight_smile:

chrome_LYxltGVnmc
.

「いいね!」 2

いいね! :ok_hand: テストしていません。OPから推測しただけで、作業中であり、gitリポジトリにメタトピック情報がないため、機能していないと判断しました。:woman_shrugging:t2:

あと、クールなコンポーネントですね。:slight_smile:

「いいね!」 1

@Moin Featured Filesで試しましたが、カスタムCSSとJavaScriptを使用して最終的にカルーセルを実現しました。ただし、モバイルフレンドリーにするためには追加のCSSが必要です:joy:

mmexport1697920795005

「いいね!」 3

:+1:
最後に Theme component を共有することを忘れないでください

「いいね!」 3

Hi @Arkshine
ホームページとカテゴリページでこの機能が必要で、さらにトピック内で画像を呼び出せると良いでしょう。著者に時間をかけます :yum:

元のトピックを更新しましたので、確認していただき、何かアイデアがあれば教えてください。
よろしくお願いします!
@Lilly @Moin

「いいね!」 1

その切り抜きはひどいですね :frowning: 子犬の目はどこに?! :cry:

理想的には、アスペクト比を維持すべきです。

高さを維持しつつ、画像を水平方向に中央揃えすることをお勧めします。

「いいね!」 1

True, it’s always an issue of choice in small screens, distorted images are not okay :rofl:

「いいね!」 1

もしこのコンポーネントを試したいのであれば、show_on という設定を追加するためにフォークしました。これにより、どこに表示するかを選択できます。

URL: https://github.com/Arkshine/discourse-big-carousel-component
ブランチ名: feature/new_settings

元のコンポーネントの状況がわかりません。フォークしても大丈夫か心配です :pray: そして、彼らに変更を提案すべきかどうかもわかりません)。

「いいね!」 4

ありがとうございます。正直なところ、それはコンポーネントとそのユーザーにとって非常に役立つでしょう。

「いいね!」 1

こんにちは!素晴らしい出来栄えです :+1:
昨日、このテーマコンポーネントをインストールしましたが、すべて正常に動作しています。ただし、以下の点を除きます。

  1. カルーセルをスクロールすると、ある時点で画像が2つに分割されますが、これは常に発生するわけではありません。例を挙げます。

  2. カルーセルのボタンをクリックして別のページに移動し、ホームページに戻ると、バナーのコンテンツが縮小します。これは恒久的なエラーではなく、いつでも発生する可能性があります。エラーの例を挙げます。

参考情報です。デスクトップではChromeブラウザを使用し、AndroidスマートフォンではHuaweiブラウザを使用しました。

もちろん、このコンポーネントはまだ開発中であることは理解していますが、それでも情報共有をすることにしました。

デフォルトでは、画像は利用可能なスペースに基づいて繰り返されます。この動作は、一部のCSSで変更できます。画像の制御、例えば位置やサイズなどを設定できるようにします。

現在、background プロパティを調整できます。(!important が必要です)

.custom-big-carousel-slide {
    background-repeat: no-repeat !important;
}
  1. 再現できません。:thinking: ただし、コンソールで一度エラーを確認しました(再度確認できません)。関連があるかもしれません。確認します!
「いいね!」 2

こんにちは!:raising_hand_man:
アドバイスありがとうございます:raised_hands:、CSSバージョンを試してみます。うまくいけばいいのですが:slightly_smiling_face:

こんにちは、またお会いできて嬉しいです :wave:
CSSを試してみて、カルーセル内の画像の背景を制御できるのが気に入りました :ok_hand: 。CSSで元の問題も解決できることを願っていました。通常の状態でカルーセル内の画像は問題なく切り替わりますが、latestnew、またはactiveボタンのいずれかをクリックすると、カルーセル内の画像とコンテンツが切り替わる際に、その整合性が損なわれます。つまり、始まりが終わりに来て、終わりが最初に来てしまいます。これはシステムのバグのようです :pensive:

フィードバックありがとうございます。後で試してみます。:+1:

「いいね!」 1