Topic Template Placeholder Text テーマコンポーネント

トピックテンプレートのプレースホルダー表示用テーマコンポーネント

このテーマコンポーネントを使用すると、トピックテンプレートを編集可能なテンプレートテキストとしてではなく、プレースホルダー(ウォーターマーク)として表示できます。

これにより、各トピックのカスタム指示をプレースホルダーとして提供することが可能になります。

例:

これは通常のプレースホルダー(ウォーターマーク)テキストです。

NB: サイト全体でこのテキストを変更することも可能です。

管理画面 > カスタマイズ > テキスト に移動

画面上に表示されているテキストを検索してください。
「BBCode」で検索すると、目的のものが見つかるはずです:

次に、表示させたいプレースホルダーテキストに合わせて js.composer.reply_placeholder の値を変更してください

また、カテゴリごとにトピックテンプレートを設定することもできます。

カテゴリ編集ダイアログで「トピックテンプレート」を選択し、カテゴリ用のカスタムテンプレートを追加できます。

これは便利ですが、ユーザーが投稿を開始する前にテンプレートテキストを削除する必要があります。

このテーマコンポーネントを使用すると、トピックテンプレートテキストを編集可能なテキストではなく、プレースホルダー(ウォーターマーク)として表示できます。ボックスをクリックするだけで、すぐにタイプを開始できます。

すべてのトピックテンプレートをプレースホルダーとして表示するように設定することも、トピックテンプレートに [placeholder] 指示を追加することでケースバイケースで設定することも可能です。

テーマコンポーネントのインストール

:hammer_and_wrench: Git リポジトリ: https://github.com/naidihr/discourse-topic-template-placeholders

:thinking: テーマまたはテーマコンポーネントのインストール方法

クレジット

JQuery 要素を Ember フレームワークと Discourse コアを使用するようにリファクタリングしてくれた @merefield に感謝します。

なお、更新されたバージョンは Discourse 2.4.1 以降でのみ動作が確認されています。以前のバージョンの Discourse を使用している場合は、バージョン 2.3.10 でテスト済みのオリジナルバージョンをお試しください。
オリジナルバージョンのリポジトリ: https://github.com/naidihr/discourse-topic-template-placeholders_original

「いいね!」 35

PS 開発メモ。これをテーマコンポーネントとして機能させるために、JQuery のハックを行う必要がありました。モデル経由でプレースホルダーを更新できる場合は、お知らせいただけますと幸いです。

「いいね!」 8

以下のようなことを試してみることができます。

<script type="text/discourse-plugin" version="0.8">
  api.modifyClass("model:composer", {
    applyTopicTemplate() {
      this._super(...arguments);

      Ember.run.schedule("afterRender", () => {
        // ここで処理を行います
      });
    }
  });
</script>

これにより、Discourse がカテゴリのトピックテンプレートを適用する際に、独自のロジックを追加できるようになります。

ただし、このような書き方は少し時代遅れです。Discourse のテーマに時間を多く費やす予定がある場合は、こちらの記事も読むことをお勧めします。これにより、作業が格段に楽になります。

「いいね!」 9

素晴らしいテーマコンポーネントのアイデアですね!

以下の内容で PR を提出しました:

  • jQuery の必要性を排除
  • タイミングを気にする必要を排除(Ember フレームワークと Discourse コアを活用し、それに逆らわない)
  • 結果を達成するために Composer モデルを変更(ご指摘の通りです)

マージされなくても落胆しませんが、別のアプローチの例として参考になれば幸いです :slight_smile:

バグがないとはお約束できませんが、何かあれば喜んでフォローアップします!:cowboy_hat_face:

「いいね!」 9

ありがとうございます、ロバートさん。その PR をマージしました。大変感謝しています :+1:

「いいね!」 2

これはまさに私が探していたものです!あなたは神様です!:bowing_man: :shallow_pan_of_food: :bowing_woman:
この謙虚な絵文字の捧げ物をお受け取りください。:canned_food:

「いいね!」 1

ご参考までに、この機能はまずカテゴリに移動して新しいトピックを作成した場合にのみ機能します。最新のページから新しいトピックを作成し、その後ドロップダウンからカテゴリを選択すると、テキストが表示されません。

「いいね!」 2

それは想定通りです。トピックテンプレートの機能は通常、そのように動作します。後者のケースでは、トピックテンプレートは考慮されません。

でも、個人的な意見ですが、この TC がなくても、バニラの Discourse 自体で後者のケースをサポートするように改善できるはずです。ユーザーが後者の方法を選んだ場合にテンプレートが表示されないのは、私自身も面倒だと感じています。

この TC は、コア機能に便乗しているだけです…

もしかしたら、私たちが話していることが違うのかもしれませんが、私の場合はこのように機能します…

「いいね!」 1

これは他の何らかの原因による可能性があります。Meta 上では正常に動作します。/latest に移動し、Composer を開いてからマーケットプレイスカテゴリを選択すると、該当するテンプレートが表示されます。

「いいね!」 4

はい、奇妙ですね。すみません、解決したと思います。ずっと気になっていましたが、今はうまく動いているようです。

わかった、これで新しい課題が生まれましたね。哈哈。

「いいね!」 4

ロバートさん、こんにちは。マージ後にテストしたときは機能していましたが、現在は私の環境では機能しなくなっています。これは [placeholder] を使わず、オーバーライド設定を使用した場合です。お手数ですが、あなたのビルドでも確認していただけますか?

また、私の元のバージョンでは、最新ページから新しいトピックを作成し、その後カテゴリを選択しても同様に機能していました。
ロールバックが必要になるかもしれませんか?

今確認しています。少しお待ちください。

修正のための PR を作成しました: FIX: change the placeholder & template when switching selected Category by merefield · Pull Request #2 · naidihr/discourse-topic-template-placeholders · GitHub

現在はコンポーザーの選択からカテゴリを取得するようになりました。これで完了したようですが、すべての状況で動作しているようです。ご確認をお願いします。

「いいね!」 2

こんにちは、ロバートさん。先ほどの PR をマージし、最新のアウトラインコンポーネントバージョンに更新したのですが、それでも「デフォルト」のテンプレートテキストが表示されたままです。私は「すべてのトピックテンプレートをプレースホルダーとして表示」を有効にしているつもりですが。Discourse 2.4.1 を使用しています。何か他のご意見はありますか?

「いいね!」 2

それは機能しますが、「すべてのトピックテンプレートをプレースホルダーとして表示」がオンになっていると、カテゴリ内にいても全く機能しません。今になってこのボランティアを頼んでしまったことを後悔しています?:stuck_out_tongue_winking_eye:

「いいね!」 2

問題ありません、皆さん。ただ反復するだけです。:). 確認します。

更新: PR FIX: resolve issue with displaying all Topic Templates as Placeholders by merefield · Pull Request #3 · naidihr/discourse-topic-template-placeholders · GitHub

設定を変更した場合は、チェックアウトする際にページをリフレッシュすることを忘れないでください。

「いいね!」 2

素晴らしい、ロバートさん。最後の PR で解決しました。また、最新ページやカテゴリページからトピックを開始する場合も、すべて正常に動作しています。ご確認いただき、ありがとうございました。とても素敵な解決策ですね _素晴らしい仕事です :wink::+1:

「いいね!」 3

問題ありません。お役に立てて嬉しいです。私の初期テストがもっと徹底的であるべきでした。ご辛抱いただき、ありがとうございます。

今は良い方向に進んでいると思います。願わくば!

さらに素晴らしいアイデアを思い浮かべ、それを実践し続けてください!

「いいね!」 3

こんにちは!このテーマコンポーネントのアイデア、とても素敵ですね!

Discourse インスタンスにインストールしてみましたが、いくつか問題が発生しています。
テーマを有効化すると、既存のテーマのスタイルが壊れてしまうようです。
例えば、ユーザードロップダウンのボタンは…

このように表示されます。


さらに、プレースホルダーが機能していないようです。
「すべてのトピックテンプレートをプレースホルダー(ウォーターマークテキスト)として表示する」を有効にしても、無効にしても同様です。
もしかしたら、私たちの Discourse インスタンスのバージョンが v2.3.10 であることが原因かもしれません。

こちらのコード を確認しましたが、なぜスタイルが崩れてしまうのか理由がわかりません。

Discourse インスタンスの管理と更新は別のチームに任せており、対応には少し時間がかかりそうです。
何か簡単なヒントがあれば幸いです。もし Discourse のバージョンが原因であれば、それも承知の上です!

よろしくお願いいたします :smiley: